aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_DroneCentre.java47
-rw-r--r--src/main/java/gregtech/common/tileentities/machines/multi/drone/GT_MetaTileEntity_Hatch_DroneDownLink.java1
-rw-r--r--src/main/resources/assets/gregtech/lang/en_US.lang2
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