diff options
3 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_DroneCentre.java b/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_DroneCentre.java index 92bc68e20a..c989ff536e 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_DroneCentre.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_DroneCentre.java @@ -5,6 +5,7 @@ import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose import static gregtech.api.enums.GT_HatchElement.InputBus; import static gregtech.api.enums.GT_Values.AuthorSilverMoon; import static gregtech.api.multitileentity.multiblock.casing.Glasses.chainAllGlasses; +import static gregtech.api.objects.XSTR.XSTR_INSTANCE; import static gregtech.api.util.GT_StructureUtility.buildHatchAdder; import java.io.IOException; @@ -16,6 +17,7 @@ import java.util.Objects; import java.util.Optional; import net.minecraft.client.Minecraft; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; @@ -60,6 +62,7 @@ import appeng.api.util.DimensionalCoord; import appeng.api.util.WorldCoord; import appeng.client.render.BlockPosHighlighter; import gregtech.api.GregTech_API; +import gregtech.api.enums.ItemList; import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.gui.modularui.GT_UITextures; @@ -94,6 +97,7 @@ public class GT_MetaTileEntity_DroneCentre extends private int droneLevel = 0; private int buttonID; private String searchFilter = ""; + private boolean useRender = true; private final List<DroneConnection> connectionList = new ArrayList<>(); public HashMap<String, String> tempNameList = new HashMap<>(); // Save centre by dimID @@ -223,6 +227,20 @@ public class GT_MetaTileEntity_DroneCentre extends } @Override + public final void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { + super.onScrewdriverRightClick(side, aPlayer, aX, aY, aZ); + useRender = !useRender; + aPlayer.addChatComponentMessage( + new ChatComponentTranslation( + "GT5U.machines.dronecentre." + (useRender ? "enableRender" : "disableRender"))); + if (useRender) { + createRenderBlock(); + } else { + destroyRenderBlock(); + } + } + + @Override public int getDamageToComponent(ItemStack aStack) { return 0; } @@ -263,6 +281,7 @@ public class GT_MetaTileEntity_DroneCentre extends public void loadNBTData(NBTTagCompound aNBT) { super.loadNBTData(aNBT); droneLevel = aNBT.getInteger("drone"); + useRender = aNBT.getBoolean("useRender"); NBTTagCompound nameList = aNBT.getCompoundTag("conList"); for (String s : nameList.func_150296_c()) { tempNameList.put(s, nameList.getString(s)); @@ -273,6 +292,7 @@ public class GT_MetaTileEntity_DroneCentre extends public void saveNBTData(NBTTagCompound aNBT) { super.saveNBTData(aNBT); aNBT.setInteger("drone", droneLevel); + aNBT.setBoolean("useRender", useRender); NBTTagCompound conList = new NBTTagCompound(); for (DroneConnection con : connectionList) { if (!Objects.equals(con.customName, con.machine.getLocalName())) @@ -330,9 +350,35 @@ public class GT_MetaTileEntity_DroneCentre extends @Override public void onBlockDestroyed() { destroyRenderBlock(); + connectionList.clear(); + if (droneLevel != 0) spawnDroneItem(); super.onBlockDestroyed(); } + private void spawnDroneItem() { + ItemStack insideDrone = new ItemStack(switch (droneLevel) { + case 1: + yield ItemList.TierdDrone0.getItem(); + case 2: + yield ItemList.TierdDrone1.getItem(); + case 3: + yield ItemList.TierdDrone2.getItem(); + default: + yield null; + }, 1); + final EntityItem tItemEntity = new EntityItem( + getBaseMetaTileEntity().getWorld(), + getBaseMetaTileEntity().getXCoord() + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + getBaseMetaTileEntity().getYCoord() + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + getBaseMetaTileEntity().getZCoord() + XSTR_INSTANCE.nextFloat() * 0.8F + 0.1F, + insideDrone); + tItemEntity.motionX = (XSTR_INSTANCE.nextGaussian() * 0.05D); + tItemEntity.motionY = (XSTR_INSTANCE.nextGaussian() * 0.25D); + tItemEntity.motionZ = (XSTR_INSTANCE.nextGaussian() * 0.05D); + getBaseMetaTileEntity().getWorld() + .spawnEntityInWorld(tItemEntity); + } + @Override public void onRemoval() { droneMap.remove(getBaseMetaTileEntity().getWorld().provider.dimensionId, this); @@ -384,6 +430,7 @@ public class GT_MetaTileEntity_DroneCentre extends } private void createRenderBlock() { + if (!useRender) return; int x = getBaseMetaTileEntity().getXCoord(); int y = getBaseMetaTileEntity().getYCoord(); int z = getBaseMetaTileEntity().getZCoord(); diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_Hatch_DroneDownLink.java b/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_Hatch_DroneDownLink.java index 4d4d399993..243f846333 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_Hatch_DroneDownLink.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_Hatch_DroneDownLink.java @@ -193,6 +193,7 @@ public class GT_MetaTileEntity_Hatch_DroneDownLink extends GT_MetaTileEntity_Hat connection = new DroneConnection(machine, centre); connection.centre.getConnectionList() .add(connection); + return; } } } diff --git a/src/main/resources/assets/gregtech/lang/en_US.lang b/src/main/resources/assets/gregtech/lang/en_US.lang index 48234a3855..6158732ac6 100644 --- a/src/main/resources/assets/gregtech/lang/en_US.lang +++ b/src/main/resources/assets/gregtech/lang/en_US.lang @@ -395,6 +395,8 @@ GT5U.machines.dronecentre.shutdown=You cannot control machine when drone centre GT5U.machines.dronecentre.turnon=Successfully turn on all machines! GT5U.machines.dronecentre.turnoff=Successfully turn off all machines! GT5U.machines.dronecentre.noconnection=No valid connection +GT5U.machines.dronecentre.enableRender=Enable Drone Render +GT5U.machines.dronecentre.disableRender=Disable Drone Render GT5U.recipe_filter.empty_representation_slot.tooltip=§7Click with a machine to set filter GT5U.recipe_filter.representation_slot.tooltip=§7Click to clear |