mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-01 20:50:41 +01:00
Add BlockTallPlant.java from mc-dev for diff visibility.
This commit is contained in:
parent
eb43d0637c
commit
286c71329d
1 changed files with 160 additions and 0 deletions
160
src/main/java/net/minecraft/server/BlockTallPlant.java
Normal file
160
src/main/java/net/minecraft/server/BlockTallPlant.java
Normal file
|
@ -0,0 +1,160 @@
|
||||||
|
package net.minecraft.server;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class BlockTallPlant extends BlockPlant implements IBlockFragilePlantElement {
|
||||||
|
|
||||||
|
public static final String[] a = new String[] { "sunflower", "syringa", "grass", "fern", "rose", "paeonia"};
|
||||||
|
|
||||||
|
public BlockTallPlant() {
|
||||||
|
super(Material.PLANT);
|
||||||
|
this.c(0.0F);
|
||||||
|
this.a(h);
|
||||||
|
this.c("doublePlant");
|
||||||
|
}
|
||||||
|
|
||||||
|
public int b() {
|
||||||
|
return 40;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateShape(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||||
|
this.a(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int e(IBlockAccess iblockaccess, int i, int j, int k) {
|
||||||
|
int l = iblockaccess.getData(i, j, k);
|
||||||
|
|
||||||
|
return !c(l) ? l & 7 : iblockaccess.getData(i, j - 1, k) & 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canPlace(World world, int i, int j, int k) {
|
||||||
|
return super.canPlace(world, i, j, k) && world.isEmpty(i, j + 1, k);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void e(World world, int i, int j, int k) {
|
||||||
|
if (!this.j(world, i, j, k)) {
|
||||||
|
int l = world.getData(i, j, k);
|
||||||
|
|
||||||
|
if (!c(l)) {
|
||||||
|
this.b(world, i, j, k, l, 0);
|
||||||
|
if (world.getType(i, j + 1, k) == this) {
|
||||||
|
world.setTypeAndData(i, j + 1, k, Blocks.AIR, 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
world.setTypeAndData(i, j, k, Blocks.AIR, 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean j(World world, int i, int j, int k) {
|
||||||
|
int l = world.getData(i, j, k);
|
||||||
|
|
||||||
|
return c(l) ? world.getType(i, j - 1, k) == this : world.getType(i, j + 1, k) == this && super.j(world, i, j, k);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Item getDropType(int i, Random random, int j) {
|
||||||
|
if (c(i)) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
int k = d(i);
|
||||||
|
|
||||||
|
return k != 3 && k != 2 ? Item.getItemOf(this) : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDropData(int i) {
|
||||||
|
return c(i) ? 0 : i & 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean c(int i) {
|
||||||
|
return (i & 8) != 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int d(int i) {
|
||||||
|
return i & 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void c(World world, int i, int j, int k, int l, int i1) {
|
||||||
|
world.setTypeAndData(i, j, k, this, l, i1);
|
||||||
|
world.setTypeAndData(i, j + 1, k, this, 8, i1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void postPlace(World world, int i, int j, int k, EntityLiving entityliving, ItemStack itemstack) {
|
||||||
|
int l = ((MathHelper.floor((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3) + 2) % 4;
|
||||||
|
|
||||||
|
world.setTypeAndData(i, j + 1, k, this, 8 | l, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(World world, EntityHuman entityhuman, int i, int j, int k, int l) {
|
||||||
|
if (world.isStatic || entityhuman.bE() == null || entityhuman.bE().getItem() != Items.SHEARS || c(l) || !this.b(world, i, j, k, l, entityhuman)) {
|
||||||
|
super.a(world, entityhuman, i, j, k, l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void a(World world, int i, int j, int k, int l, EntityHuman entityhuman) {
|
||||||
|
if (c(l)) {
|
||||||
|
if (world.getType(i, j - 1, k) == this) {
|
||||||
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
||||||
|
int i1 = world.getData(i, j - 1, k);
|
||||||
|
int j1 = d(i1);
|
||||||
|
|
||||||
|
if (j1 != 3 && j1 != 2) {
|
||||||
|
world.setAir(i, j - 1, k, true);
|
||||||
|
} else {
|
||||||
|
if (!world.isStatic && entityhuman.bE() != null && entityhuman.bE().getItem() == Items.SHEARS) {
|
||||||
|
this.b(world, i, j, k, i1, entityhuman);
|
||||||
|
}
|
||||||
|
|
||||||
|
world.setAir(i, j - 1, k);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
world.setAir(i, j - 1, k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (entityhuman.abilities.canInstantlyBuild && world.getType(i, j + 1, k) == this) {
|
||||||
|
world.setTypeAndData(i, j + 1, k, Blocks.AIR, 0, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
super.a(world, i, j, k, l, entityhuman);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean b(World world, int i, int j, int k, int l, EntityHuman entityhuman) {
|
||||||
|
int i1 = d(l);
|
||||||
|
|
||||||
|
if (i1 != 3 && i1 != 2) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
entityhuman.a(StatisticList.MINE_BLOCK_COUNT[Block.b((Block) this)], 1);
|
||||||
|
byte b0 = 1;
|
||||||
|
|
||||||
|
if (i1 == 3) {
|
||||||
|
b0 = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.a(world, i, j, k, new ItemStack(Blocks.LONG_GRASS, 2, b0));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getDropData(World world, int i, int j, int k) {
|
||||||
|
int l = world.getData(i, j, k);
|
||||||
|
|
||||||
|
return c(l) ? d(world.getData(i, j - 1, k)) : d(l);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean a(World world, int i, int j, int k, boolean flag) {
|
||||||
|
int l = this.e((IBlockAccess) world, i, j, k);
|
||||||
|
|
||||||
|
return l != 2 && l != 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean a(World world, Random random, int i, int j, int k) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void b(World world, Random random, int i, int j, int k) {
|
||||||
|
int l = this.e((IBlockAccess) world, i, j, k);
|
||||||
|
|
||||||
|
this.a(world, i, j, k, new ItemStack(this, 1, l));
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue