mffs/src/main/java/mffs/base/BlockMachine.java

170 lines
5.3 KiB
Java
Raw Normal View History

2022-10-28 16:20:12 +02:00
package mffs.base;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import icbm.api.ICamouflageMaterial;
import mffs.MFFSCreativeTab;
import mffs.ModularForceFieldSystem;
import mffs.api.IBiometricIdentifierLink;
import mffs.api.security.Permission;
import mffs.item.card.ItemCardLink;
import mffs.render.RenderBlockHandler;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import universalelectricity.core.UniversalElectricity;
import universalelectricity.prefab.block.BlockRotatable;
import universalelectricity.prefab.implement.IRedstoneReceptor;
2023-01-08 16:58:21 +01:00
public abstract class BlockMachine extends BlockRotatable implements ICamouflageMaterial {
2022-10-28 16:20:12 +02:00
public BlockMachine(final String name) {
super(UniversalElectricity.machine);
this.setBlockName("mffs:" + name);
this.setHardness(Float.MAX_VALUE);
this.setResistance(100.0f);
this.setStepSound(BlockMachine.soundTypeMetal);
this.setCreativeTab(MFFSCreativeTab.INSTANCE);
}
@Override
2023-01-08 16:58:21 +01:00
public boolean onMachineActivated(
final World world,
final int x,
final int y,
final int z,
final EntityPlayer entityPlayer,
final int side,
final float hitX,
final float hitY,
final float hitZ
) {
2022-10-28 16:20:12 +02:00
if (!world.isRemote) {
2023-01-08 16:58:21 +01:00
if (entityPlayer.getCurrentEquippedItem() != null
&& entityPlayer.getCurrentEquippedItem().getItem()
instanceof ItemCardLink) {
2022-10-28 16:20:12 +02:00
return false;
}
2023-01-08 16:58:21 +01:00
entityPlayer.openGui(
(Object) ModularForceFieldSystem.instance, 0, world, x, y, z
);
2022-10-28 16:20:12 +02:00
}
return true;
}
@Override
2023-01-08 16:58:21 +01:00
public boolean onSneakMachineActivated(
final World world,
final int x,
final int y,
final int z,
final EntityPlayer entityPlayer,
final int side,
final float hitX,
final float hitY,
final float hitZ
) {
return this.onUseWrench(world, x, y, z, entityPlayer, side, hitX, hitY, hitZ);
2022-10-28 16:20:12 +02:00
}
@Override
2023-01-08 16:58:21 +01:00
public boolean onSneakUseWrench(
final World world,
final int x,
final int y,
final int z,
final EntityPlayer entityPlayer,
final int side,
final float hitX,
final float hitY,
final float hitZ
) {
2022-10-28 16:20:12 +02:00
if (!world.isRemote) {
final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof IBiometricIdentifierLink) {
2023-01-08 16:58:21 +01:00
if (((IBiometricIdentifierLink) tileEntity).getBiometricIdentifier()
== null) {
this.dropBlockAsItem(
world, x, y, z, world.getBlockMetadata(x, y, z), 0
);
2022-10-28 16:20:12 +02:00
world.setBlockToAir(x, y, z);
return true;
}
if (((IBiometricIdentifierLink) tileEntity)
.getBiometricIdentifier()
2023-01-08 16:58:21 +01:00
.isAccessGranted(
entityPlayer.getDisplayName(),
Permission.SECURITY_CENTER_CONFIGURE
)) {
this.dropBlockAsItem(
world, x, y, z, world.getBlockMetadata(x, y, z), 0
);
2022-10-28 16:20:12 +02:00
world.setBlockToAir(x, y, z);
return true;
}
entityPlayer.addChatMessage(new ChatComponentText(
2023-01-08 16:58:21 +01:00
"["
+ ModularForceFieldSystem.blockBiometricIdentifier.getLocalizedName()
+ "]"
+ " Cannot remove machine! Access denied!"
));
2022-10-28 16:20:12 +02:00
}
}
return false;
}
@Override
2023-01-08 16:58:21 +01:00
public void onNeighborBlockChange(
final World world, final int x, final int y, final int z, final Block block
) {
2022-10-28 16:20:12 +02:00
if (!world.isRemote) {
final TileEntity tileEntity = world.getTileEntity(x, y, z);
if (tileEntity instanceof IRedstoneReceptor) {
if (world.isBlockIndirectlyGettingPowered(x, y, z)) {
((IRedstoneReceptor) tileEntity).onPowerOn();
} else {
((IRedstoneReceptor) tileEntity).onPowerOff();
}
}
}
}
@Override
2023-01-08 16:58:21 +01:00
public float getExplosionResistance(
final Entity entity,
final World world,
final int i,
final int j,
final int k,
final double d,
final double d1,
final double d2
) {
2022-10-28 16:20:12 +02:00
return 100.0f;
}
@Override
public void registerBlockIcons(final IIconRegister par1IconRegister) {
this.blockIcon = par1IconRegister.registerIcon("mffs:machine");
}
@Override
public boolean isOpaqueCube() {
return false;
}
@Override
public boolean renderAsNormalBlock() {
return false;
}
@SideOnly(Side.CLIENT)
@Override
public int getRenderType() {
return RenderBlockHandler.ID;
}
}