public CocoaPlant(CocoaPlantSize sz, BlockFace dir) { this(); setSize(sz); setFacingDirection(dir); }
@Override public void updateBlock(GlowBlock block) { MaterialData data = block.getState().getData(); if (data instanceof CocoaPlant) { CocoaPlant cocoa = (CocoaPlant) data; CocoaPlantSize size = cocoa.getSize(); if (size != CocoaPlantSize.LARGE && ThreadLocalRandom.current().nextInt(5) == 0) { if (size == CocoaPlantSize.SMALL) { cocoa.setSize(CocoaPlantSize.MEDIUM); } else if (size == CocoaPlantSize.MEDIUM) { cocoa.setSize(CocoaPlantSize.LARGE); } else { return; } GlowBlockState state = block.getState(); state.setData(cocoa); BlockGrowEvent growEvent = new BlockGrowEvent(block, state); EventFactory.getInstance().callEvent(growEvent); if (!growEvent.isCancelled()) { state.update(true); } } } else { warnMaterialData(CocoaPlant.class, data); } } }
public BlockFace getAttachedFace() { return getFacing().getOppositeFace(); }
public CocoaPlant(CocoaPlantSize sz) { this(); setSize(sz); }
@Override public Collection<ItemStack> getDrops(GlowBlock block, ItemStack tool) { MaterialData data = block.getState().getData(); if (data instanceof CocoaPlant) { int amount = 1; if (((CocoaPlant) data).getSize() == CocoaPlantSize.LARGE) { amount = 3; } return Collections.unmodifiableList( Arrays.asList(new ItemStack(Material.INK_SACK, amount, (short) 3))); } else { warnMaterialData(CocoaPlant.class, data); } return BlockDropless.EMPTY_STACK; }
public BlockFace getFacing() { switch (getData() & 0x3) { case 0: return BlockFace.SOUTH; case 1: return BlockFace.WEST; case 2: return BlockFace.NORTH; case 3: return BlockFace.EAST; } return null; }
private void addCocoa(int sourceX, int sourceY, int sourceZ, World world, Random random) { if (height > 5 && random.nextInt(5) == 0) { for (int y = 0; y < 2; y++) { for (BlockFace cocoaFace : COCOA_FACES) { // rotate the 4 trunk faces if (random.nextInt(COCOA_FACES.length - y) == 0) { // higher it is, more chances there is CocoaPlantSize size = COCOA_SIZE[random.nextInt(COCOA_SIZE.length)]; Block block = delegate .getBlockState(world, sourceX, sourceY + height - 5 + y, sourceZ) .getBlock().getRelative(cocoaFace); delegate.setTypeAndData(world, block.getX(), block.getY(), block.getZ(), Material.COCOA, new CocoaPlant(size, cocoaFace.getOppositeFace())); } } } } } }
@Override public void grow(GlowPlayer player, GlowBlock block) { MaterialData data = block.getState().getData(); if (data instanceof CocoaPlant) { CocoaPlant cocoa = (CocoaPlant) data; CocoaPlantSize size = cocoa.getSize(); if (size == CocoaPlantSize.SMALL) { cocoa.setSize(CocoaPlantSize.MEDIUM); } else if (size == CocoaPlantSize.MEDIUM) { cocoa.setSize(CocoaPlantSize.LARGE); } else { return; } GlowBlockState state = block.getState(); state.setData(cocoa); BlockGrowEvent growEvent = new BlockGrowEvent(block, state); EventFactory.getInstance().callEvent(growEvent); if (!growEvent.isCancelled()) { state.update(true); } } else { warnMaterialData(CocoaPlant.class, data); } }
@Override protected BlockFace getAttachedFace(GlowBlock me) { return ((CocoaPlant) me.getState().getData()).getFacing(); }
public CocoaPlant(CocoaPlantSize sz) { this(); setSize(sz); }
@Override public boolean isFertilizable(GlowBlock block) { MaterialData data = block.getState().getData(); if (data instanceof CocoaPlant) { if (((CocoaPlant) data).getSize() != CocoaPlantSize.LARGE) { return true; } } else { warnMaterialData(CocoaPlant.class, data); } return false; }
/** * Get size of plant * * @return size */ public CocoaPlantSize getSize() { switch (getData() & 0xC) { case 0: return CocoaPlantSize.SMALL; case 4: return CocoaPlantSize.MEDIUM; default: return CocoaPlantSize.LARGE; } }
@Override public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) { state.setType(getMaterial()); MaterialData data = state.getData(); if (data instanceof CocoaPlant) { CocoaPlant cocoa = (CocoaPlant) data; cocoa.setFacingDirection(face.getOppositeFace()); cocoa.setSize(CocoaPlantSize.SMALL); } else { warnMaterialData(CocoaPlant.class, data); } }
public BlockFace getAttachedFace() { return getFacing().getOppositeFace(); }
public BlockFace getFacing() { switch (getData() & 0x3) { case 0: return BlockFace.SOUTH; case 1: return BlockFace.WEST; case 2: return BlockFace.NORTH; case 3: return BlockFace.EAST; } return null; }
public CocoaPlant(CocoaPlantSize sz, BlockFace dir) { this(); setSize(sz); setFacingDirection(dir); }