2015-11-22 12:16:54 +01:00
|
|
|
package techreborn.tiles;
|
|
|
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2015-11-23 15:45:16 +01:00
|
|
|
import net.minecraft.util.EnumFacing;
|
2016-03-08 18:34:04 +01:00
|
|
|
import reborncore.api.power.EnumPowerTier;
|
2016-02-20 17:59:31 +01:00
|
|
|
import reborncore.common.blocks.BlockMachineBase;
|
2016-08-10 01:45:07 +02:00
|
|
|
import reborncore.common.powerSystem.TilePowerAcceptor;
|
2016-03-13 18:38:12 +01:00
|
|
|
import reborncore.common.util.WorldUtils;
|
2015-11-22 12:16:54 +01:00
|
|
|
|
2016-04-11 18:50:00 +02:00
|
|
|
import java.util.Iterator;
|
|
|
|
|
2016-10-08 21:46:16 +02:00
|
|
|
public class TilePlayerDectector extends TilePowerAcceptor {
|
2016-03-25 10:47:34 +01:00
|
|
|
|
|
|
|
public String owenerUdid = "";
|
|
|
|
boolean redstone = false;
|
|
|
|
|
2016-10-08 21:46:16 +02:00
|
|
|
public TilePlayerDectector() {
|
2016-08-10 01:45:07 +02:00
|
|
|
super(1);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public double getMaxPower() {
|
2016-08-10 01:45:07 +02:00
|
|
|
return 10000;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public boolean canAcceptEnergy(EnumFacing direction) {
|
2016-08-10 01:45:07 +02:00
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2016-03-25 10:47:34 +01:00
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public boolean canProvideEnergy(EnumFacing direction) {
|
2016-08-10 01:45:07 +02:00
|
|
|
return false;
|
2016-03-25 10:47:34 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public double getMaxOutput() {
|
2016-08-10 01:45:07 +02:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public double getMaxInput() {
|
2016-08-10 01:45:07 +02:00
|
|
|
return 32;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public EnumPowerTier getTier() {
|
2016-03-25 10:47:34 +01:00
|
|
|
return EnumPowerTier.LOW;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public void updateEntity() {
|
2016-08-10 01:45:07 +02:00
|
|
|
super.updateEntity();
|
2016-11-19 13:50:08 +01:00
|
|
|
if (!world.isRemote && world.getWorldTime() % 20 == 0) {
|
2016-03-25 10:47:34 +01:00
|
|
|
boolean lastRedstone = redstone;
|
|
|
|
redstone = false;
|
2016-10-08 21:46:16 +02:00
|
|
|
if (canUseEnergy(10)) {
|
2016-11-19 13:50:08 +01:00
|
|
|
Iterator tIterator = super.world.playerEntities.iterator();
|
2016-10-08 21:46:16 +02:00
|
|
|
while (tIterator.hasNext()) {
|
2016-03-25 10:47:34 +01:00
|
|
|
EntityPlayer player = (EntityPlayer) tIterator.next();
|
|
|
|
if (player.getDistanceSq((double) super.getPos().getX() + 0.5D,
|
2016-10-08 21:46:16 +02:00
|
|
|
(double) super.getPos().getY() + 0.5D, (double) super.getPos().getZ() + 0.5D) <= 256.0D) {
|
2016-11-19 13:50:08 +01:00
|
|
|
BlockMachineBase blockMachineBase = (BlockMachineBase) world.getBlockState(pos).getBlock();
|
|
|
|
int meta = blockMachineBase.getMetaFromState(world.getBlockState(pos));
|
2016-10-08 21:46:16 +02:00
|
|
|
if (meta == 0) {// ALL
|
2016-03-25 10:47:34 +01:00
|
|
|
redstone = true;
|
2016-10-08 21:46:16 +02:00
|
|
|
} else if (meta == 1) {// Others
|
|
|
|
if (!owenerUdid.isEmpty() && !owenerUdid.equals(player.getUniqueID().toString())) {
|
2016-03-25 10:47:34 +01:00
|
|
|
redstone = true;
|
|
|
|
}
|
2016-10-08 21:46:16 +02:00
|
|
|
} else {// You
|
|
|
|
if (!owenerUdid.isEmpty() && owenerUdid.equals(player.getUniqueID().toString())) {
|
2016-03-25 10:47:34 +01:00
|
|
|
redstone = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redstone = true;
|
|
|
|
}
|
|
|
|
}
|
2016-05-23 18:05:10 +02:00
|
|
|
useEnergy(10);
|
2016-03-25 10:47:34 +01:00
|
|
|
}
|
2016-10-08 21:46:16 +02:00
|
|
|
if (lastRedstone != redstone) {
|
2016-11-19 13:50:08 +01:00
|
|
|
WorldUtils.updateBlock(world, getPos());
|
2016-11-19 15:41:00 +01:00
|
|
|
world.notifyNeighborsOfStateChange(getPos(), world.getBlockState(getPos()).getBlock(), true);
|
2016-03-25 10:47:34 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-10-08 21:46:16 +02:00
|
|
|
public boolean isProvidingPower() {
|
2016-03-25 10:47:34 +01:00
|
|
|
return redstone;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public void readFromNBT(NBTTagCompound tag) {
|
2016-03-25 10:47:34 +01:00
|
|
|
super.readFromNBT(tag);
|
|
|
|
owenerUdid = tag.getString("ownerID");
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2016-10-08 21:46:16 +02:00
|
|
|
public NBTTagCompound writeToNBT(NBTTagCompound tag) {
|
2016-03-25 10:47:34 +01:00
|
|
|
super.writeToNBT(tag);
|
|
|
|
tag.setString("ownerID", owenerUdid);
|
2016-05-18 17:53:54 +02:00
|
|
|
return tag;
|
2016-03-25 10:47:34 +01:00
|
|
|
}
|
2015-11-22 12:16:54 +01:00
|
|
|
}
|