package com.bergerkiller.bukkit.common.wrappers; import org.bukkit.entity.Entity; import com.bergerkiller.bukkit.common.conversion.Conversion; import com.bergerkiller.bukkit.common.internal.CommonNMS; import com.bergerkiller.bukkit.common.reflection.classes.BlockRef; import net.minecraft.server.Block; import net.minecraft.server.Explosion; import net.minecraft.server.World; /** * Class implementation for Block Info that has a backing handle. * Override all methods here and perform block-specific logic instead. */ class BlockInfoImpl extends BlockInfo { public BlockInfoImpl(Object handle) { setHandle(handle); } @Override public int getOpacity() { return getHandle(Block.class).k(); } @Override public int getLightEmission() { return getHandle(Block.class).m(); } @Override public boolean isSolid() { return getHandle(Block.class).d(); } @Override public boolean isPowerSource() { return getHandle(Block.class).isPowerSource(); } @Override public boolean isSuffocating() { return getHandle(Block.class).r(); } @Override public float getDamageResilience(Entity source) { return getHandle(Block.class).a(CommonNMS.getNative(source)); } @Override public void dropNaturally(org.bukkit.World world, int x, int y, int z, int data, float yield, int chance) { BlockRef.dropNaturally.invoke(handle, Conversion.toWorldHandle.convert(world), x, y, z, data, yield, chance); } @Override public void ignite(org.bukkit.World world, int x, int y, int z) { World worldhandle = CommonNMS.getNative(world); Explosion ex = new Explosion(worldhandle, null, x, y, z, (float) 4.0); BlockRef.ignite.invoke(handle, worldhandle, x, y, z, ex); } }