diff --git a/dependencies.gradle b/dependencies.gradle index 33477cb7ddc..8231ca19770 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -40,9 +40,9 @@ dependencies { api("com.github.GTNewHorizons:NotEnoughIds:2.1.6:dev") api("com.github.GTNewHorizons:GTNHLib:0.5.11:dev") api("com.github.GTNewHorizons:ModularUI:1.2.8:dev") - api("com.github.GTNewHorizons:ModularUI2:2.1.10-1.7.10:dev") + api("com.github.GTNewHorizons:ModularUI2:2.1.11-1.7.10:dev") api("com.github.GTNewHorizons:waila:1.8.1:dev") - api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-462-GTNH:dev") + api("com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-463-GTNH:dev") api("com.github.GTNewHorizons:AE2FluidCraft-Rework:1.3.36-gtnh:dev") api('com.github.GTNewHorizons:Yamcl:0.6.0:dev') api("com.github.GTNewHorizons:Postea:1.0.13:dev") @@ -69,18 +69,18 @@ dependencies { compileOnly("TGregworks:TGregworks:1.7.10-GTNH-1.0.27:deobf") {transitive = false} compileOnly("com.github.GTNewHorizons:ThaumicBases:1.7.5:dev") { transitive = false } compileOnly("com.github.GTNewHorizons:EnderCore:0.4.6:dev") { transitive = false } - compileOnly('com.github.GTNewHorizons:VisualProspecting:1.3.22:dev') { transitive = false } + compileOnly('com.github.GTNewHorizons:VisualProspecting:1.3.24:dev') { transitive = false } compileOnly("com.github.GTNewHorizons:Galaxy-Space-GTNH:1.1.94-GTNH:dev") { transitive = false } - compileOnlyApi("com.github.GTNewHorizons:Galacticraft:3.2.4-GTNH:dev") { transitive = false } - implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.9-GTNH:dev") + compileOnlyApi("com.github.GTNewHorizons:Galacticraft:3.2.5-GTNH:dev") { transitive = false } + implementation("com.github.GTNewHorizons:TinkersConstruct:1.12.10-GTNH:dev") compileOnly("com.github.GTNewHorizons:Chisel:2.15.2-GTNH:dev") { transitive = false } compileOnly("com.github.GTNewHorizons:Translocators:1.2.1:dev") { transitive = false } compileOnly rfg.deobf("curse.maven:cofh-core-69162:2388751") compileOnly("com.github.GTNewHorizons:Nuclear-Control:2.6.7:dev") { transitive = false } compileOnly("thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev") { transitive = false } - implementation("com.github.GTNewHorizons:Hodgepodge:2.5.69:dev") + implementation("com.github.GTNewHorizons:Hodgepodge:2.5.70:dev") compileOnly('com.github.GTNewHorizons:Botania:1.11.5-GTNH:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:HoloInventory:2.4.12-GTNH:dev') { transitive = false } compileOnly rfg.deobf("curse.maven:extra-utilities-225561:2264384") diff --git a/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaBlastFurnace.java b/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaBlastFurnace.java index 3f5b053b961..12d36dd9448 100644 --- a/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaBlastFurnace.java +++ b/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaBlastFurnace.java @@ -36,6 +36,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -48,10 +49,13 @@ import bartworks.API.BorosilicateGlass; import bartworks.common.configs.Configuration; import bartworks.util.BWUtil; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.GTValues; import gregtech.api.enums.HeatingCoilLevel; import gregtech.api.enums.Materials; +import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -428,4 +432,10 @@ public boolean supportsBatchMode() { public boolean supportsVoidProtection() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MEGA_BLAST_FURNACE_LOOP.resourceLocation; + } } diff --git a/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaVacuumFreezer.java b/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaVacuumFreezer.java index a24f5d4b7e3..fdc0a465cfe 100644 --- a/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaVacuumFreezer.java +++ b/src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaVacuumFreezer.java @@ -37,6 +37,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -47,9 +48,12 @@ import com.gtnewhorizon.structurelib.structure.StructureDefinition; import bartworks.common.configs.Configuration; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.Materials; import gregtech.api.enums.MaterialsUEVplus; +import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -530,4 +534,10 @@ public boolean supportsBatchMode() { public boolean supportsVoidProtection() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MULTI_MEGA_VACUUM_FREEZER_LOOP.resourceLocation; + } } diff --git a/src/main/java/goodgenerator/blocks/tileEntity/MTEPreciseAssembler.java b/src/main/java/goodgenerator/blocks/tileEntity/MTEPreciseAssembler.java index 0c660845922..7eef5abfe56 100644 --- a/src/main/java/goodgenerator/blocks/tileEntity/MTEPreciseAssembler.java +++ b/src/main/java/goodgenerator/blocks/tileEntity/MTEPreciseAssembler.java @@ -24,6 +24,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -41,6 +42,8 @@ import com.gtnewhorizons.modularui.api.screen.UIBuildContext; import com.gtnewhorizons.modularui.common.widget.CycleButtonWidget; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import goodgenerator.api.recipe.GoodGeneratorRecipeMaps; import goodgenerator.client.GUI.GGUITextures; import goodgenerator.loader.Loaders; @@ -48,6 +51,7 @@ import gregtech.api.GregTechAPI; import gregtech.api.enums.GTValues; import gregtech.api.enums.Materials; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IIconContainer; @@ -528,4 +532,10 @@ public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDat + EnumChatFormatting.RESET); } + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MULTI_PRECISE_LOOP.resourceLocation; + } + } diff --git a/src/main/java/goodgenerator/loader/RecipeLoader2.java b/src/main/java/goodgenerator/loader/RecipeLoader2.java index 1c4c05948da..707c6fc11ac 100644 --- a/src/main/java/goodgenerator/loader/RecipeLoader2.java +++ b/src/main/java/goodgenerator/loader/RecipeLoader2.java @@ -108,7 +108,7 @@ public static void RecipeLoad() { CrackRecipeAdder.reAddBlastRecipe(GGMaterial.zircaloy2, 513, 480, 2800, false); CrackRecipeAdder.reAddBlastRecipe(GGMaterial.zircaloy4, 500, 480, 2800, true); CrackRecipeAdder.reAddBlastRecipe(GGMaterial.zircaloy4, 513, 480, 2800, false); - CrackRecipeAdder.reAddBlastRecipe(GGMaterial.incoloy903, 2400, 1920, 3700, true); + CrackRecipeAdder.reAddBlastRecipe(GGMaterial.incoloy903, 1200, 1920, 3700, true); CrackRecipeAdder.reAddBlastRecipe(GGMaterial.adamantiumAlloy, 2500, 1920, 5500, true); CrackRecipeAdder.reAddBlastRecipe(GGMaterial.marM200, 200, 7680, 5000, true); CrackRecipeAdder.reAddBlastRecipe(GGMaterial.marM200, 220, 7680, 5000, false); diff --git a/src/main/java/gregtech/api/enums/SoundResource.java b/src/main/java/gregtech/api/enums/SoundResource.java index eea2cf477e3..9de5c560159 100644 --- a/src/main/java/gregtech/api/enums/SoundResource.java +++ b/src/main/java/gregtech/api/enums/SoundResource.java @@ -78,6 +78,29 @@ public enum SoundResource { GT_SPRAYCAN_LOCK(244, GregTech.ID, "items.spraycan_lock"), GT_SPRAYCAN_UNLOCK(245, GregTech.ID, "items.spraycan_unlock"), + GT_MACHINES_BLACK_HOLE_COMPRESSOR(246, GregTech.ID, "machines.BlackHoleCompressorLoop"), + + GT_MACHINES_MULTI_PRECISE_LOOP(247, GregTech.ID, "machines.MTEPreciseAssembler"), + GT_MACHINES_MULTI_ORE_WASHER_PLANT_LOOP(248, GregTech.ID, "machines.MTEIndustrialWashPlant"), + GT_MACHINES_MULTI_MEGA_VACUUM_FREEZER_LOOP(249, GregTech.ID, "machines.MTEMegaVacuumFreezer"), + GT_MACHINES_MULTI_VACUUM_FREEZER_LOOP(250, GregTech.ID, "machines.MTEVacuumFreezer"), + GT_MACHINES_EXTREME_ENTITY_CRUSHER_LOOP(251, GregTech.ID, "machines.MTEExtremeEntityCrusher"), + GT_MACHINES_CUTTING_MACHINE_LOOP(252, GregTech.ID, "machines.MTEIndustrialCuttingMachine"), + GT_MACHINES_ARC_FURNACE_LOOP(253, GregTech.ID, "machines.MTEIndustrialArcFurnace"), + GT_MACHINES_MEGA_INDUSTRIAL_APIARY_LOOP(254, GregTech.ID, "machines.MTEMegaIndustrialApiary"), + GT_MACHINES_ALGAE_LOOP(255, GregTech.ID, "machines.MTEAlgaePondBase"), + GT_MACHINES_THERMAL_CENTRIFUGE_LOOP(256, GregTech.ID, "machines.MTEIndustrialThermalCentrifuge"), + GT_MACHINES_SIFTER_LOOP(257, GregTech.ID, "machines.MTEIndustrialSifter"), + GT_MACHINES_EYE_OF_HARMONY_LOOP(258, GregTech.ID, "machines.MTEEyeOfHarmony"), + GT_MACHINES_EBF_LOOP(259, GregTech.ID, "machines.MTEElectricBlastFurnace"), + GT_MACHINES_ADV_FREEZER_LOOP(260, GregTech.ID, "machines.MTEIndustrialVacuumFreezer"), + GT_MACHINES_GOD_FORGE_LOOP(261, GregTech.ID, "machines.MTEForgeOfGods"), + GT_MACHINES_MEGA_BLAST_FURNACE_LOOP(262, GregTech.ID, "machines.MTEMegaBlastFurnace"), + GT_MACHINES_OIL_DRILL_LOOP(263, GregTech.ID, "machines.MTEOilDrillBase"), + GT_MACHINES_QUANTUM_FORCE_TRANSFORMER_LOOP(264, GregTech.ID, "machines.MTEQuantumForceTransformer"), + GT_MACHINES_ADV_EBF_LOOP(265, GregTech.ID, "machines.MTEAdvEBF"), + GT_MACHINES_LARGE_TURBINES_LOOP(266, GregTech.ID, "machines.MTELargeTurbine"), + GUI_BUTTON_DOWN(-1, GregTech.ID, "gui.buttonDown"), GUI_BUTTON_UP(-1, GregTech.ID, "gui.buttonUp"), diff --git a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java index 1122eaf869e..c1f8afffebd 100644 --- a/src/main/java/gregtech/api/recipe/RecipeMapBackend.java +++ b/src/main/java/gregtech/api/recipe/RecipeMapBackend.java @@ -2,6 +2,8 @@ import static gregtech.api.util.GTRecipeBuilder.ENABLE_COLLISION_CHECK; import static gregtech.api.util.GTRecipeBuilder.handleInvalidRecipe; +import static gregtech.api.util.GTRecipeBuilder.handleInvalidRecipeLowFluids; +import static gregtech.api.util.GTRecipeBuilder.handleInvalidRecipeLowItems; import static gregtech.api.util.GTRecipeBuilder.handleRecipeCollision; import static gregtech.api.util.GTUtility.areStacksEqualOrNull; @@ -172,14 +174,21 @@ protected Collection doAdd(GTRecipeBuilder builder) { Iterable recipes = properties.recipeEmitter.apply(builder); Collection ret = new ArrayList<>(); for (GTRecipe recipe : recipes) { - if (recipe.mFluidInputs.length < properties.minFluidInputs - || recipe.mInputs.length < properties.minItemInputs) { + if (recipe.mInputs.length < properties.minItemInputs) { + handleInvalidRecipeLowItems(); + return Collections.emptyList(); + } + if (recipe.mFluidInputs.length < properties.minFluidInputs) { + handleInvalidRecipeLowFluids(); return Collections.emptyList(); } if (properties.recipeTransformer != null) { recipe = properties.recipeTransformer.apply(recipe); } - if (recipe == null) continue; + if (recipe == null) { + handleInvalidRecipe(); + continue; + } if (builder.isCheckForCollision() && ENABLE_COLLISION_CHECK && checkCollision(recipe)) { handleCollision(recipe); continue; diff --git a/src/main/java/gregtech/api/util/GTRecipeBuilder.java b/src/main/java/gregtech/api/util/GTRecipeBuilder.java index 1426c1c2648..69890e564df 100644 --- a/src/main/java/gregtech/api/util/GTRecipeBuilder.java +++ b/src/main/java/gregtech/api/util/GTRecipeBuilder.java @@ -211,6 +211,30 @@ public static void handleInvalidRecipe() { } } + public static void handleInvalidRecipeLowFluids() { + if (!DEBUG_MODE_INVALID && !PANIC_MODE_INVALID) { + return; + } + // place a breakpoint here to catch all these issues + GTLog.err.println("invalid recipe: not enough input fluids"); + new IllegalArgumentException().printStackTrace(GTLog.err); + if (PANIC_MODE_INVALID) { + throw new IllegalArgumentException("invalid recipe"); + } + } + + public static void handleInvalidRecipeLowItems() { + if (!DEBUG_MODE_INVALID && !PANIC_MODE_INVALID) { + return; + } + // place a breakpoint here to catch all these issues + GTLog.err.println("invalid recipe: not enough input items"); + new IllegalArgumentException().printStackTrace(GTLog.err); + if (PANIC_MODE_INVALID) { + throw new IllegalArgumentException("invalid recipe"); + } + } + public static void handleRecipeCollision(String details) { if (!DEBUG_MODE_COLLISION && !PANIC_MODE_COLLISION) { return; diff --git a/src/main/java/gregtech/common/WirelessComputationPacket.java b/src/main/java/gregtech/common/WirelessComputationPacket.java index 1b485a63c9a..e4d3fcb3282 100644 --- a/src/main/java/gregtech/common/WirelessComputationPacket.java +++ b/src/main/java/gregtech/common/WirelessComputationPacket.java @@ -4,8 +4,6 @@ import java.util.UUID; -import com.gtnewhorizon.structurelib.util.Vec3Impl; - import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.common.misc.spaceprojects.SpaceProjectManager; import tectech.mechanics.dataTransport.QuantumDataPacket; @@ -15,24 +13,33 @@ public class WirelessComputationPacket { public boolean wirelessEnabled = false; // The main idea: 'Clearing' the computation net advances the index and sets the computation stored - // for this index to zero. Uploading is always done to the current index, but data can be downloaded from - // both indices + // for this index to zero. Uploading is always done to the current index, downloading is always done from the + // other index. This is essentially just a double buffered computation storage. The reason for this is that + // every upload needs to be done before every download happens. private final long[] computationStored = new long[] { 0, 0 }; - private long computationDownloaded = 0; private int currentIndex = 0; + private long lastUpdateTick = -1; - public Vec3Impl controllerPosition = null; + private int uploadIndex() { + return currentIndex; + } - public long getTotalComputationStored() { - return computationStored[0] + computationStored[1]; + private int downloadIndex() { + return (currentIndex + 1) % 2; } - private long getAvailableComputationStored() { - return getTotalComputationStored() - computationDownloaded; + public long getAvailableComputationStored() { + return computationStored[downloadIndex()]; } private QuantumDataPacket download(long dataIn, long aTick) { - if (!wirelessEnabled || controllerPosition == null) return new QuantumDataPacket(0L); + if (!wirelessEnabled) return new QuantumDataPacket(0L); + + // If the net hasn't been updated yet this tick, make sure to do so + if (lastUpdateTick < aTick) { + this.update(); + lastUpdateTick = aTick; + } // If we have enough computation 'stored', download it // Note that this means that if you do not have enough computation to go to all @@ -40,34 +47,21 @@ private QuantumDataPacket download(long dataIn, long aTick) { // This also means that if you don't have enough computation for a hatch, it will not receive any computation // at all. This is also fine. if (getAvailableComputationStored() >= dataIn) { - computationDownloaded += dataIn; + computationStored[downloadIndex()] -= dataIn; return new QuantumDataPacket(dataIn); } else return new QuantumDataPacket(0L); } - private void update(IGregTechTileEntity entity, long aTick) { + private void update() { // The reason we want this complex index cycling system is because hatches may upload and download computation // in the same tick as the currently stored computation is cleared. To avoid interruptions, we want to // try to double buffer these updates. This means that we keep two computation values around, and every update - // we only clear one of them. Only the most recent entry can be used for uploading computation, but we allow - // downloading computation from both the current and the previous index. + // we only clear one of them. // Remove downloaded computation previous index (which is also the next index since there are only two), // then remove the leftover from current index. - int nextIndex = (currentIndex + 1) % 2; - long availableInPrevious = computationStored[nextIndex]; - // Clear stored computation for the next index, since we don't want to allow players to accumulate - // computation in their wireless network indefinitely. This would allow for cheesing research by passively - // banking computation and then setting the input hatch to a high value when the computation is needed. - computationStored[nextIndex] = 0; - if (computationDownloaded > availableInPrevious) { - long toDrainFromCurrent = computationDownloaded - availableInPrevious; - computationStored[currentIndex] -= toDrainFromCurrent; - } - // Reset our current tally of downloaded computation - computationDownloaded = 0; - // Now advance the current index to the next index - currentIndex = nextIndex; + computationStored[downloadIndex()] = 0; + currentIndex = (currentIndex + 1) % 2; } private void setWirelessEnabled(boolean wirelessEnabled) { @@ -75,8 +69,13 @@ private void setWirelessEnabled(boolean wirelessEnabled) { } private void upload(long dataOut, long aTick) { + // If the net hasn't been updated yet this tick, make sure to do so + if (lastUpdateTick < aTick) { + this.update(); + lastUpdateTick = aTick; + } // Store computation that is uploaded internally - computationStored[currentIndex] += dataOut; + computationStored[uploadIndex()] += dataOut; } public static QuantumDataPacket downloadData(UUID userId, long dataIn, long aTick) { @@ -87,26 +86,11 @@ public static void uploadData(UUID userId, long dataOut, long aTick) { getPacketByUserId(userId).upload(dataOut, aTick); } - public static void updatePacket(IGregTechTileEntity entity, long aTick) { - getPacketByUserId(entity.getOwnerUuid()).update(entity, aTick); - } - - public static boolean enableWirelessNetWork(IGregTechTileEntity entity) { - var packet = getPacketByUserId(entity.getOwnerUuid()); - Vec3Impl pos = new Vec3Impl(entity.getXCoord(), entity.getYCoord(), entity.getZCoord()); - if (packet.wirelessEnabled && packet.controllerPosition != null - && pos.compareTo(packet.controllerPosition) != 0) return false; + public static void enableWirelessNetWork(IGregTechTileEntity entity) { getPacketByUserId(entity.getOwnerUuid()).setWirelessEnabled(true); - if (packet.controllerPosition == null) { - packet.controllerPosition = new Vec3Impl(entity.getXCoord(), entity.getYCoord(), entity.getZCoord()); - } - return true; } public static void disableWirelessNetWork(IGregTechTileEntity entity) { - var packet = getPacketByUserId(entity.getOwnerUuid()); - Vec3Impl pos = new Vec3Impl(entity.getXCoord(), entity.getYCoord(), entity.getZCoord()); - if (packet.controllerPosition != null && packet.controllerPosition.compareTo(pos) != 0) return; getPacketByUserId(entity.getOwnerUuid()).setWirelessEnabled(false); } diff --git a/src/main/java/gregtech/common/WirelessDataStore.java b/src/main/java/gregtech/common/WirelessDataStore.java index 4016a2440bc..3276a7e6948 100644 --- a/src/main/java/gregtech/common/WirelessDataStore.java +++ b/src/main/java/gregtech/common/WirelessDataStore.java @@ -12,17 +12,28 @@ public class WirelessDataStore { - private final ArrayList dataSticks = new ArrayList<>(); + public static final long UPLOAD_TICK = 200; + public static final long DOWNLOAD_TICK = UPLOAD_TICK + 1; - public void clearData() { - dataSticks.clear(); - } + private long lastUploadTick = -1; + private long lastDownloadTick = -1; + private final ArrayList uploadedSticks = new ArrayList<>(); + private final ArrayList dataSticks = new ArrayList<>(); - public void uploadData(List sticks) { - dataSticks.addAll(sticks); + public void uploadData(List sticks, long tick) { + if (lastUploadTick < tick) { + uploadedSticks.clear(); + lastUploadTick = tick; + } + uploadedSticks.addAll(sticks); } - public List downloadData() { + public List downloadData(long tick) { + if (lastDownloadTick < tick) { + dataSticks.clear(); + dataSticks.addAll(uploadedSticks); + lastDownloadTick = tick; + } return dataSticks; } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java index 4be6ddb70a2..be11e400fec 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEElectricBlastFurnace.java @@ -30,6 +30,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -39,10 +40,13 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.GTMod; import gregtech.api.GregTechAPI; import gregtech.api.enums.HeatingCoilLevel; import gregtech.api.enums.Materials; +import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.fluid.IFluidStore; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -395,4 +399,10 @@ public boolean supportsInputSeparation() { public boolean supportsBatchMode() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_EBF_LOOP.resourceLocation; + } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java index e92cfead9cf..d23731d7e14 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTELargeTurbine.java @@ -25,6 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; @@ -41,7 +42,10 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.Dyes; +import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.items.MetaGeneratedTool; @@ -472,4 +476,10 @@ public int survivalConstruct(ItemStack stackSize, int elementBudget, ISurvivalBu if (mMachine) return -1; return survivialBuildPiece(STRUCTURE_PIECE_MAIN, stackSize, 2, 2, 1, elementBudget, env, false, true); } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_LARGE_TURBINES_LOOP.resourceLocation; + } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEOilDrillBase.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEOilDrillBase.java index b40e7e2d29c..35be525c51f 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEOilDrillBase.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEOilDrillBase.java @@ -25,6 +25,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.ChunkCoordIntPair; import net.minecraft.world.chunk.Chunk; @@ -43,6 +44,8 @@ import com.gtnewhorizons.modularui.common.widget.SlotWidget; import com.gtnewhorizons.modularui.common.widget.TextWidget; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.IHatchElement; import gregtech.api.interfaces.ITexture; @@ -486,4 +489,10 @@ protected void drawTexts(DynamicPositionedColumn screenElements, SlotWidget inve public boolean supportsVoidProtection() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_OIL_DRILL_LOOP.resourceLocation; + } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/MTEVacuumFreezer.java b/src/main/java/gregtech/common/tileentities/machines/multi/MTEVacuumFreezer.java index c2879e0ab71..bd2400b3a53 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/MTEVacuumFreezer.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/MTEVacuumFreezer.java @@ -15,13 +15,17 @@ import java.util.List; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; import com.google.common.collect.ImmutableList; import com.gtnewhorizon.structurelib.structure.IStructureElement; import com.gtnewhorizon.structurelib.structure.StructureUtility; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; +import gregtech.api.enums.SoundResource; import gregtech.api.interfaces.IHatchElement; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -159,4 +163,10 @@ public boolean supportsVoidProtection() { public boolean supportsBatchMode() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MULTI_VACUUM_FREEZER_LOOP.resourceLocation; + } } diff --git a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/MTEBlackHoleCompressor.java b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/MTEBlackHoleCompressor.java index ba1c38db405..edfa676b538 100644 --- a/src/main/java/gregtech/common/tileentities/machines/multi/compressor/MTEBlackHoleCompressor.java +++ b/src/main/java/gregtech/common/tileentities/machines/multi/compressor/MTEBlackHoleCompressor.java @@ -28,6 +28,8 @@ import javax.annotation.Nonnull; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; @@ -48,9 +50,12 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.Materials; import gregtech.api.enums.MaterialsUEVplus; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.ITexture; @@ -76,6 +81,7 @@ import gtPlusPlus.core.util.minecraft.PlayerUtils; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; +import tectech.thing.metaTileEntity.multi.base.SoundLoopAnyBlock; public class MTEBlackHoleCompressor extends MTEExtendedPowerMultiBlockBase implements ISurvivalConstructable { @@ -153,6 +159,9 @@ public class MTEBlackHoleCompressor extends MTEExtendedPowerMultiBlockBase 1) { + if (blackholeSoundLoop == null) { + ForgeDirection oppositeDirection = getDirection().getOpposite(); + int offsetX = 7 * oppositeDirection.offsetX; + int offsetY = 11; + int offsetZ = 7 * oppositeDirection.offsetZ; + + World world = Minecraft.getMinecraft().thePlayer.worldObj; + IGregTechTileEntity base = getBaseMetaTileEntity(); + + int x = base.getXCoord() + offsetX; + int y = base.getYCoord() + offsetY; + int z = base.getZCoord() + offsetZ; + + Block blockAtSoundLocation = world.getBlock(x, y, z); + if (blockAtSoundLocation == Blocks.air) return; + + int[] offset = { offsetX, offsetY, offsetZ }; + blackholeSoundLoop = new SoundLoopAnyBlock( + SoundResource.GT_MACHINES_BLACK_HOLE_COMPRESSOR.resourceLocation, + getBaseMetaTileEntity(), + false, + false, + offset, + Blocks.air); + Minecraft.getMinecraft() + .getSoundHandler() + .playSound(blackholeSoundLoop); + } + } else { + if (blackholeSoundLoop != null) { + blackholeSoundLoop = null; + } + } + } + @Override public byte getUpdateData() { return blackHoleStatus; @@ -544,13 +591,16 @@ public boolean onRunningTick(ItemStack aStack) { mOutputItems = null; mOutputFluids = null; } + return super.onRunningTick(aStack); } @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPostTick(aBaseMetaTileEntity, aTick); - + if (!aBaseMetaTileEntity.isServerSide()) { + playBlackHoleSounds(); + } if (aTick % 20 == 0) { if (blackHoleStatus == 2) { if (blackHoleStability >= 0) { diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java index 98235822120..8a9b8bb7d57 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOre.java @@ -79,8 +79,7 @@ private boolean registerStandardOreRecipes(OrePrefixes aPrefix, Materials aMater Materials tMaterial = aMaterial.mOreReplacement; Materials tPrimaryByMaterial = null; aMultiplier = Math.max(1, aMultiplier); - aOreStack = GTUtility.copyAmount(1, aOreStack); - aOreStack.stackSize = 1; + aOreStack = GTOreDictUnificator.get(aPrefix, aMaterial, 1L); ItemStack tIngot = GTOreDictUnificator.get(OrePrefixes.ingot, aMaterial.mDirectSmelting, 1L); ItemStack tGem = GTOreDictUnificator.get(OrePrefixes.gem, tMaterial, 1L); diff --git a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOreSmelting.java b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOreSmelting.java index e42ebc1f74b..3d33df9711a 100644 --- a/src/main/java/gregtech/loaders/oreprocessing/ProcessingOreSmelting.java +++ b/src/main/java/gregtech/loaders/oreprocessing/ProcessingOreSmelting.java @@ -191,7 +191,7 @@ public void registerOre(OrePrefixes aPrefix, Materials aMaterial, String aOreDic 1L); if ((tStack == null) && (!aMaterial.contains(SubTag.SMELTING_TO_GEM))) tStack = GTOreDictUnificator.get(OrePrefixes.ingot, aMaterial.mDirectSmelting, 1L); - GTModHandler.addSmeltingRecipe(aStack, tStack); + GTModHandler.addSmeltingRecipe(GTOreDictUnificator.get(aPrefix, aMaterial, 1L), tStack); } } } diff --git a/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java b/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java index c546d2114e7..70416c82ef4 100644 --- a/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java +++ b/src/main/java/gtPlusPlus/core/block/base/BasicTileBlockWithTooltip.java @@ -29,7 +29,6 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.minecraft.CubicObject; import gtPlusPlus.api.objects.minecraft.SafeTexture; -import gtPlusPlus.core.lib.GTPPCore; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.minecraft.InventoryUtils; import gtPlusPlus.core.util.minecraft.ItemUtils; @@ -64,28 +63,28 @@ public Class getItemBlockClass() { } /** - * A lazy way to declare the unlocal name for the block, makes boilerplating easy. + * A lazy way to declare the unlocal name for the block, makes boilerplate easy. * * @return The internal name for this block. */ public abstract String getUnlocalBlockName(); /** - * Lazy Boilerplating. + * Lazy Boilerplate. * * @return Block Hardness. */ protected abstract float initBlockHardness(); /** - * Lazy Boilerplating. + * Lazy Boilerplate. * * @return Block Resistance. */ protected abstract float initBlockResistance(); /** - * Lazy Boilerplating. + * Lazy Boilerplate. * * @return The {@link CreativeTab} this Block is shown on. */ @@ -131,7 +130,7 @@ private String getTileEntityNameForTexturePathing() { /** * An array of CubicObjects, one for each meta, else just a single cell array. Expected to be null regularly, as the * default texture handling should suffice. Handy if re-using textures or using a non-standard structure for them. - * FULL texture path must be used, inclusive of the MODID and a colon. + * FULL texture path must be used, inclusive of the MOD ID and a colon. */ public CubicObject[] getCustomTextureDirectoryObject() { return null; @@ -155,24 +154,14 @@ private void handleTextures() { Logger.INFO("[TeTexture] Building Texture Maps for " + getTileEntityName() + "."); - // Init on the Client side only, to prevent Field initialisers existing in the Server side bytecode. + // Init on the Client side only, to prevent Field initializers existing in the Server side bytecode. mSidedTextureArray = new ArrayList<>(); - /** - * Holds the data for the six sides, each side holds an array of data for each respective meta. - */ + // Holds the data for the six sides, each side holds an array of data for each respective meta. ArrayList> sidedTexturePathArray = new ArrayList<>(); - // Store them in forge order // DOWN, UP, NORTH, SOUTH, WEST, EAST - // Default Path Name, this will make us look inside 'miscutils\textures\blocks' - final String aPrefixTexPath = GTPlusPlus.ID + ":"; - // Default Path Name, this will make us look in the subdirectory for this Tile Entity. - final String aTexPathMid = "TileEntities" + GTPPCore.SEPERATOR - + getTileEntityNameForTexturePathing() - + GTPPCore.SEPERATOR; - // Construct a full path - String aTexPathBuilt = aPrefixTexPath + aTexPathMid; + String aTexPathBuilt = GTPlusPlus.ID + ":TileEntities/" + getTileEntityNameForTexturePathing() + "/"; // File Name Suffixes, without meta tags String aStringBot; String aStringTop; diff --git a/src/main/java/gtPlusPlus/core/block/base/BlockBaseFluid.java b/src/main/java/gtPlusPlus/core/block/base/BlockBaseFluid.java index 6772b71262f..7629de4eb59 100644 --- a/src/main/java/gtPlusPlus/core/block/base/BlockBaseFluid.java +++ b/src/main/java/gtPlusPlus/core/block/base/BlockBaseFluid.java @@ -61,8 +61,8 @@ public IIcon getIcon(int ordinalSide, int meta) { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister icon) { - this.textureArray[0] = icon.registerIcon(GTPlusPlus.ID + ":" + "fluid/" + "Fluid_" + this.name + "_Still"); - this.textureArray[1] = icon.registerIcon(GTPlusPlus.ID + ":" + "fluid/" + "Fluid_" + this.name + "_Flow"); + this.textureArray[0] = icon.registerIcon(GTPlusPlus.ID + ":fluid/Fluid_" + this.name + "_Still"); + this.textureArray[1] = icon.registerIcon(GTPlusPlus.ID + ":fluid/Fluid_" + this.name + "_Flow"); } @Override diff --git a/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java b/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java index 7ba3e7e4746..bc4f4b25a6a 100644 --- a/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java +++ b/src/main/java/gtPlusPlus/core/block/base/BlockBaseOre.java @@ -122,7 +122,6 @@ public void harvestBlock(World worldIn, EntityPlayer player, int x, int y, int z if (EnchantmentHelper.getSilkTouchModifier(player)) { shouldSilkTouch = true; super.harvestBlock(worldIn, player, x, y, z, meta); - if (shouldSilkTouch) { shouldSilkTouch = false; } @@ -145,12 +144,9 @@ public ArrayList getDrops(World world, int x, int y, int z, int metad drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); } else { switch (GTMod.gregtechproxy.oreDropSystem) { - case Item -> { - drops.add( - ItemUtils.getItemStackOfAmountFromOreDictNoBroken( - "oreRaw" + this.blockMaterial.getLocalizedName(), - 1)); - } + case Item -> drops.add( + ItemUtils + .getItemStackOfAmountFromOreDictNoBroken("oreRaw" + this.blockMaterial.getLocalizedName(), 1)); case FortuneItem -> { // if shouldFortune and isNatural then get fortune drops // if not shouldFortune or not isNatural then get normal drops @@ -174,18 +170,12 @@ public ArrayList getDrops(World world, int x, int y, int z, int metad 1)); } } - case UnifiedBlock -> { - // Unified ore - drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); - } - case PerDimBlock -> { - // Per Dimension ore - drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); - } - case Block -> { - // Regular ore - drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); - } + // Unified ore + case UnifiedBlock -> drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); + // Per Dimension ore + case PerDimBlock -> drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); + // Regular ore + case Block -> drops.add(ItemUtils.simpleMetaStack(this, metadata, 1)); } } return drops; diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java b/src/main/java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java index 0c353cfbddc..07e6d3324f4 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockCompressedObsidian.java @@ -23,7 +23,7 @@ public class BlockCompressedObsidian extends BlockObsidian { - private final IIcon textureArray[] = new IIcon[11]; + private final IIcon[] textureArray = new IIcon[11]; public BlockCompressedObsidian() { this.setBlockName("blockCompressedObsidian"); @@ -49,17 +49,17 @@ public MapColor getMapColor(final int meta) { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister iicon) { - this.textureArray[0] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian1"); - this.textureArray[1] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian2"); - this.textureArray[2] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian3"); - this.textureArray[3] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian4"); - this.textureArray[4] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian5"); - this.textureArray[5] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "obsidian_invert"); - this.textureArray[6] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "glowstone1"); - this.textureArray[7] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "glowstone2"); - this.textureArray[8] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "glowstone3"); - this.textureArray[9] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "glowstone4"); - this.textureArray[10] = iicon.registerIcon(GTPlusPlus.ID + ":" + "compressed/" + "glowstone5"); + this.textureArray[0] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian1"); + this.textureArray[1] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian2"); + this.textureArray[2] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian3"); + this.textureArray[3] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian4"); + this.textureArray[4] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian5"); + this.textureArray[5] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/obsidian_invert"); + this.textureArray[6] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/glowstone1"); + this.textureArray[7] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/glowstone2"); + this.textureArray[8] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/glowstone3"); + this.textureArray[9] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/glowstone4"); + this.textureArray[10] = iicon.registerIcon(GTPlusPlus.ID + ":compressed/glowstone5"); } /** diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockFluidTankInfinite.java b/src/main/java/gtPlusPlus/core/block/general/BlockFluidTankInfinite.java index a300b835771..2e884fda964 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockFluidTankInfinite.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockFluidTankInfinite.java @@ -14,7 +14,6 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; -import net.minecraftforge.fluids.ItemFluidContainer; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; @@ -55,12 +54,10 @@ public IIcon getIcon(final int ordinalSide, final int meta) { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { - this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "Generic_Creative_Texture"); - this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "Generic_Creative_Texture"); - this.textureBottom = p_149651_1_ - .registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "Generic_Creative_Texture"); - this.textureFront = p_149651_1_ - .registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "Generic_Creative_Texture"); + this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/Generic_Creative_Texture"); + this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/Generic_Creative_Texture"); + this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/Generic_Creative_Texture"); + this.textureFront = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/Generic_Creative_Texture"); } /** @@ -81,9 +78,8 @@ public boolean onBlockActivated(final World world, final int x, final int y, fin } catch (Throwable t) { handItem = null; } - if (handItem != null - && (handItem instanceof IFluidContainerItem || handItem instanceof ItemFluidContainer - || FluidContainerRegistry.isFilledContainer(player.getHeldItem()))) { + if (handItem != null && (handItem instanceof IFluidContainerItem + || FluidContainerRegistry.isFilledContainer(player.getHeldItem()))) { if (tank.tank.getFluid() == null) { try { if (!FluidContainerRegistry.isFilledContainer(player.getHeldItem())) { diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockHellFire.java b/src/main/java/gtPlusPlus/core/block/general/BlockHellFire.java index b18a2d4b861..1a6549e758c 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockHellFire.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockHellFire.java @@ -30,6 +30,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.objects.XSTR; +import gregtech.api.util.GTLog; import gtPlusPlus.core.creative.AddToCreativeTab; import gtPlusPlus.core.util.math.MathUtils; @@ -68,8 +69,8 @@ private void enableBrutalFire() { } } - } catch (Throwable t) { - t.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(GTLog.err); } } @@ -250,7 +251,7 @@ private int getChanceOfNeighborsEncouragingFire(final World world, final int x, } /** - * Checks to see if its valid to put this block at the specified coordinates. Args: world, x, y, z + * Checks to see if it is valid to put this block at the specified coordinates. Args: world, x, y, z */ @Override public boolean canPlaceBlockAt(final World worldObj, final int x, final int y, final int z) { @@ -398,9 +399,8 @@ public void randomDisplayTick(final World world, final int x, final int y, final @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister IIconRegister) { - this.IIconArray = new IIcon[] { - IIconRegister.registerIcon(GTPlusPlus.ID + ":" + "hellfire/" + "blockHellFire" + "_layer_0"), - IIconRegister.registerIcon(GTPlusPlus.ID + ":" + "hellfire/" + "blockHellFire" + "_layer_1") }; + this.IIconArray = new IIcon[] { IIconRegister.registerIcon(GTPlusPlus.ID + ":hellfire/blockHellFire_layer_0"), + IIconRegister.registerIcon(GTPlusPlus.ID + ":hellfire/blockHellFire_layer_1") }; } @Override @@ -429,13 +429,13 @@ public MapColor getMapColor(final int p_149728_1_) { private static class FireInfo { private int encouragement = 0; - private int flammibility = 0; + private int flammability = 0; } private final IdentityHashMap blockInfo = Maps.newIdentityHashMap(); @Override - public void setFireInfo(final Block block, final int encouragement, final int flammibility) { + public void setFireInfo(final Block block, final int encouragement, final int flammability) { try { if (block == Blocks.air) { throw new IllegalArgumentException("Tried to set air on fire... This is bad."); @@ -445,17 +445,19 @@ public void setFireInfo(final Block block, final int encouragement, final int fl return; } this.field_149849_a[id] = encouragement; - this.field_149848_b[id] = flammibility; + this.field_149848_b[id] = flammability; - final FireInfo info = this.getInfo(block, true); + final FireInfo info = this.getInfo(block); info.encouragement = encouragement; - info.flammibility = flammibility; - } catch (Throwable t) {} + info.flammability = flammability; + } catch (Exception e) { + e.printStackTrace(GTLog.err); + } } - private FireInfo getInfo(final Block block, final boolean garentee) { + private FireInfo getInfo(final Block block) { FireInfo ret = this.blockInfo.get(block); - if ((ret == null) && garentee) { + if (ret == null) { ret = new FireInfo(); this.blockInfo.put(block, ret); } @@ -465,10 +467,10 @@ private FireInfo getInfo(final Block block, final boolean garentee) { @Override public void rebuildFireInfo() { for (int x = 0; x < 4096; x++) { - // If we care.. we could detect changes in here and make sure we + // If we care... we could detect changes in here and make sure we // keep them, however // it's my thinking that anyone who hacks into the private variables - // should DIAF and we don't care about them. + // should reconsider, and we don't care about them. this.field_149849_a[x] = 0; this.field_149848_b[x] = 0; } @@ -477,7 +479,7 @@ public void rebuildFireInfo() { final int id = Block.getIdFromBlock(e.getKey()); if ((id >= 0) && (id < 4096)) { this.field_149849_a[id] = e.getValue().encouragement; - this.field_149848_b[id] = e.getValue().flammibility; + this.field_149848_b[id] = e.getValue().flammability; } } } @@ -527,7 +529,7 @@ public int getChanceToEncourageFire(final IBlockAccess world, final int x, final final int oldChance, final ForgeDirection face) { final int newChance = world.getBlock(x, y, z) .getFireSpreadSpeed(world, x, y, z, face); - return (newChance > oldChance ? newChance : oldChance); + return Math.max(newChance, oldChance); } /* * ================================= Forge Start ====================================== diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockLightGlass.java b/src/main/java/gtPlusPlus/core/block/general/BlockLightGlass.java index 1e4df5c3994..097d5d8a5e7 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockLightGlass.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockLightGlass.java @@ -23,11 +23,10 @@ public class BlockLightGlass extends BlockAir { private int state = 0; - private final int a = 255; private int r = 255; private int g = 0; private int b = 0; - private int hex; + private final int a = 255; public BlockLightGlass(final boolean bool) { super(); @@ -35,7 +34,7 @@ public BlockLightGlass(final boolean bool) { this.setBlockName("blockMFEffect"); this.setLightLevel(12F); setHardness(0.1F); - setBlockTextureName(GTPlusPlus.ID + ":" + "blockMFEffect"); + setBlockTextureName(GTPlusPlus.ID + ":blockMFEffect"); setStepSound(Block.soundTypeGlass); GameRegistry.registerBlock(this, "blockMFEffect"); @@ -78,7 +77,7 @@ protected boolean canSilkHarvest() { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister iIcon) { - this.blockIcon = iIcon.registerIcon(GTPlusPlus.ID + ":" + "blockMFEffect"); + this.blockIcon = iIcon.registerIcon(GTPlusPlus.ID + ":blockMFEffect"); } @Override @@ -120,8 +119,7 @@ public int colorMultiplier(final IBlockAccess par1IBlockAccess, final int par2, this.state = 0; } } - this.hex = (this.a << 24) + (this.r << 16) + (this.g << 8) + (this.b); - return this.hex; + return (this.r << 16) + (this.g << 8) + (this.b) + (this.a << 24); } /** diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockMiningExplosives.java b/src/main/java/gtPlusPlus/core/block/general/BlockMiningExplosives.java index 20b6fff9e60..3aec9ef4279 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockMiningExplosives.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockMiningExplosives.java @@ -2,8 +2,6 @@ import static gregtech.api.enums.Mods.GTPlusPlus; -import java.util.Random; - import net.minecraft.block.Block; import net.minecraft.block.BlockTNT; import net.minecraft.client.renderer.texture.IIconRegister; @@ -71,14 +69,6 @@ public void onNeighborBlockChange(final World world, final int x, final int y, f } } - /** - * Returns the quantity of items to drop on block destruction. - */ - @Override - public int quantityDropped(final Random random) { - return 1; - } - /** * Called upon the block being destroyed by an explosion */ @@ -103,7 +93,7 @@ public void onBlockDestroyedByExplosion(final World world, final int x, final in */ @Override public void onBlockDestroyedByPlayer(final World world, final int x, final int y, final int z, final int meta) { - this.func_150114_a(world, x, y, z, meta, (EntityLivingBase) null); + this.func_150114_a(world, x, y, z, meta, null); } // TODO Spawns Primed TNT? @@ -175,19 +165,11 @@ public void onEntityCollidedWithBlock(final World world, final int x, final int } } - /** - * Return whether this block can drop from an explosion. - */ - @Override - public boolean canDropFromExplosion(final Explosion bang) { - return false; - } - @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister iconRegister) { - this.blockIcon = iconRegister.registerIcon(GTPlusPlus.ID + ":" + "chrono/" + "MetalSheet2"); - this.textureTop = iconRegister.registerIcon(GTPlusPlus.ID + ":" + "chrono/" + "MetalFunnel"); - this.textureBottom = iconRegister.registerIcon(GTPlusPlus.ID + ":" + "chrono/" + "MetalPanel"); + this.blockIcon = iconRegister.registerIcon(GTPlusPlus.ID + ":chrono/MetalSheet2"); + this.textureTop = iconRegister.registerIcon(GTPlusPlus.ID + ":chrono/MetalFunnel"); + this.textureBottom = iconRegister.registerIcon(GTPlusPlus.ID + ":chrono/MetalPanel"); } } diff --git a/src/main/java/gtPlusPlus/core/block/general/BlockSuperLight.java b/src/main/java/gtPlusPlus/core/block/general/BlockSuperLight.java index e12e8292603..f11c3d9a9b6 100644 --- a/src/main/java/gtPlusPlus/core/block/general/BlockSuperLight.java +++ b/src/main/java/gtPlusPlus/core/block/general/BlockSuperLight.java @@ -47,7 +47,7 @@ public IIcon getIcon(final int ordinalSide, final int meta) { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { - this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "SwirlBigBlue"); + this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":SwirlBigBlue"); } /** diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockCircuitProgrammer.java b/src/main/java/gtPlusPlus/core/block/machine/BlockCircuitProgrammer.java index 191a2a8f922..dcbe41f150d 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockCircuitProgrammer.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockCircuitProgrammer.java @@ -13,6 +13,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import gregtech.api.util.GTLog; import gregtech.common.items.MetaGeneratedTool01; import gtPlusPlus.GTplusplus; import gtPlusPlus.api.objects.minecraft.CubicObject; @@ -27,7 +28,7 @@ public class BlockCircuitProgrammer extends BasicTileBlockWithTooltip { /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 4; + private final int mTooltipID = 2; @Override public int getTooltipID() { @@ -39,7 +40,7 @@ public BlockCircuitProgrammer() { } /** - * Called upon block activation (right click on the block.) + * Called upon block activation (right-click on the block.) */ @Override public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, @@ -60,11 +61,12 @@ public boolean onBlockActivated(final World world, final int x, final int y, fin mDidScrewDriver = tile.onScrewdriverRightClick((byte) side, player, x, y, z); } } - } catch (final Throwable t) {} - + } catch (Exception e) { + e.printStackTrace(GTLog.err); + } if (!mDidScrewDriver) { final TileEntity te = world.getTileEntity(x, y, z); - if ((te != null) && (te instanceof TileEntityCircuitProgrammer)) { + if (te instanceof TileEntityCircuitProgrammer) { player.openGui(GTplusplus.instance, GuiHandler.GUI8, world, x, y, z); return true; } @@ -141,12 +143,10 @@ protected String getTileEntityName() { @Override public CubicObject[] getCustomTextureDirectoryObject() { - String[] aTexData = new String[] { GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_G", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_TECH_PANEL_B", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_I", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_I", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_I", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_I" }; + String[] aTexData = new String[] { GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H", + GTPlusPlus.ID + ":metro/TEXTURE_TECH_PANEL_B", GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_I", + GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_I", GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_I", + GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_I" }; CubicObject[] aTextureData = new CubicObject[] { new CubicObject<>(aTexData) }; return aTextureData; } diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockDecayablesChest.java b/src/main/java/gtPlusPlus/core/block/machine/BlockDecayablesChest.java index 7b42f08fa81..67ad10bb692 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockDecayablesChest.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockDecayablesChest.java @@ -36,12 +36,12 @@ public class BlockDecayablesChest extends BlockContainer implements ITileTooltip private IIcon textureBottom; @SideOnly(Side.CLIENT) - private IIcon textureFront; + private IIcon textureSide; /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 5; + private final int mTooltipID = 3; @Override public int getTooltipID() { @@ -118,17 +118,17 @@ public IIcon getIcon(final int ordinalSide, final int meta) { return switch (ordinalSide) { case 0 -> textureBottom; case 1 -> textureTop; - default -> textureFront; + default -> textureSide; }; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { - this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "DecayablesChest_top"); - this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "DecayablesChest_top"); - this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "DecayablesChest_side"); - this.textureFront = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "DecayablesChest_bottom"); + this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/DecayablesChest_top"); + this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/DecayablesChest_top"); + this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/DecayablesChest_bottom"); + this.textureSide = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/DecayablesChest_Side"); } @Override diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockFishTrap.java b/src/main/java/gtPlusPlus/core/block/machine/BlockFishTrap.java index 0a91c76d605..cf54a044e6f 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockFishTrap.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockFishTrap.java @@ -27,19 +27,10 @@ public class BlockFishTrap extends BlockContainer implements ITileTooltip { - @SideOnly(Side.CLIENT) - private IIcon textureTop; - - @SideOnly(Side.CLIENT) - private IIcon textureBottom; - - @SideOnly(Side.CLIENT) - private IIcon textureFront; - /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 0; + private final int mTooltipID = 1; @Override public int getTooltipID() { @@ -61,22 +52,20 @@ public BlockFishTrap() { @Override @SideOnly(Side.CLIENT) public IIcon getIcon(final int ordinalSide, final int meta) { - return ordinalSide == 1 ? this.textureTop - : (ordinalSide == 0 ? this.textureBottom - : ((ordinalSide != 2) && (ordinalSide != 4) ? this.blockIcon : this.textureFront)); + return this.blockIcon; } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { - this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "fishtrap"); - this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "fishtrap"); - this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "fishtrap"); - this.textureFront = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "fishtrap"); + this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/fishtrap"); + p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/fishtrap"); + p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/fishtrap"); + p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/fishtrap"); } /** - * Called upon block activation (right click on the block.) + * Called upon block activation (right-click on the block.) */ @Override public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, @@ -86,7 +75,7 @@ public boolean onBlockActivated(final World world, final int x, final int y, fin } final TileEntity te = world.getTileEntity(x, y, z); - if ((te != null) && (te instanceof TileEntityFishTrap)) { + if (te instanceof TileEntityFishTrap) { player.openGui(GTplusplus.instance, 5, world, x, y, z); return true; } diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockFlaskSetter.java b/src/main/java/gtPlusPlus/core/block/machine/BlockFlaskSetter.java index 510caf3e14c..5ec07bb9e33 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockFlaskSetter.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockFlaskSetter.java @@ -14,6 +14,7 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import gregtech.api.util.GTLog; import gregtech.common.items.MetaGeneratedTool01; import gtPlusPlus.GTplusplus; import gtPlusPlus.api.objects.minecraft.CubicObject; @@ -29,7 +30,7 @@ public class BlockFlaskSetter extends BasicTileBlockWithTooltip { /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 8; + private final int mTooltipID = 5; @Override public int getTooltipID() { @@ -68,11 +69,12 @@ public boolean onBlockActivated(final World world, final int x, final int y, fin mDidScrewDriver = tile.onScrewdriverRightClick((byte) side, player, x, y, z); } } - } catch (final Throwable t) {} - + } catch (Exception e) { + e.printStackTrace(GTLog.err); + } if (!mDidScrewDriver) { final TileEntity te = world.getTileEntity(x, y, z); - if ((te != null) && (te instanceof TileEntityVolumetricFlaskSetter aTile)) { + if (te instanceof TileEntityVolumetricFlaskSetter) { player.openGui(GTplusplus.instance, GuiHandler.GUI18, world, x, y, z); // new Packet_VolumetricFlaskGui2(aTile, aTile.getCustomValue()); return true; @@ -145,12 +147,10 @@ protected String getTileEntityName() { @Override public CubicObject[] getCustomTextureDirectoryObject() { - String[] aTexData = new String[] { GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_A", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_TECH_PANEL_C", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_H", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_H", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_H", - GTPlusPlus.ID + ":" + "metro/" + "TEXTURE_METAL_PANEL_H" }; + String[] aTexData = new String[] { GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H", + GTPlusPlus.ID + ":metro/TEXTURE_TECH_PANEL_C", GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H", + GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H", GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H", + GTPlusPlus.ID + ":metro/TEXTURE_METAL_PANEL_H" }; CubicObject[] aTextureData = new CubicObject[] { new CubicObject<>(aTexData) }; return aTextureData; } diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockPestKiller.java b/src/main/java/gtPlusPlus/core/block/machine/BlockPestKiller.java index 95e7f3bc562..d4211a7831e 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockPestKiller.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockPestKiller.java @@ -40,7 +40,7 @@ public class BlockPestKiller extends BlockContainer implements ITileTooltip { /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 6; + private final int mTooltipID = 4; @Override public int getTooltipID() { @@ -69,11 +69,11 @@ public IIcon getIcon(final int ordinalSide, final int meta) { @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { this.blockIcon = p_149651_1_ - .registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "MACHINE_CASING_FARM_MANAGER_STRUCTURAL"); - this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "MACHINE_PESTKILLER_TOP"); + .registerIcon(GTPlusPlus.ID + ":TileEntities/MACHINE_CASING_FARM_MANAGER_STRUCTURAL"); + this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/MACHINE_PESTKILLER_TOP"); this.textureBottom = p_149651_1_.registerIcon("planks_acacia"); this.textureFront = p_149651_1_ - .registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "MACHINE_CASING_FARM_MANAGER_STRUCTURAL"); + .registerIcon(GTPlusPlus.ID + ":TileEntities/MACHINE_CASING_FARM_MANAGER_STRUCTURAL"); } /** @@ -87,7 +87,7 @@ public boolean onBlockActivated(final World world, final int x, final int y, fin } final TileEntity te = world.getTileEntity(x, y, z); - if ((te != null) && (te instanceof TileEntityPestKiller)) { + if (te instanceof TileEntityPestKiller) { player.openGui(GTplusplus.instance, GuiHandler.GUI15, world, x, y, z); return true; } diff --git a/src/main/java/gtPlusPlus/core/block/machine/BlockProjectTable.java b/src/main/java/gtPlusPlus/core/block/machine/BlockProjectTable.java index 195240958f3..acfc3a02ff3 100644 --- a/src/main/java/gtPlusPlus/core/block/machine/BlockProjectTable.java +++ b/src/main/java/gtPlusPlus/core/block/machine/BlockProjectTable.java @@ -42,11 +42,9 @@ public class BlockProjectTable extends BlockContainer implements ITileTooltip { /** * Determines which tooltip is displayed within the itemblock. */ - private final int mTooltipID = 3; - @Override public int getTooltipID() { - return this.mTooltipID; + return 0; } public BlockProjectTable() { @@ -70,10 +68,10 @@ public IIcon getIcon(final int ordinalSide, final int meta) { @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(final IIconRegister p_149651_1_) { - this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "machine_top"); - this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "cover_crafting"); - this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "machine_top"); - this.textureFront = p_149651_1_.registerIcon(GTPlusPlus.ID + ":" + "TileEntities/" + "machine_top"); + this.blockIcon = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/machine_top"); + this.textureTop = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/cover_crafting"); + this.textureBottom = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/machine_top"); + this.textureFront = p_149651_1_.registerIcon(GTPlusPlus.ID + ":TileEntities/machine_top"); } /** diff --git a/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java b/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java index cf50da52a30..9da305cbd20 100644 --- a/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java +++ b/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockBasicTile.java @@ -21,28 +21,26 @@ public ItemBlockBasicTile(final Block block) { @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { - if (this.mID == 0) { // Fish trap + if (this.mID == 1) { // Fish trap list.add("This trap catches fish faster if surrounded by more water blocks"); - list.add("Can also be placed beside upto 4 other fish traps"); + list.add("Can also be placed beside up to 4 other fish traps"); list.add("Requires at least two faces touching water"); list.add("1/1000 chance to produce triple loot."); - } else if (this.mID == 4) { // Circuit Table + } else if (this.mID == 2) { // Circuit Table list.add("Easy Circuit Configuration"); list.add("Change default setting with a Screwdriver"); list.add("Default is used to select slot for auto-insertion"); - } else if (this.mID == 5) { // Decayables Chest + } else if (this.mID == 3) { // Decayables Chest list.add("Chest which holds radioactive materials"); list.add("Items which decay will tick while inside"); - list.add("Place with right click"); - } else if (this.mID == 6) { // Butterfly Killer + list.add("Place with right-click"); + } else if (this.mID == 4) { // Butterfly Killer list.add("Kills Forestry Butterflies, Bats and other pests"); list.add("Use either Formaldehyde or Hydrogen cyanide"); list.add("Be weary of your neighbours"); - } else if (this.mID == 8) { // Volumetric Flask Setter + } else if (this.mID == 5) { // Volumetric Flask Setter list.add("Easy Flask Configuration"); list.add("Configure default input slot with a screwdriver"); - } else if (this.mID == 9) { - } else { list.add("Bad Tooltip ID - " + mID); } diff --git a/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java b/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java index 92876663f0a..a69d9eab34f 100644 --- a/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java +++ b/src/main/java/gtPlusPlus/core/item/base/itemblock/ItemBlockGtBlock.java @@ -1,6 +1,5 @@ package gtPlusPlus.core.item.base.itemblock; -import java.util.HashMap; import java.util.List; import net.minecraft.block.Block; @@ -11,6 +10,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import gregtech.api.util.GTLog; import gtPlusPlus.core.block.base.BasicBlock.BlockTypes; import gtPlusPlus.core.block.base.BlockBaseModular; import gtPlusPlus.core.block.base.BlockBaseOre; @@ -22,8 +22,6 @@ public class ItemBlockGtBlock extends ItemBlock { - public static HashMap sNameCache = new HashMap<>(); - protected final int blockColour; private int sRadiation; @@ -50,7 +48,6 @@ public ItemBlockGtBlock(final Block block) { } else { this.blockColour = block.getBlockColor(); } - if (block instanceof BlockBaseModular g) { this.mMaterial = g.getMaterialEx(); this.thisBlockType = g.thisBlock; @@ -60,55 +57,23 @@ public ItemBlockGtBlock(final Block block) { } } - public int getBlockTypeMeta() { - if (this.thisBlockType.equals(BlockTypes.STANDARD)) { - return 0; - } else if (this.thisBlockType.equals(BlockTypes.FRAME)) { - return 1; - } else if (this.thisBlockType.equals(BlockTypes.ORE)) { - return 2; - } - return 0; - } - - public String getUnlocalizedBlockName() { - return "block." + mMaterial.getUnlocalizedName() - + "." - + this.thisBlockType.name() - .toLowerCase(); - } - - public String GetProperName() { - String tempIngot = sNameCache.get(getUnlocalizedBlockName()); - if (tempIngot == null) { - tempIngot = "BAD.UNLOCAL.NAME"; - } - return tempIngot; - } - @Override public String getItemStackDisplayName(ItemStack stack) { return this.thisBlock.getLocalizedName(); } - public int getRenderColor(final int aMeta) { - return this.blockColour; - } - @Override public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, final List list, final boolean bool) { if (this.mMaterial != null) { list.add(this.mMaterial.vChemicalFormula); } else { - try { BlockBaseModular g = (BlockBaseModular) thisBlock; this.mMaterial = g.getMaterialEx(); - } catch (Throwable t) { - + } catch (Exception e) { + e.printStackTrace(GTLog.err); } - // list.add("Material is Null."); } @@ -116,10 +81,7 @@ public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, fi if (KeyboardUtils.isCtrlKeyDown()) { Block b = Block.getBlockFromItem(stack.getItem()); if (b != null) { - - String aTool = b.getHarvestTool(stack.getItemDamage()); int aMiningLevel1 = b.getHarvestLevel(stack.getItemDamage()); - if (this.mMaterial != null) { list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5)); list.add("Contains: "); @@ -141,7 +103,6 @@ public void addInformation(final ItemStack stack, final EntityPlayer aPlayer, fi } else { Block b = Block.getBlockFromItem(stack.getItem()); if (b != null) { - String aTool = b.getHarvestTool(stack.getItemDamage()); int aMiningLevel1 = b.getHarvestLevel(stack.getItemDamage()); list.add("Mining Level: " + Math.min(Math.max(aMiningLevel1, 0), 5)); } diff --git a/src/main/java/gtPlusPlus/core/lib/GTPPCore.java b/src/main/java/gtPlusPlus/core/lib/GTPPCore.java index db30eecb333..a4aecd59823 100644 --- a/src/main/java/gtPlusPlus/core/lib/GTPPCore.java +++ b/src/main/java/gtPlusPlus/core/lib/GTPPCore.java @@ -40,8 +40,6 @@ public class GTPPCore { public static final Supplier GT_Tooltip_Radioactive = () -> StatCollector .translateToLocal("GTPP.core.GT_Tooltip_Radioactive"); - public static final String SEPERATOR = "/"; - /** * Lists/Maps */ diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialArcFurnace.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialArcFurnace.java index 20802032a04..9c2c9153ea1 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialArcFurnace.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialArcFurnace.java @@ -24,6 +24,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -33,6 +34,8 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.interfaces.IIconContainer; @@ -212,11 +215,6 @@ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack a return false; } - @Override - protected SoundResource getProcessStartSound() { - return SoundResource.IC2_MACHINES_ELECTROFURNACE_LOOP; - } - @Override protected IIconContainer getActiveOverlay() { return TexturesGtBlock.oMCDIndustrialArcFurnaceActive; @@ -357,4 +355,10 @@ public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDat + StatCollector.translateToLocal("GT5U.GTPP_MULTI_ARC_FURNACE.mode." + (tag.getBoolean("mode") ? 1 : 0)) + EnumChatFormatting.RESET); } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_ARC_FURNACE_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialCuttingMachine.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialCuttingMachine.java index 385ca224fc0..8f1a748f21e 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialCuttingMachine.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialCuttingMachine.java @@ -24,6 +24,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -33,6 +34,9 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IIconContainer; @@ -267,4 +271,10 @@ public void getWailaBody(ItemStack itemStack, List currentTip, IWailaDat + StatCollector.translateToLocal("GT5U.GTPP_MULTI_CUTTING_MACHINE.mode." + tag.getInteger("mode")) + EnumChatFormatting.RESET); } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_CUTTING_MACHINE_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialSifter.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialSifter.java index d8ba5e55c76..604e216e5e7 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialSifter.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialSifter.java @@ -15,6 +15,7 @@ import java.util.Random; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; @@ -22,6 +23,9 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -206,4 +210,10 @@ public boolean explodesOnComponentBreak(final ItemStack aStack) { public boolean isOverclockerUpgradable() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_SIFTER_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialThermalCentrifuge.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialThermalCentrifuge.java index c212fbadd21..75ddb73c465 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialThermalCentrifuge.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialThermalCentrifuge.java @@ -13,13 +13,17 @@ import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; import com.gtnewhorizon.structurelib.structure.IStructureDefinition; import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -181,4 +185,10 @@ public byte getCasingMeta() { public byte getCasingTextureIndex() { return (byte) TAE.GTPP_INDEX(16); } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_THERMAL_CENTRIFUGE_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialVacuumFreezer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialVacuumFreezer.java index 920859616b2..90114322dc1 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialVacuumFreezer.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialVacuumFreezer.java @@ -18,6 +18,7 @@ import java.util.Objects; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; import com.gtnewhorizon.structurelib.alignment.constructable.ISurvivalConstructable; @@ -25,6 +26,9 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -252,4 +256,10 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { } } } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_ADV_FREEZER_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialWashPlant.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialWashPlant.java index 9cca3ec17d6..be3c6404020 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialWashPlant.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/MTEIndustrialWashPlant.java @@ -29,6 +29,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -42,6 +43,9 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IIconContainer; @@ -423,4 +427,10 @@ public void setMachineModeIcons() { machineModeIcons.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_SIMPLEWASHER); machineModeIcons.add(GTUITextures.OVERLAY_BUTTON_MACHINEMODE_CHEMBATH); } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MULTI_ORE_WASHER_PLANT_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/MTEAdvEBF.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/MTEAdvEBF.java index af2229f0387..737cea642ab 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/MTEAdvEBF.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/advanced/MTEAdvEBF.java @@ -23,6 +23,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraftforge.common.util.ForgeDirection; @@ -33,7 +34,10 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.HeatingCoilLevel; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.interfaces.IIconContainer; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -321,4 +325,10 @@ public void setCoilLevel(HeatingCoilLevel aCoilLevel) { public boolean supportsInputSeparation() { return true; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_ADV_EBF_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/MTEQuantumForceTransformer.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/MTEQuantumForceTransformer.java index b3f3f2b136f..ceeba543e89 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/MTEQuantumForceTransformer.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/MTEQuantumForceTransformer.java @@ -33,6 +33,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.util.ForgeDirection; @@ -53,6 +54,7 @@ import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.GTValues; import gregtech.api.enums.Materials; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IIconContainer; @@ -936,4 +938,10 @@ public boolean supportsBatchMode() { public boolean getDefaultHasMaintenanceChecks() { return false; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_QUANTUM_FORCE_TRANSFORMER_LOOP.resourceLocation; + } } diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/MTEAlgaePondBase.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/MTEAlgaePondBase.java index c9af07ecf31..33e4024af71 100644 --- a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/MTEAlgaePondBase.java +++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/production/algae/MTEAlgaePondBase.java @@ -17,6 +17,7 @@ import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.fluids.FluidStack; import org.jetbrains.annotations.NotNull; @@ -27,6 +28,8 @@ import com.gtnewhorizon.structurelib.structure.ISurvivalBuildEnvironment; import com.gtnewhorizon.structurelib.structure.StructureDefinition; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.GregTechAPI; import gregtech.api.enums.SoundResource; import gregtech.api.enums.TAE; @@ -390,4 +393,10 @@ private int getCasingTier() { public boolean getDefaultHasMaintenanceChecks() { return false; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_ALGAE_LOOP.resourceLocation; + } } diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEExtremeEntityCrusher.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEExtremeEntityCrusher.java index 7268f9f3cdb..7d01c51ebab 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEExtremeEntityCrusher.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEExtremeEntityCrusher.java @@ -63,6 +63,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.EnumDifficulty; import net.minecraft.world.World; import net.minecraft.world.WorldProviderHell; @@ -108,6 +109,7 @@ import gregtech.api.GregTechAPI; import gregtech.api.enums.Materials; import gregtech.api.enums.Mods; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.ITexture; @@ -776,6 +778,12 @@ public void createInventorySlots() { slotWidgets.add(weaponSlot); } + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_EXTREME_ENTITY_CRUSHER_LOOP.resourceLocation; + } + private static class EECFakePlayer extends FakePlayer { MTEExtremeEntityCrusher mte; diff --git a/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEMegaIndustrialApiary.java b/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEMegaIndustrialApiary.java index b6c1d845c8b..33ca31d39b5 100644 --- a/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEMegaIndustrialApiary.java +++ b/src/main/java/kubatech/tileentity/gregtech/multiblock/MTEMegaIndustrialApiary.java @@ -61,6 +61,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -110,6 +111,7 @@ import forestry.plugins.PluginApiculture; import gregtech.api.GregTechAPI; import gregtech.api.enums.GTValues; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.ITexture; @@ -1177,4 +1179,9 @@ public int hashCode() { } } + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_MEGA_INDUSTRIAL_APIARY_LOOP.resourceLocation; + } } diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java index 094423cb0a6..52bc4aeca69 100644 --- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java +++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchDataOutput.java @@ -72,6 +72,10 @@ public boolean canConnectData(ForgeDirection side) { return isOutputFacing(side); } + public void providePacket(QuantumDataPacket packet) { + this.q = packet; + } + @Override public void moveAround(IGregTechTileEntity aBaseMetaTileEntity) { IConnectsToDataPipe current = this, source = this, next; diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java index 8495f95e6f7..712cd26d80d 100644 --- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java +++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessComputationOutput.java @@ -1,14 +1,18 @@ package tectech.thing.metaTileEntity.hatch; +import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.common.WirelessComputationPacket; +import tectech.mechanics.dataTransport.QuantumDataPacket; public class MTEHatchWirelessComputationOutput extends MTEHatchDataOutput { + private int clearDelay = 0; + public MTEHatchWirelessComputationOutput(int aID, String aName, String aNameRegional, int aTier) { super(aID, aName, aNameRegional, aTier); @@ -39,12 +43,36 @@ public boolean canConnectData(ForgeDirection side) { return false; } + @Override + public void loadNBTData(NBTTagCompound aNBT) { + super.loadNBTData(aNBT); + if (aNBT.hasKey("clearDelay")) { + this.clearDelay = aNBT.getInteger("clearDelay"); + } + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + super.saveNBTData(aNBT); + aNBT.setInteger("clearDelay", this.clearDelay); + } + + @Override + public void providePacket(QuantumDataPacket packet) { + super.providePacket(packet); + // Keep providing to wireless net for 21 ticks, because after this time a new packet from the computer should + // have arrived + this.clearDelay = 21; + } + @Override public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPreTick(aBaseMetaTileEntity, aTick); if (aBaseMetaTileEntity.isServerSide() && q != null) { WirelessComputationPacket.uploadData(aBaseMetaTileEntity.getOwnerUuid(), q.getContent(), aTick); - q = null; + if (clearDelay-- == 0) { + q = null; + } } } diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java index e7d604328ae..f3e4619c05b 100644 --- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java +++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsInput.java @@ -18,6 +18,8 @@ import org.apache.commons.lang3.reflect.FieldUtils; +import com.google.common.collect.ImmutableList; + import gregtech.api.enums.Dyes; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -32,6 +34,8 @@ public class MTEHatchWirelessDataItemsInput extends MTEHatchDataAccess { private String clientLocale = "en_US"; + private List dataItems = null; + public MTEHatchWirelessDataItemsInput(int aID, String aName, String aNameRegional, int aTier) { super(aID, aName, aNameRegional, aTier); TTUtility.setTier(aTier, this); @@ -118,14 +122,25 @@ public String[] getDescription() { @Override public List getInventoryItems(Predicate filter) { - WirelessDataStore wirelessData = WirelessDataStore - .getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid()); - return wirelessData.downloadData() - .stream() + if (this.dataItems == null) return ImmutableList.of(); + return this.dataItems.stream() .filter(stack -> stack != null && filter.test(stack)) .collect(Collectors.toList()); } + @Override + public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + if (aBaseMetaTileEntity.isServerSide()) { + // Upload data packet and mark it as uploaded, so it will not be uploaded again + // until the data bank resets the wireless network + if (aTick % WirelessDataStore.DOWNLOAD_TICK == 0) { + WirelessDataStore wirelessDataStore = WirelessDataStore + .getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid()); + this.dataItems = wirelessDataStore.downloadData(aTick); + } + } + } + @Override public boolean isGivingInformation() { return true; diff --git a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java index 2765598475d..df4af869ea7 100644 --- a/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java +++ b/src/main/java/tectech/thing/metaTileEntity/hatch/MTEHatchWirelessDataItemsOutput.java @@ -27,8 +27,6 @@ public class MTEHatchWirelessDataItemsOutput extends MTEHatch { public InventoryDataPacket dataPacket = null; - public boolean uploadedSinceReset = false; - public MTEHatchWirelessDataItemsOutput(int aID, String aName, String aNameRegional, int aTier) { super( aID, @@ -94,7 +92,6 @@ public void saveNBTData(NBTTagCompound aNBT) { if (dataPacket != null) { aNBT.setTag("eDATA", dataPacket.toNbt()); } - aNBT.setBoolean("uploadedSinceReset", uploadedSinceReset); } @Override @@ -103,9 +100,6 @@ public void loadNBTData(NBTTagCompound aNBT) { if (aNBT.hasKey("eDATA")) { dataPacket = new InventoryDataPacket(aNBT.getCompoundTag("eDATA")); } - if (aNBT.hasKey("uploadedSinceReset")) { - uploadedSinceReset = aNBT.getBoolean("uploadedSinceReset"); - } } @Override @@ -113,11 +107,10 @@ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { if (aBaseMetaTileEntity.isServerSide()) { // Upload data packet and mark it as uploaded, so it will not be uploaded again // until the data bank resets the wireless network - if (dataPacket != null && !uploadedSinceReset) { + if (dataPacket != null && (aTick % WirelessDataStore.UPLOAD_TICK) == 0) { WirelessDataStore wirelessDataStore = WirelessDataStore .getWirelessDataSticks(getBaseMetaTileEntity().getOwnerUuid()); - wirelessDataStore.uploadData(Arrays.asList(dataPacket.getContent())); - uploadedSinceReset = true; + wirelessDataStore.uploadData(Arrays.asList(dataPacket.getContent()), aTick); } } } diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java index 30a417ae918..d3e52b97161 100644 --- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java +++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEDataBank.java @@ -41,7 +41,6 @@ import gregtech.api.util.IGTHatchAdder; import gregtech.api.util.MultiblockTooltipBuilder; import gregtech.common.WirelessComputationPacket; -import gregtech.common.WirelessDataStore; import tectech.Reference; import tectech.mechanics.dataTransport.InventoryDataPacket; import tectech.recipe.TTRecipeAdder; @@ -248,23 +247,6 @@ public final boolean addDataBankHatchToMachineList(IGregTechTileEntity aTileEnti return false; } - @Override - public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - super.onPreTick(aBaseMetaTileEntity, aTick); - // Every 200 ticks, clear wireless data store so hatches need to provide their data again in - // their onPostTick() call. This also happens every 200 ticks - if (mMachine && aBaseMetaTileEntity.isActive() && wirelessModeEnabled && aTick % 200 == 0) { - WirelessDataStore wirelessStore = WirelessDataStore - .getWirelessDataSticks(aBaseMetaTileEntity.getOwnerUuid()); - wirelessStore.clearData(); - - // After reset, clear uploadedSinceReset of all connected hatches - for (MTEHatchWirelessDataItemsOutput hatch : eWirelessStacksDataOutputs) { - hatch.uploadedSinceReset = false; - } - } - } - @Override public void onScrewdriverRightClick(ForgeDirection side, EntityPlayer aPlayer, float aX, float aY, float aZ) { if (getBaseMetaTileEntity().isServerSide()) { diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEEyeOfHarmony.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEEyeOfHarmony.java index bdbef3048e9..ef9d64a2167 100644 --- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEEyeOfHarmony.java +++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEEyeOfHarmony.java @@ -46,6 +46,7 @@ import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; @@ -63,6 +64,7 @@ import cpw.mods.fml.relauncher.SideOnly; import gregtech.api.enums.Materials; import gregtech.api.enums.MaterialsUEVplus; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; @@ -1849,4 +1851,10 @@ public void loadNBTData(final NBTTagCompound aNBT) { public boolean getDefaultHasMaintenanceChecks() { return false; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_EYE_OF_HARMONY_LOOP.resourceLocation; + } } diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEForgeOfGods.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEForgeOfGods.java index 4ced494b053..714e06f1782 100644 --- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEForgeOfGods.java +++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEForgeOfGods.java @@ -40,6 +40,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; @@ -83,6 +84,7 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.MaterialsUEVplus; import gregtech.api.enums.OrePrefixes; +import gregtech.api.enums.SoundResource; import gregtech.api.enums.Textures; import gregtech.api.gui.modularui.GTUITextures; import gregtech.api.interfaces.IHatchElement; @@ -3422,4 +3424,10 @@ public void loadNBTData(NBTTagCompound NBT) { public boolean getDefaultHasMaintenanceChecks() { return false; } + + @SideOnly(Side.CLIENT) + @Override + protected ResourceLocation getActivitySoundLoop() { + return SoundResource.GT_MACHINES_GOD_FORGE_LOOP.resourceLocation; + } } diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java b/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java index 25dd5f6ec67..4c57cbe3769 100644 --- a/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java +++ b/src/main/java/tectech/thing/metaTileEntity/multi/MTEQuantumComputer.java @@ -234,14 +234,6 @@ public void loadNBTData(NBTTagCompound aNBT) { } } - @Override - public void onPreTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { - super.onPreTick(aBaseMetaTileEntity, aTick); - if (aBaseMetaTileEntity.isServerSide() && wirelessModeEnabled && aTick % 20 == 0) { - WirelessComputationPacket.updatePacket(aBaseMetaTileEntity, aTick); - } - } - @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { super.onPostTick(aBaseMetaTileEntity, aTick); @@ -346,7 +338,7 @@ public void outputAfterRecipe_EM() { } for (MTEHatchDataOutput o : eOutputData) { - o.q = pack; + o.providePacket(pack); } } } @@ -570,7 +562,7 @@ public String[] getInfoData() { data.add("Wireless mode: " + EnumChatFormatting.GREEN + "enabled"); data.add( "Total wireless computation available: " + EnumChatFormatting.YELLOW - + wirelessComputationPacket.getTotalComputationStored()); + + wirelessComputationPacket.getAvailableComputationStored()); } else { data.add("Wireless mode: " + EnumChatFormatting.RED + "disabled"); } diff --git a/src/main/java/tectech/thing/metaTileEntity/multi/base/SoundLoopAnyBlock.java b/src/main/java/tectech/thing/metaTileEntity/multi/base/SoundLoopAnyBlock.java new file mode 100644 index 00000000000..15b08afb5cb --- /dev/null +++ b/src/main/java/tectech/thing/metaTileEntity/multi/base/SoundLoopAnyBlock.java @@ -0,0 +1,90 @@ +package tectech.thing.metaTileEntity.multi.base; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.MovingSound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; + +@SideOnly(Side.CLIENT) +public class SoundLoopAnyBlock extends MovingSound { + + private final boolean stopWhenBlockActive; + private final boolean stopWhenBlockInactive; + private final int worldID; + private boolean fadeOut = false; + private int tileX; + private int tileY; + private int tileZ; + private Block blockToTriggerEnd = null; + + /** + * Constructs a SoundLoopAnyBlock. + * + * @param soundResource the sound file location + * @param tileEntity the tile entity associated with this sound + * @param stopWhenActive flag to stop the sound when the block is active + * @param stopWhenInactive flag to stop the sound when the block is inactive + * @param offset positional offset for sound origin from the tile entity [x, y, z] + * @param blockCheck block that ends the sound when matched at the sound location + */ + public SoundLoopAnyBlock(ResourceLocation soundResource, IGregTechTileEntity tileEntity, boolean stopWhenActive, + boolean stopWhenInactive, int[] offset, Block blockCheck) { + super(soundResource); + this.stopWhenBlockActive = stopWhenActive; + this.stopWhenBlockInactive = stopWhenInactive; + tileX = tileEntity.getXCoord(); + tileY = tileEntity.getYCoord(); + tileZ = tileEntity.getZCoord(); + xPosF = tileX + offset[0]; + yPosF = tileY + offset[1]; + zPosF = tileZ + offset[2]; + worldID = tileEntity.getWorld().provider.dimensionId; + repeat = true; + volume = 0.0625f; + blockToTriggerEnd = blockCheck; + } + + @Override + public void update() { + if (donePlaying) { + return; + } + + if (fadeOut) { + volume -= 0.0625f; + if (volume <= 0) { + volume = 0; + donePlaying = true; + } + } else if (volume < 1) { + volume += 0.0625f; + } + + World world = Minecraft.getMinecraft().thePlayer.worldObj; + donePlaying = world.provider.dimensionId != worldID + || !world.checkChunksExist((int) xPosF, (int) yPosF, (int) zPosF, (int) xPosF, (int) yPosF, (int) zPosF); + + if (donePlaying) return; + + Block blockAtSoundLocation = world.getBlock((int) xPosF, (int) yPosF, (int) zPosF); + if (blockToTriggerEnd != null) { + donePlaying = blockAtSoundLocation == blockToTriggerEnd; + } + + if (donePlaying) return; + + TileEntity tile = world.getTileEntity(tileX, tileY, tileZ); + donePlaying = tile == null; + + if (donePlaying) return; + + // Adjust fading based on the activity state of the tile entity + fadeOut |= ((IGregTechTileEntity) tile).isActive() ? stopWhenBlockActive : stopWhenBlockInactive; + } +} diff --git a/src/main/resources/assets/gregtech/sounds.json b/src/main/resources/assets/gregtech/sounds.json index 612ce93fc41..3488cc83730 100644 --- a/src/main/resources/assets/gregtech/sounds.json +++ b/src/main/resources/assets/gregtech/sounds.json @@ -142,6 +142,15 @@ } ] }, + "machines.BlackHoleCompressorLoop": { + "category": "block", + "sounds": [ + { + "name": "BlackHoleCompressorLoop", + "stream": false + } + ] + }, "items.spraycan_shake": { "category": "player", "sounds": [ @@ -191,6 +200,186 @@ "license_name": "Attribution 3.0" } } + ] + }, + "machines.MTEPreciseAssembler": { + "category": "block", + "sounds": [ + { + "name": "MTEPreciseAssembler", + "stream": false + } + ] + }, + "machines.MTEIndustrialWashPlant": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialWashPlant", + "stream": false + } + ] + }, + "machines.MTEMegaVacuumFreezer": { + "category": "block", + "sounds": [ + { + "name": "MTEMegaVacuumFreezer", + "stream": false + } + ] + }, + "machines.MTEVacuumFreezer": { + "category": "block", + "sounds": [ + { + "name": "MTEVacuumFreezer", + "stream": false + } + ] + }, + "machines.MTEExtremeEntityCrusher": { + "category": "block", + "sounds": [ + { + "name": "MTEExtremeEntityCrusher", + "stream": false + } + ] + }, + "machines.MTEIndustrialCuttingMachine": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialCuttingMachine", + "stream": false + } + ] + }, + "machines.MTEIndustrialArcFurnace": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialArcFurnace", + "stream": false + } + ] + }, + "machines.MTEMegaIndustrialApiary": { + "category": "block", + "sounds": [ + { + "name": "MTEMegaIndustrialApiary", + "stream": false + } + ] + }, + "machines.MTEAlgaePondBase": { + "category": "block", + "sounds": [ + { + "name": "MTEAlgaePondBase", + "stream": false + } + ] + }, + "machines.MTEIndustrialThermalCentrifuge": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialThermalCentrifuge", + "stream": false + } + ] + }, + "machines.MTEIndustrialSifter": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialSifter", + "stream": false + } + ] + }, + "machines.MTEElectricBlastFurnace": { + "category": "block", + "sounds": [ + { + "name": "MTEElectricBlastFurnace", + "stream": false + } + ] + }, + "machines.MTEIndustrialVacuumFreezer": { + "category": "block", + "sounds": [ + { + "name": "MTEIndustrialVacuumFreezer", + "stream": false + } + ] + }, + "machines.MTEForgeOfGods": { + "category": "block", + "sounds": [ + { + "name": "MTEForgeOfGods", + "stream": false + } + ] + }, + "machines.MTEMegaBlastFurnace": { + "category": "block", + "sounds": [ + { + "name": "MTEMegaBlastFurnace", + "stream": false + } + ] + }, + "machines.MTEOilDrillBase": { + "category": "block", + "sounds": [ + { + "name": "MTEOilDrillBase", + "stream": false + } + ] + }, + "machines.MTEQuantumForceTransformer": { + "category": "block", + "sounds": [ + { + "name": "MTEQuantumForceTransformer", + "stream": false + } + ] + }, + "machines.MTEAdvEBF": { + "category": "block", + "sounds": [ + { + "name": "MTEAdvEBF", + "stream": false + } + ] + }, + "machines.MTELargeTurbine": { + "category": "block", + "sounds": [ + { + "name": "MTELargeTurbine", + "stream": false + } + ] + }, + "machines.MTEEyeOfHarmony": { + "category": "block", + "sounds": [ + { + "name": "MTEEyeOfHarmony", + "stream": false + } ] } } diff --git a/src/main/resources/assets/gregtech/sounds/BlackHoleCompressorLoop.ogg b/src/main/resources/assets/gregtech/sounds/BlackHoleCompressorLoop.ogg new file mode 100644 index 00000000000..b2692e95318 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/BlackHoleCompressorLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEAdvEBF.ogg b/src/main/resources/assets/gregtech/sounds/MTEAdvEBF.ogg new file mode 100644 index 00000000000..6b6a2da2e2f Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEAdvEBF.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEAlgaePondBase.ogg b/src/main/resources/assets/gregtech/sounds/MTEAlgaePondBase.ogg new file mode 100644 index 00000000000..b12e04941f7 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEAlgaePondBase.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEElectricBlastFurnace.ogg b/src/main/resources/assets/gregtech/sounds/MTEElectricBlastFurnace.ogg new file mode 100644 index 00000000000..0475d653d0b Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEElectricBlastFurnace.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEExtremeEntityCrusher.ogg b/src/main/resources/assets/gregtech/sounds/MTEExtremeEntityCrusher.ogg new file mode 100644 index 00000000000..c87d1292742 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEExtremeEntityCrusher.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEEyeOfHarmony.ogg b/src/main/resources/assets/gregtech/sounds/MTEEyeOfHarmony.ogg new file mode 100644 index 00000000000..f4e4e82eb1e Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEEyeOfHarmony.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEForgeOfGods.ogg b/src/main/resources/assets/gregtech/sounds/MTEForgeOfGods.ogg new file mode 100644 index 00000000000..b026ed72cdd Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEForgeOfGods.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialArcFurnace.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialArcFurnace.ogg new file mode 100644 index 00000000000..2e16bb9a6e3 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialArcFurnace.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialCuttingMachine.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialCuttingMachine.ogg new file mode 100644 index 00000000000..040c58bdd5b Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialCuttingMachine.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialSifter.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialSifter.ogg new file mode 100644 index 00000000000..68a1876db71 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialSifter.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialThermalCentrifuge.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialThermalCentrifuge.ogg new file mode 100644 index 00000000000..0cd4c34f422 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialThermalCentrifuge.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialVacuumFreezer.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialVacuumFreezer.ogg new file mode 100644 index 00000000000..635434cc636 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialVacuumFreezer.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEIndustrialWashPlant.ogg b/src/main/resources/assets/gregtech/sounds/MTEIndustrialWashPlant.ogg new file mode 100644 index 00000000000..11c0b12606f Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEIndustrialWashPlant.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTELargeTurbine.ogg b/src/main/resources/assets/gregtech/sounds/MTELargeTurbine.ogg new file mode 100644 index 00000000000..a5dfde3367e Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTELargeTurbine.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEMegaBlastFurnace.ogg b/src/main/resources/assets/gregtech/sounds/MTEMegaBlastFurnace.ogg new file mode 100644 index 00000000000..22c898f1243 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEMegaBlastFurnace.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEMegaIndustrialApiary.ogg b/src/main/resources/assets/gregtech/sounds/MTEMegaIndustrialApiary.ogg new file mode 100644 index 00000000000..a691c6d0be6 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEMegaIndustrialApiary.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEMegaVacuumFreezer.ogg b/src/main/resources/assets/gregtech/sounds/MTEMegaVacuumFreezer.ogg new file mode 100644 index 00000000000..13516e532ac Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEMegaVacuumFreezer.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEOilDrillBase.ogg b/src/main/resources/assets/gregtech/sounds/MTEOilDrillBase.ogg new file mode 100644 index 00000000000..727327120a2 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEOilDrillBase.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEPreciseAssembler.ogg b/src/main/resources/assets/gregtech/sounds/MTEPreciseAssembler.ogg new file mode 100644 index 00000000000..2671617f74b Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEPreciseAssembler.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEQuantumForceTransformer.ogg b/src/main/resources/assets/gregtech/sounds/MTEQuantumForceTransformer.ogg new file mode 100644 index 00000000000..f003ed33a86 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEQuantumForceTransformer.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MTEVacuumFreezer.ogg b/src/main/resources/assets/gregtech/sounds/MTEVacuumFreezer.ogg new file mode 100644 index 00000000000..87d7ea2d820 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MTEVacuumFreezer.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiAlgaeFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiAlgaeFLoop.ogg new file mode 100644 index 00000000000..d8646d75466 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiAlgaeFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiArcFurnaceFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiArcFurnaceFLoop.ogg new file mode 100644 index 00000000000..fd75c4823df Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiArcFurnaceFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiCuttingMachineFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiCuttingMachineFLoop.ogg new file mode 100644 index 00000000000..2dbf708e8da Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiCuttingMachineFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiExtremeEntityCrusherFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiExtremeEntityCrusherFLoop.ogg new file mode 100644 index 00000000000..426472a14b8 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiExtremeEntityCrusherFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiEyeOfHarmonyFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiEyeOfHarmonyFLoop.ogg new file mode 100644 index 00000000000..0cec247dc4b Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiEyeOfHarmonyFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiMegaIndustrialApiaryFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiMegaIndustrialApiaryFLoop.ogg new file mode 100644 index 00000000000..bc3ad1828be Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiMegaIndustrialApiaryFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiMegaVacuumFreezerLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiMegaVacuumFreezerLoop.ogg new file mode 100644 index 00000000000..ece8bd9533c Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiMegaVacuumFreezerLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiOreWasherPlant.ogg b/src/main/resources/assets/gregtech/sounds/MultiOreWasherPlant.ogg new file mode 100644 index 00000000000..e800143c7de Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiOreWasherPlant.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiPreciseLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiPreciseLoop.ogg new file mode 100644 index 00000000000..ff5ab0ee893 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiPreciseLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiSifterFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiSifterFLoop.ogg new file mode 100644 index 00000000000..c47ec2bca36 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiSifterFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiThermalCentrifugeFLoop.ogg b/src/main/resources/assets/gregtech/sounds/MultiThermalCentrifugeFLoop.ogg new file mode 100644 index 00000000000..8243416eab7 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiThermalCentrifugeFLoop.ogg differ diff --git a/src/main/resources/assets/gregtech/sounds/MultiVacuumFreezer.ogg b/src/main/resources/assets/gregtech/sounds/MultiVacuumFreezer.ogg new file mode 100644 index 00000000000..9cfaf245e57 Binary files /dev/null and b/src/main/resources/assets/gregtech/sounds/MultiVacuumFreezer.ogg differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/FirePit/Firepit.tcn b/src/main/resources/assets/miscutils/textures/blocks/FirePit/Firepit.tcn deleted file mode 100644 index 453b7325c8b..00000000000 Binary files a/src/main/resources/assets/miscutils/textures/blocks/FirePit/Firepit.tcn and /dev/null differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png new file mode 100644 index 00000000000..6514089c64a Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png.mcmeta new file mode 100644 index 00000000000..cba1c432712 --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulator.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":2, + "frames": [0,1,2,3,4,5,6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulatorStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulatorStatic.png new file mode 100644 index 00000000000..29b3a74f342 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricManipulatorStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png new file mode 100644 index 00000000000..14b5e673d09 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png.mcmeta new file mode 100644 index 00000000000..10cf8c6afdf --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCore.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCoreStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCoreStatic.png new file mode 100644 index 00000000000..53e0e51c068 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/CosmicFabricShieldingCoreStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/ForceField.png b/src/main/resources/assets/miscutils/textures/blocks/qft/ForceField.png new file mode 100644 index 00000000000..32254623d1f Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/ForceField.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/ForceFieldGlass.png b/src/main/resources/assets/miscutils/textures/blocks/qft/ForceFieldGlass.png new file mode 100644 index 00000000000..ad6502026ed Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/ForceFieldGlass.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png new file mode 100644 index 00000000000..c5d7fe80b29 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png.mcmeta new file mode 100644 index 00000000000..b0c531fa791 --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulator.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulatorStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulatorStatic.png new file mode 100644 index 00000000000..40d9b8f31be Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedManipulatorStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png new file mode 100644 index 00000000000..4e2e761fa82 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png.mcmeta new file mode 100644 index 00000000000..9720a238668 --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCore.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCoreStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCoreStatic.png new file mode 100644 index 00000000000..c822112126a Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/InfinityInfusedShieldingCoreStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/Manipulator_Top.png b/src/main/resources/assets/miscutils/textures/blocks/qft/Manipulator_Top.png new file mode 100644 index 00000000000..2a5b8aec95d Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/Manipulator_Top.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png new file mode 100644 index 00000000000..97c32e5988d Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png.mcmeta new file mode 100644 index 00000000000..cba1c432712 --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulator.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":2, + "frames": [0,1,2,3,4,5,6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulatorStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulatorStatic.png new file mode 100644 index 00000000000..29b3a74f342 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronPulseManipulatorStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png new file mode 100644 index 00000000000..9c14ae0abf8 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png.mcmeta new file mode 100644 index 00000000000..163c81b6a1c --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCore.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCoreStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCoreStatic.png new file mode 100644 index 00000000000..d4cd1c1dee6 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/NeutronShieldingCoreStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png new file mode 100644 index 00000000000..bb8bee0ce77 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png.mcmeta new file mode 100644 index 00000000000..163c81b6a1c --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCore.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCoreStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCoreStatic.png new file mode 100644 index 00000000000..ca38aad14f7 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeBendingCoreStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png new file mode 100644 index 00000000000..bb21d8af985 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png.mcmeta b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png.mcmeta new file mode 100644 index 00000000000..c8988534a9b --- /dev/null +++ b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipper.png.mcmeta @@ -0,0 +1,6 @@ +{ + "animation":{ + "frametime":1, + "frames": [0,1,2,3,4,5,6,7] + } +} \ No newline at end of file diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipperStatic.png b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipperStatic.png new file mode 100644 index 00000000000..c54c56daaf6 Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/SpaceTimeContinuumRipperStatic.png differ diff --git a/src/main/resources/assets/miscutils/textures/blocks/qft/forceFieldGlassTop.png b/src/main/resources/assets/miscutils/textures/blocks/qft/forceFieldGlassTop.png new file mode 100644 index 00000000000..97dbb4049ee Binary files /dev/null and b/src/main/resources/assets/miscutils/textures/blocks/qft/forceFieldGlassTop.png differ