while some of these may of been true, they are extreme cases and cause a ton of noise to plugin developers. Use ApiStatus.Internal instead of Deprecated for actual internal API that continues to have use (internally). These do not help plugin developers if they bring moise noise than value.
137 lines
4.0 KiB
Java
137 lines
4.0 KiB
Java
package org.bukkit.material;
|
|
|
|
import org.bukkit.CropState;
|
|
import org.bukkit.Material;
|
|
|
|
/**
|
|
* Represents the different types of crops in different states of growth.
|
|
*
|
|
* @see Material#LEGACY_CROPS
|
|
* @see Material#LEGACY_CARROT
|
|
* @see Material#LEGACY_POTATO
|
|
* @see Material#LEGACY_BEETROOT_BLOCK
|
|
* @see Material#LEGACY_NETHER_WARTS
|
|
*
|
|
* @deprecated all usage of MaterialData is deprecated and subject to removal.
|
|
* Use {@link org.bukkit.block.data.BlockData}.
|
|
*/
|
|
@Deprecated(since = "1.13", forRemoval = true)
|
|
public class Crops extends MaterialData {
|
|
protected static final Material DEFAULT_TYPE = Material.LEGACY_CROPS;
|
|
protected static final CropState DEFAULT_STATE = CropState.SEEDED;
|
|
|
|
/**
|
|
* Constructs a wheat crop block in the seeded state.
|
|
*/
|
|
public Crops() {
|
|
this(DEFAULT_TYPE, DEFAULT_STATE);
|
|
}
|
|
|
|
/**
|
|
* Constructs a wheat crop block in the given growth state
|
|
*
|
|
* @param state The growth state of the crops
|
|
*/
|
|
public Crops(CropState state) {
|
|
this(DEFAULT_TYPE, state);
|
|
setState(state);
|
|
}
|
|
|
|
/**
|
|
* Constructs a crop block of the given type and in the given growth state
|
|
*
|
|
* @param type The type of crops
|
|
* @param state The growth state of the crops
|
|
*/
|
|
public Crops(final Material type, final CropState state) {
|
|
super(type);
|
|
setState(state);
|
|
}
|
|
|
|
/**
|
|
* Constructs a crop block of the given type and in the seeded state
|
|
*
|
|
* @param type The type of crops
|
|
*/
|
|
public Crops(final Material type) {
|
|
this(type, DEFAULT_STATE);
|
|
}
|
|
|
|
/**
|
|
* @param type the type
|
|
* @param data the raw data value
|
|
* @deprecated Magic value
|
|
*/
|
|
@Deprecated(since = "1.6.2")
|
|
public Crops(final Material type, final byte data) {
|
|
super(type, data);
|
|
}
|
|
|
|
/**
|
|
* Gets the current growth state of this crop
|
|
*
|
|
* For crops with only four growth states such as beetroot, only the values SEEDED, SMALL, TALL and RIPE will be
|
|
* returned.
|
|
*
|
|
* @return CropState of this crop
|
|
*/
|
|
public CropState getState() {
|
|
switch (getItemType()) {
|
|
case LEGACY_CROPS:
|
|
case LEGACY_CARROT:
|
|
case LEGACY_POTATO:
|
|
// Mask the data just in case top bit set
|
|
return CropState.getByData((byte) (getData() & 0x7));
|
|
case LEGACY_BEETROOT_BLOCK:
|
|
case LEGACY_NETHER_WARTS:
|
|
// Mask the data just in case top bits are set
|
|
// Will return SEEDED, SMALL, TALL, RIPE for the three growth data values
|
|
return CropState.getByData((byte) (((getData() & 0x3) * 7 + 2) / 3));
|
|
default:
|
|
throw new IllegalArgumentException("Block type is not a crop");
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Sets the growth state of this crop
|
|
*
|
|
* For crops with only four growth states such as beetroot, the 8 CropStates are mapped into four states:
|
|
*
|
|
* SEEDED, SMALL, TALL and RIPE
|
|
*
|
|
* GERMINATED will change to SEEDED
|
|
* VERY_SMALL will change to SMALL
|
|
* MEDIUM will change to TALL
|
|
* VERY_TALL will change to RIPE
|
|
*
|
|
* @param state New growth state of this crop
|
|
*/
|
|
public void setState(CropState state) {
|
|
switch (getItemType()) {
|
|
case LEGACY_CROPS:
|
|
case LEGACY_CARROT:
|
|
case LEGACY_POTATO:
|
|
// Preserve the top bit in case it is set
|
|
setData((byte) ((getData() & 0x8) | state.getData()));
|
|
break;
|
|
case LEGACY_NETHER_WARTS:
|
|
case LEGACY_BEETROOT_BLOCK:
|
|
// Preserve the top bits in case they are set
|
|
setData((byte) ((getData() & 0xC) | (state.getData() >> 1)));
|
|
break;
|
|
default:
|
|
throw new IllegalArgumentException("Block type is not a crop");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return getState() + " " + super.toString();
|
|
}
|
|
|
|
@Override
|
|
public Crops clone() {
|
|
return (Crops) super.clone();
|
|
}
|
|
}
|