diff --git a/dependencies.gradle b/dependencies.gradle index 0b36f617..513ed1d5 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -34,11 +34,11 @@ * For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph */ dependencies { - api('com.github.GTNewHorizons:NotEnoughItems:2.8.48-GTNH:dev') - api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-811-GTNH:dev') + api('com.github.GTNewHorizons:NotEnoughItems:2.8.60-GTNH:dev') + api('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-817-GTNH:dev') api('curse.maven:cofh-core-69162:2388751') - api('com.github.GTNewHorizons:waila:1.9.15:dev') - api("com.github.GTNewHorizons:GTNHLib:0.8.41:dev") + api('com.github.GTNewHorizons:waila:1.19.21:dev') + api("com.github.GTNewHorizons:GTNHLib:0.9.10:dev") implementation("com.github.GTNewHorizons:WirelessCraftingTerminal:1.12.12:dev") { exclude group: 'com.github.GTNewHorizons', module: 'Applied-Energistics-2-Unofficial' @@ -47,16 +47,16 @@ dependencies { compileOnly('com.github.GTNewHorizons:Baubles-Expanded:2.2.6-GTNH:dev') compileOnly('com.github.GTNewHorizons:ExtraCells2:2.5.35:dev') { transitive = false } compileOnly('com.github.GTNewHorizons:ForestryMC:4.11.4:dev') - compileOnly('com.github.GTNewHorizons:EnderIO:2.10.12:dev') - compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.179:dev') { + compileOnly('com.github.GTNewHorizons:EnderIO:2.10.15:dev') + compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.258:dev') { exclude group: 'com.github.GTNewHorizons', module: 'AE2FluidCraft-Rework' exclude group: 'com.github.GTNewHorizons', module: 'Applied-Energistics-2-Unofficial' } compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') compileOnly('com.gregoriust.gregtech:gregtech_1.7.10:6.14.23:dev') { transitive = false } - compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.9-GTNH:dev') { transitive = false } - compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.7.18-GTNH:dev') { transitive = false } + compileOnly('com.github.GTNewHorizons:OpenComputers:1.12.16-GTNH:dev') { transitive = false } + compileOnly('com.github.GTNewHorizons:ThaumicEnergistics:1.7.27-GTNH:dev') { transitive = false } runtimeOnlyNonPublishable("com.github.GTNewHorizons:DuraDisplay:1.4.0:dev") } diff --git a/gradle.properties b/gradle.properties index 8cfe02e3..26bdabdc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -39,14 +39,34 @@ remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/co # `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE. developmentEnvironmentUserName = Developer -# Enables using modern Java syntax (up to version 17) via Jabel, while still targeting JVM 8. -# See https://github.com/bsideup/jabel for details on how this works. -enableModernJavaSyntax = true +# Enables modern Java syntax support. Valid values: +# - false: No modern syntax, Java 8 only +# - jabel: Jabel syntax-only support, compiles to J8 bytecode +# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs) +# - modern: Native modern Java bytecode, no downgrading +enableModernJavaSyntax = jabel # If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues, # and should *not* be used in most situations. -1 disables this. # forceToolchainVersion = -1 +# Target JVM version for JVM Downgrader bytecode downgrading. +# Only used when enableModernJavaSyntax = jvmDowngrader +# downgradeTargetVersion = 8 + +# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only). +# Classes will be available in META-INF/versions/N/ for each version N in this list. +# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade). +# jvmDowngraderMultiReleaseVersions = 21,25 + +# Specifies how JVM Downgrader API stubs are provided. Options: +# - shade: Shade minimized stubs into the jar +# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint) +# - external: Another dependency provides stubs (no constraint, no warning) +# - (empty): Warning reminding you to configure stubs +# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md +# jvmDowngraderStubsProvider = + # Enables injecting missing generics into the decompiled source code for a better coding experience. # Turns most publicly visible List, Map, etc. into proper List, Map types. enableGenericInjection = true @@ -108,7 +128,7 @@ mixinsPackage = # Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin! # This parameter is for legacy compatibility only # Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin -coreModClass = coremod.FluidCraftCore +coreModClass = # If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class # that is annotated with @Mod) you want this to be true. When in doubt: leave it on false! diff --git a/settings.gradle b/settings.gradle index 9ce4966b..23a58cee 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.7' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.19' } diff --git a/src/main/java/com/glodblock/github/FluidCraft.java b/src/main/java/com/glodblock/github/FluidCraft.java index 706ce9da..90d7aaa6 100644 --- a/src/main/java/com/glodblock/github/FluidCraft.java +++ b/src/main/java/com/glodblock/github/FluidCraft.java @@ -6,7 +6,6 @@ import com.glodblock.github.common.Config; import com.glodblock.github.crossmod.opencomputers.OCDriverInit; import com.glodblock.github.crossmod.waila.WailaInit; import com.glodblock.github.inventory.InventoryHandler; -import com.glodblock.github.loader.CalculatorV2PluginLoader; import com.glodblock.github.loader.ChannelLoader; import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.loader.RecipeLoader; @@ -74,10 +73,6 @@ public class FluidCraft { RecipeLoader.runTerminalRecipe(); RecipeLoader.addDisassembleRecipe(); - if (ModAndClassUtil.isV2) { - CalculatorV2PluginLoader.installCalculatorV2Plugins(); - } - proxy.postInit(event); } diff --git a/src/main/java/com/glodblock/github/api/FluidCraftAPI.java b/src/main/java/com/glodblock/github/api/FluidCraftAPI.java index 00396424..b8dcd2c6 100644 --- a/src/main/java/com/glodblock/github/api/FluidCraftAPI.java +++ b/src/main/java/com/glodblock/github/api/FluidCraftAPI.java @@ -6,7 +6,7 @@ import java.util.Set; import net.minecraftforge.fluids.Fluid; import com.glodblock.github.api.registries.ILevelTerminalRegistry; -import com.glodblock.github.coremod.registries.LevelTerminalRegistry; +import com.glodblock.github.util.LevelTerminalRegistry; public final class FluidCraftAPI implements IFluidCraftAPI { diff --git a/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java b/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java index acd90762..f5c78a3f 100644 --- a/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java +++ b/src/main/java/com/glodblock/github/client/gui/GuiLevelMaintainer.java @@ -24,6 +24,7 @@ import com.glodblock.github.util.NameConst; import appeng.api.features.LevelState; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.client.gui.GuiSub; import appeng.client.gui.slots.VirtualMEPhantomSlot; import appeng.client.gui.widgets.GuiTabButton; @@ -61,7 +62,8 @@ public class GuiLevelMaintainer extends GuiSub { 27, 20 + i * 19, this.cont.getTile().getAEStackInventory(), - i); + i, + GuiLevelMaintainer::acceptType); slot.setShowAmount(true); slot.setShowAmountAlways(true); this.registerVirtualSlots(slot); @@ -193,6 +195,10 @@ public class GuiLevelMaintainer extends GuiSub { component[index].setState(state); } + private static boolean acceptType(VirtualMEPhantomSlot slot, IAEStackType type, int mouseButton) { + return true; + } + private class Component { public boolean isEnable = false; diff --git a/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelTerminal.java b/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelTerminal.java index 40d65816..78c2caf8 100644 --- a/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelTerminal.java +++ b/src/main/java/com/glodblock/github/client/gui/container/ContainerLevelTerminal.java @@ -16,12 +16,12 @@ import org.jetbrains.annotations.Nullable; import com.glodblock.github.FluidCraft; import com.glodblock.github.client.gui.container.base.FCBaseContainer; import com.glodblock.github.common.parts.PartLevelTerminal; -import com.glodblock.github.coremod.registries.LevelTerminalRegistry; import com.glodblock.github.inventory.gui.GuiType; import com.glodblock.github.inventory.item.IWirelessTerminal; import com.glodblock.github.loader.ItemAndBlockHolder; import com.glodblock.github.network.SPacketLevelTerminalUpdate; import com.glodblock.github.util.FluidPrimaryGui; +import com.glodblock.github.util.LevelTerminalRegistry; import appeng.api.features.ILevelViewable; import appeng.api.features.LevelItemInfo; diff --git a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java index 5ba2b702..9a11153e 100644 --- a/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java +++ b/src/main/java/com/glodblock/github/common/item/FCBaseItemCell.java @@ -1,12 +1,16 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.common.storage.CellType; import com.glodblock.github.loader.ItemAndBlockHolder; import com.google.common.base.Optional; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.items.AEBaseCell; import appeng.util.Platform; @@ -24,8 +28,8 @@ public abstract class FCBaseItemCell extends AEBaseCell { } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } public FCBaseItemCell(Optional subName) { diff --git a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java index 4e6d0887..30d954e3 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemCreativeFluidStorageCell.java @@ -1,17 +1,24 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import java.util.EnumSet; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.IMEInventoryHandler; +import appeng.api.storage.data.IAEStackType; import appeng.core.features.AEFeature; import appeng.items.AEBaseInfiniteCell; +import appeng.me.storage.CreativeCellInventory; +import appeng.me.storage.FluidCellInventoryHandler; import cpw.mods.fml.common.registry.GameRegistry; public class ItemCreativeFluidStorageCell extends AEBaseInfiniteCell @@ -42,7 +49,12 @@ public class ItemCreativeFluidStorageCell extends AEBaseInfiniteCell } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; + } + + @Override + public IMEInventoryHandler getCellInventory(ItemStack stack) { + return new FluidCellInventoryHandler(new CreativeCellInventory<>(stack)); } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java b/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java index ae9dde55..e8185fb3 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidConversionMonitor.java @@ -3,9 +3,11 @@ package com.glodblock.github.common.item; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.textures.FCPartsTexture; import com.glodblock.github.common.parts.PartFluidConversionMonitor; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.util.NameConst; @@ -37,6 +39,11 @@ public class ItemFluidConversionMonitor extends FCBaseItem implements IPartItem return this; } + @Override + public IIcon getIconIndex(ItemStack p_77650_1_) { + return FCPartsTexture.PartTerminalBroad.getIcon(); + } + public void registerIcons(IIconRegister _iconRegister) {} @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java index c5d0b33f..4c1c4730 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidStorageMonitor.java @@ -3,9 +3,11 @@ package com.glodblock.github.common.item; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; import net.minecraft.world.World; import com.glodblock.github.FluidCraft; +import com.glodblock.github.client.textures.FCPartsTexture; import com.glodblock.github.common.parts.PartFluidStorageMonitor; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.util.NameConst; @@ -37,6 +39,11 @@ public class ItemFluidStorageMonitor extends FCBaseItem implements IPartItem { return this; } + @Override + public IIcon getIconIndex(ItemStack p_77650_1_) { + return FCPartsTexture.PartTerminalBroad.getIcon(); + } + public void registerIcons(IIconRegister _iconRegister) {} @SideOnly(Side.CLIENT) diff --git a/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java index 599630dd..0ea3443b 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemFluidVoidStorageCell.java @@ -1,11 +1,13 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.items.storage.ItemVoidStorageCell; import cpw.mods.fml.common.registry.GameRegistry; @@ -25,7 +27,7 @@ public class ItemFluidVoidStorageCell extends ItemVoidStorageCell implements IRe } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java index f0646c9e..b341c7a3 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemInfinityWaterStorageCell.java @@ -1,20 +1,26 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; import static com.glodblock.github.util.Util.FluidUtil.water_bucket; import java.util.EnumSet; import net.minecraft.item.ItemStack; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.common.tabs.FluidCraftingTabs; import com.glodblock.github.loader.IRegister; import com.glodblock.github.util.NameConst; import com.glodblock.github.util.Util; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.IMEInventoryHandler; +import appeng.api.storage.data.IAEStackType; import appeng.core.features.AEFeature; import appeng.items.AEBaseInfiniteCell; +import appeng.me.storage.CreativeCellInventory; +import appeng.me.storage.FluidCellInventoryHandler; import appeng.tile.inventory.IAEStackInventory; import cpw.mods.fml.common.registry.GameRegistry; @@ -62,7 +68,12 @@ public class ItemInfinityWaterStorageCell extends AEBaseInfiniteCell } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; + } + + @Override + public IMEInventoryHandler getCellInventory(ItemStack stack) { + return new FluidCellInventoryHandler(new CreativeCellInventory<>(stack)); } } diff --git a/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java b/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java index 0dc7863e..d40f9c7e 100644 --- a/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java +++ b/src/main/java/com/glodblock/github/common/item/ItemPortableFluidCell.java @@ -1,5 +1,7 @@ package com.glodblock.github.common.item; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import java.util.List; import net.minecraft.client.gui.GuiScreen; @@ -9,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; import net.minecraft.world.World; +import org.jetbrains.annotations.NotNull; + import com.glodblock.github.FluidCraft; import com.glodblock.github.api.FluidCraftAPI; import com.glodblock.github.common.tabs.FluidCraftingTabs; @@ -17,9 +21,9 @@ import com.glodblock.github.util.NameConst; import com.glodblock.github.util.RenderUtil; import appeng.api.implementations.guiobjects.IGuiItemObject; -import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.items.AEBasePortableCell; import appeng.items.contents.CellUpgrades; import appeng.items.contents.PortableCellViewer; @@ -79,12 +83,12 @@ public class ItemPortableFluidCell extends AEBasePortableCell implements IRegist @Override public IGuiItemObject getGuiObject(final ItemStack is, final World w, final EntityPlayer p, final int x, final int y, final int z) { - return new PortableCellViewer(is, x, StorageChannel.FLUIDS); + return new PortableCellViewer(is, x, FLUID_STACK_TYPE); } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public @NotNull IAEStackType getStackType() { + return FLUID_STACK_TYPE; } @Override diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java b/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java index a92043c5..29918c6a 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidConversionMonitor.java @@ -1,157 +1,28 @@ package com.glodblock.github.common.parts; -import java.util.Collections; -import java.util.List; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Vec3; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidContainerItem; +import net.minecraft.nbt.NBTTagCompound; -import org.apache.commons.lang3.tuple.MutablePair; +import appeng.parts.reporting.PartConversionMonitor; -import com.glodblock.github.common.item.ItemFluidPacket; -import com.glodblock.github.util.Util; - -import appeng.api.config.Actionable; -import appeng.api.networking.energy.IEnergySource; -import appeng.api.networking.security.PlayerSource; -import appeng.api.storage.IMEMonitor; -import appeng.api.storage.data.IAEFluidStack; -import appeng.me.GridAccessException; -import appeng.util.InventoryAdaptor; -import appeng.util.Platform; - -public class PartFluidConversionMonitor extends PartFluidStorageMonitor { +public class PartFluidConversionMonitor extends PartConversionMonitor { public PartFluidConversionMonitor(ItemStack is) { super(is); } @Override - public boolean onPartShiftActivate(final EntityPlayer player, final Vec3 pos) { - if (Platform.isClient()) { - return true; - } - - if (!this.getProxy().isActive()) { - return false; - } - - if (!Platform.hasPermissions(this.getLocation(), player)) { - return false; - } - FluidStack fluidStack; - ItemStack item = player.getCurrentEquippedItem(); - if (item != null && item.getItem() instanceof ItemFluidPacket) { - fluidStack = ItemFluidPacket.getFluidStack(item); - } else { - fluidStack = Util.FluidUtil.getFluidFromContainer(item); - } - if (this.getDisplayed() == null || fluidStack == null - || fluidStack.getFluid() != ((IAEFluidStack) this.getDisplayed()).getFluid()) { - return false; - } - - try { - if (!this.getProxy().isActive()) { - return false; + public void readFromNBT(NBTTagCompound data) { + // Migrate old tag + if (data.hasKey("configuredItem")) { + final NBTTagCompound myItem = data.getCompoundTag("configuredItem"); + if (!myItem.hasNoTags() && !myItem.hasKey("StackType")) { + myItem.setString("StackType", FLUID_STACK_TYPE.getId()); } - final IEnergySource energy = this.getProxy().getEnergy(); - final IMEMonitor cell = this.getProxy().getStorage().getFluidInventory(); - final IAEFluidStack input = (IAEFluidStack) this.getDisplayed().copy().setStackSize(fluidStack.amount); - final IAEFluidStack failedToInsert = Platform - .poweredInsert(energy, cell, input, new PlayerSource(player, this)); - if (failedToInsert != null && failedToInsert.getStackSize() == input.getStackSize()) { - return false; - } else if (failedToInsert == null || failedToInsert.getStackSize() != input.getStackSize()) { - if (item.getItem() instanceof ItemFluidPacket) { - if (failedToInsert != null) { - player.getCurrentEquippedItem() - .setTagCompound(ItemFluidPacket.newStack(failedToInsert).getTagCompound()); - return true; - } - } else { - ItemStack tmp = item.copy(); - tmp.stackSize = 1; - ItemStack tank = null; - if (failedToInsert == null) { - tank = Util.FluidUtil.clearFluid(tmp); - } else { - if (tmp.getItem() instanceof IFluidContainerItem) { - tank = Util.FluidUtil.setFluidContainerAmount(tmp, (int) failedToInsert.getStackSize()); - } else if (FluidContainerRegistry.isContainer(tmp)) { - IAEFluidStack insertedFluid = input.copy(); - insertedFluid.decStackSize(failedToInsert.getStackSize()); - this.getProxy().getStorage().getFluidInventory() - .extractItems(insertedFluid, Actionable.MODULATE, new PlayerSource(player, this)); - return false; - } - } - if (tank != null && !player.inventory.addItemStackToInventory(tank)) { - player.entityDropItem(tank, 0); - } - } - item.stackSize--; - if (item.stackSize <= 0) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - } - } - - } catch (final GridAccessException ignored) {} - return true; - } - - @Override - protected void extractItem(final EntityPlayer player) { - final IAEFluidStack input = (IAEFluidStack) this.getDisplayed(); - ItemStack eq = player.getCurrentEquippedItem(); - if (input != null && Util.FluidUtil.isFluidContainer(eq) && Util.FluidUtil.isEmpty(eq)) { - try { - if (!this.getProxy().isActive()) { - return; - } - - final IEnergySource energy = this.getProxy().getEnergy(); - final IMEMonitor cell = this.getProxy().getStorage().getFluidInventory(); - ItemStack tank = eq.copy(); - tank.stackSize = 1; - MutablePair fillStack = Util.FluidUtil.fillStack(tank, input.getFluidStack()); - input.setStackSize(fillStack.left); - - final IAEFluidStack retrieved = Platform - .poweredExtraction(energy, cell, input, new PlayerSource(player, this)); - if (retrieved != null) { - if (!player.inventory.addItemStackToInventory(fillStack.right)) { - player.entityDropItem(fillStack.right.copy(), 0); - } - eq.stackSize--; - if (eq.stackSize <= 0) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - } - final InventoryAdaptor adaptor = InventoryAdaptor.getAdaptor(player, ForgeDirection.UNKNOWN); - ItemStack newItems = adaptor.addItems( - Util.FluidUtil.setFluidContainerAmount(fillStack.right, (int) retrieved.getStackSize())); - if (newItems != null) { - final TileEntity te = this.getTile(); - final List list = Collections.singletonList(newItems); - Platform.spawnDrops( - player.worldObj, - te.xCoord + this.getSide().offsetX, - te.yCoord + this.getSide().offsetY, - te.zCoord + this.getSide().offsetZ, - list); - } - - if (player.openContainer != null) { - player.openContainer.detectAndSendChanges(); - } - } - } catch (final GridAccessException ignored) {} } + + super.readFromNBT(data); } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java index ce172c06..7e96706f 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidExportBus.java @@ -1,5 +1,7 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; @@ -15,6 +17,7 @@ import appeng.api.storage.StorageName; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.me.GridAccessException; import appeng.parts.automation.PartBaseExportBus; import appeng.tile.inventory.IAEStackInventory; @@ -72,11 +75,11 @@ public class PartFluidExportBus extends PartBaseExportBus { } @Override - protected void doFuzzy(IAEFluidStack aes, FuzzyMode fzMode, InventoryAdaptor destination, IEnergyGrid energy, + protected void doFuzzy(IAEFluidStack aes, FuzzyMode fzMode, IEnergyGrid energy, IMEMonitor gridInv) {} @Override - protected void doOreDict(InventoryAdaptor destination, IEnergyGrid energy, IMEMonitor gridInv) {} + protected void doOreDict(IEnergyGrid energy, IMEMonitor gridInv) {} // legacy @Override @@ -91,4 +94,9 @@ public class PartFluidExportBus extends PartBaseExportBus { } } } + + @Override + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; + } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java index c01637cd..6104cb4a 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidImportBus.java @@ -1,16 +1,16 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; -import net.minecraft.world.World; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; import com.glodblock.github.client.textures.FCPartsTexture; -import com.glodblock.github.util.BlockPos; import com.glodblock.github.util.Util; import appeng.api.config.Actionable; @@ -23,6 +23,7 @@ import appeng.api.storage.StorageName; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IAEStackType; import appeng.me.GridAccessException; import appeng.parts.automation.PartBaseImportBus; import appeng.tile.inventory.IAEStackInventory; @@ -42,18 +43,14 @@ public class PartFluidImportBus extends PartBaseImportBus { @Override protected Object getTarget() { - TileEntity self = this.getHost().getTile(); - return this.getTileEntity(self, (new BlockPos(self)).getOffSet(this.getSide())); - } + final TileEntity self = this.getHost().getTile(); + final TileEntity target = this.getTileEntity( + self, + self.xCoord + this.getSide().offsetX, + self.yCoord + this.getSide().offsetY, + self.zCoord + this.getSide().offsetZ); - private TileEntity getTileEntity(final TileEntity self, final BlockPos pos) { - final World w = self.getWorldObj(); - - if (w.getChunkProvider().chunkExists(pos.getX() >> 4, pos.getZ() >> 4)) { - return w.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); - } - - return null; + return target instanceof IFluidHandler handler ? handler : null; } @Override @@ -91,6 +88,11 @@ public class PartFluidImportBus extends PartBaseImportBus { } } + @Override + protected int getAdaptorFlags() { + return InventoryAdaptor.ALLOW_FLUIDS | InventoryAdaptor.FOR_EXTRACTS; + } + @Override protected boolean importStuff(final Object myTarget, final IAEFluidStack whatToImport, final IMEMonitor inv, final IEnergySource energy, final FuzzyMode fzMode) { @@ -173,7 +175,7 @@ public class PartFluidImportBus extends PartBaseImportBus { } @Override - protected int getAdaptorFlags() { - return InventoryAdaptor.ALLOW_FLUIDS | InventoryAdaptor.FOR_EXTRACTS; + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java index 702367ac..30fe136d 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageBus.java @@ -1,8 +1,10 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; -import appeng.api.storage.StorageChannel; +import appeng.api.storage.data.IAEStackType; import appeng.parts.misc.PartStorageBus; public class PartFluidStorageBus extends PartStorageBus { @@ -12,7 +14,7 @@ public class PartFluidStorageBus extends PartStorageBus { } @Override - public StorageChannel getStorageChannel() { - return StorageChannel.FLUIDS; + public IAEStackType getStackType() { + return FLUID_STACK_TYPE; } } diff --git a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java index 25089861..f20a74e9 100644 --- a/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java +++ b/src/main/java/com/glodblock/github/common/parts/PartFluidStorageMonitor.java @@ -1,36 +1,28 @@ package com.glodblock.github.common.parts; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; + import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; -import com.glodblock.github.common.parts.base.FCPartMonitor; +import appeng.parts.reporting.PartStorageMonitor; -import appeng.client.texture.CableBusTextures; -import appeng.helpers.Reflected; +public class PartFluidStorageMonitor extends PartStorageMonitor { -public class PartFluidStorageMonitor extends FCPartMonitor { - - private static final CableBusTextures FRONT_BRIGHT_ICON = CableBusTextures.PartStorageMonitor_Bright; - private static final CableBusTextures FRONT_DARK_ICON = CableBusTextures.PartStorageMonitor_Dark; - private static final CableBusTextures FRONT_COLORED_ICON = CableBusTextures.PartStorageMonitor_Colored; - private static final CableBusTextures FRONT_COLORED_ICON_LOCKED = CableBusTextures.PartStorageMonitor_Colored_Locked; - - @Reflected - public PartFluidStorageMonitor(final ItemStack is) { + public PartFluidStorageMonitor(ItemStack is) { super(is); } @Override - public CableBusTextures getFrontBright() { - return FRONT_BRIGHT_ICON; - } + public void readFromNBT(NBTTagCompound data) { + // Migrate old tag + if (data.hasKey("configuredItem")) { + final NBTTagCompound myItem = data.getCompoundTag("configuredItem"); + if (!myItem.hasNoTags() && !myItem.hasKey("StackType")) { + myItem.setString("StackType", FLUID_STACK_TYPE.getId()); + } + } - @Override - public CableBusTextures getFrontColored() { - return this.isLocked() ? FRONT_COLORED_ICON_LOCKED : FRONT_COLORED_ICON; - } - - @Override - public CableBusTextures getFrontDark() { - return FRONT_DARK_ICON; + super.readFromNBT(data); } } diff --git a/src/main/java/com/glodblock/github/common/parts/base/FCPart.java b/src/main/java/com/glodblock/github/common/parts/base/FCPart.java index 90809bcd..483018d4 100644 --- a/src/main/java/com/glodblock/github/common/parts/base/FCPart.java +++ b/src/main/java/com/glodblock/github/common/parts/base/FCPart.java @@ -24,7 +24,6 @@ import appeng.api.config.SecurityPermissions; import appeng.api.config.Settings; import appeng.api.config.SortDir; import appeng.api.config.SortOrder; -import appeng.api.config.TypeFilter; import appeng.api.config.ViewItems; import appeng.api.implementations.IPowerChannelState; import appeng.api.implementations.tiles.IViewCellStorage; @@ -84,7 +83,6 @@ public abstract class FCPart extends AEBasePart this.cm.registerSetting(Settings.SORT_BY, SortOrder.NAME); this.cm.registerSetting(Settings.VIEW_MODE, ViewItems.ALL); this.cm.registerSetting(Settings.SORT_DIRECTION, SortDir.ASCENDING); - this.cm.registerSetting(Settings.TYPE_FILTER, TypeFilter.ALL); } @MENetworkEventSubscribe diff --git a/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java b/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java index 60c21155..bf91e8c2 100644 --- a/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java +++ b/src/main/java/com/glodblock/github/common/tile/TileLevelMaintainer.java @@ -18,7 +18,6 @@ import org.jetbrains.annotations.Nullable; import com.glodblock.github.common.Config; import com.glodblock.github.common.item.ItemFluidDrop; import com.glodblock.github.crossmod.thaumcraft.ThaumicEnergisticsCrafting; -import com.glodblock.github.util.ModAndClassUtil; import com.google.common.collect.ImmutableSet; import appeng.api.AEApi; @@ -45,11 +44,10 @@ import appeng.api.networking.security.MachineSource; import appeng.api.networking.ticking.IGridTickable; import appeng.api.networking.ticking.TickRateModulation; import appeng.api.networking.ticking.TickingRequest; +import appeng.api.storage.IMEMonitor; import appeng.api.storage.StorageName; -import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEStack; -import appeng.api.storage.data.IItemList; import appeng.core.AELog; import appeng.me.GridAccessException; import appeng.tile.TileEvent; @@ -99,30 +97,35 @@ public class TileLevelMaintainer extends AENetworkTile } @Override - public IAEItemStack injectCraftedItems(ICraftingLink link, IAEItemStack items, Actionable mode) { + @SuppressWarnings({ "unchecked", "rawtypes" }) + public IAEStack injectCraftedItems(ICraftingLink link, IAEStack stack, Actionable mode) { int idx = this.getRequestIndexByLink(link); try { if (getProxy().isActive()) { final IEnergyGrid energy = getProxy().getEnergy(); - final double power = Math - .ceil(ItemFluidDrop.isFluidStack(items) ? items.getStackSize() / 1000D : items.getStackSize()); - if (energy.extractAEPower(power, mode, PowerMultiplier.CONFIG) > power - 0.01) { - if (ItemFluidDrop.isFluidStack(items)) { - IAEFluidStack notInjectedItems = getProxy().getStorage().getFluidInventory() - .injectItems(ItemFluidDrop.getAeFluidStack(items), mode, source); - if (notInjectedItems != null) { - items.setStackSize(notInjectedItems.getStackSize()); - if (idx != -1) { - this.updateState(idx, LevelState.Export); - } + final double power = Math.ceil((double) stack.getStackSize() / stack.getAmountPerUnit()); - return items; - } else { - return null; - } + if (energy.extractAEPower(power, mode, PowerMultiplier.CONFIG) > power - 0.01) { + IMEMonitor monitor = getProxy().getStorage().getMEMonitor(stack.getStackType()); + if (monitor == null) return stack; + + IAEStack notInjected; + if (stack instanceof IAEItemStack ais && ItemFluidDrop.isFluidStack(ais)) { + notInjected = getProxy().getStorage().getFluidInventory() + .injectItems(ItemFluidDrop.getAeFluidStack(ais), mode, source); } else { - return getProxy().getStorage().getItemInventory().injectItems(items, mode, source); + notInjected = monitor.injectItems(stack, mode, source); + } + + if (notInjected != null) { + if (idx != -1) { + this.updateState(idx, LevelState.Export); + } + + return notInjected; + } else { + return null; } } } @@ -130,7 +133,7 @@ public class TileLevelMaintainer extends AENetworkTile AELog.debug(e); } - return items; + return stack; } @Override @@ -162,8 +165,6 @@ public class TileLevelMaintainer extends AENetworkTile try { final ICraftingGrid craftingGrid = getProxy().getCrafting(); final IGrid grid = getProxy().getGrid(); - final IItemList invItems = getProxy().getStorage().getItemInventory().getStorageList(); - final IItemList invFluid = getProxy().getStorage().getFluidInventory().getStorageList(); // Check there are available crafting CPUs before doing any work. // This hopefully stops level maintainers busy-looping calculating @@ -196,32 +197,17 @@ public class TileLevelMaintainer extends AENetworkTile continue; } - IAEStack aeItem = null; - IAEStack craftItem = requests[i].stack.copy(); craftItem.setStackSize(batchSize); + IMEMonitor monitor = getProxy().getStorage().getMEMonitor(craftItem.getStackType()); + if (monitor == null) continue; - if (craftItem instanceof IAEItemStack ais) { - if (ModAndClassUtil.ThE && ThaumicEnergisticsCrafting.isAspectStack(ais.getItemStack())) { - aeItem = ThaumicEnergisticsCrafting.convertAspectStack(ais); - } else { - aeItem = invItems.findPrecise(ais); - } - } else if (craftItem instanceof IAEFluidStack afs) { - aeItem = invFluid.findPrecise(afs); - } + IAEStack stackInStorage = monitor.getStorageList().findPrecise(craftItem); - long stackSize = aeItem == null ? 0 : aeItem.getStackSize(); - - if (ModAndClassUtil.ThE) { - if (aeItem instanceof IAEItemStack ais - && ThaumicEnergisticsCrafting.isAspectStack(ais.getItemStack())) { - stackSize = ThaumicEnergisticsCrafting.getEssentiaAmount(ais, grid); - } - } + long stackSize = stackInStorage == null ? 0 : stackInStorage.getStackSize(); boolean isDone = this.isDone(i); - boolean isCraftable = aeItem != null && aeItem.isCraftable(); + boolean isCraftable = stackInStorage != null && stackInStorage.isCraftable(); boolean shouldCraft = isCraftable && stackSize < quantity; if (isDone) { @@ -240,11 +226,11 @@ public class TileLevelMaintainer extends AENetworkTile continue; } - if (craftingGrid.canEmitFor(aeItem)) { + if (craftingGrid.canEmitFor(stackInStorage)) { continue; } - if (craftingGrid.isRequesting(aeItem)) { + if (craftingGrid.isRequesting(stackInStorage)) { continue; } @@ -289,7 +275,7 @@ public class TileLevelMaintainer extends AENetworkTile // No jobs to submit, start calculating some item. requests[itemToBeginIdx].job = craftingGrid - .beginCraftingJob(getWorldObj(), grid, source, itemToBegin, null); + .beginCraftingJob(this.worldObj, grid, source, itemToBegin, null); this.updateState(itemToBeginIdx, LevelState.Craft); // Try the next item next time. @@ -644,6 +630,10 @@ public class TileLevelMaintainer extends AENetworkTile if (stack == null) { throw new IllegalArgumentException("ItemStack cannot be null!"); } + + // Migrate old aspect stack + stack = ThaumicEnergisticsCrafting.convertItemAspectStack(stack); + quantity = tag.getLong(NBT_QUANTITY); batchSize = tag.getLong(NBT_BATCH); enable = tag.getBoolean(NBT_ENABLE); @@ -660,6 +650,10 @@ public class TileLevelMaintainer extends AENetworkTile public void loadFromNBT(NBTTagCompound tag) { stack = Platform.readStackNBT(tag.getCompoundTag(NBT_STACK), true); + + // Migrate old aspect stack + stack = ThaumicEnergisticsCrafting.convertItemAspectStack(stack); + quantity = tag.getLong(NBT_QUANTITY); batchSize = tag.getLong(NBT_BATCH); enable = tag.getBoolean(NBT_ENABLE); diff --git a/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java b/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java deleted file mode 100644 index ebd48a06..00000000 --- a/src/main/java/com/glodblock/github/coremod/FCClassTransformer.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.glodblock.github.coremod; - -import net.minecraft.launchwrapper.IClassTransformer; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.objectweb.asm.ClassReader; -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; - -import com.glodblock.github.coremod.transform.ExternalStorageRegistryTransformer; -import com.glodblock.github.coremod.transform.GuiCraftingTransformer; -import com.glodblock.github.coremod.transform.NEITransformer; -import com.gtnewhorizon.gtnhlib.asm.ASMUtil; - -public class FCClassTransformer implements IClassTransformer { - - private static final Logger logger = LogManager.getLogger("ASM AE2FC"); - - @Override - public byte[] transform(String name, String transformedName, byte[] basicClass) { - ClassMapper tform; - switch (transformedName) { - case "appeng.client.gui.implementations.GuiCraftingCPU", "appeng.client.gui.implementations.GuiCraftConfirm", "net.p455w0rd.wirelesscraftingterminal.client.gui.GuiCraftConfirm", "appeng.client.gui.widgets.GuiCraftingTree" -> tform = GuiCraftingTransformer.INSTANCE; - case "appeng.integration.modules.NEI" -> tform = NEITransformer.INSTANCE; - case "appeng.core.features.registries.ExternalStorageRegistry" -> tform = ExternalStorageRegistryTransformer.INSTANCE; - default -> { - return basicClass; - } - } - logger.debug("Transforming class: " + transformedName); - final byte[] bytes = tform.transformClass(basicClass); - if (FluidCraftCore.DUMP_CLASSES()) { - ASMUtil.saveAsRawClassFile(basicClass, transformedName + "_PRE", this); - ASMUtil.saveAsRawClassFile(bytes, transformedName + "_POST", this); - } - return bytes; - } - - public abstract static class ClassMapper { - - public final byte[] transformClass(byte[] code) { - ClassReader reader = new ClassReader(code); - ClassWriter writer = new ClassWriter(reader, getWriteFlags()); - reader.accept(getClassMapper(writer), ClassReader.EXPAND_FRAMES); - return writer.toByteArray(); - } - - protected int getWriteFlags() { - return 0; - } - - protected abstract ClassVisitor getClassMapper(ClassVisitor downstream); - } -} diff --git a/src/main/java/com/glodblock/github/coremod/FluidCraftCore.java b/src/main/java/com/glodblock/github/coremod/FluidCraftCore.java deleted file mode 100644 index 6f9b97a9..00000000 --- a/src/main/java/com/glodblock/github/coremod/FluidCraftCore.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.glodblock.github.coremod; - -import java.util.Map; - -import javax.annotation.Nullable; - -import cpw.mods.fml.relauncher.IFMLLoadingPlugin; - -@IFMLLoadingPlugin.Name("FluidCraftCore") -@IFMLLoadingPlugin.MCVersion("1.7.10") -@IFMLLoadingPlugin.TransformerExclusions("com.glodblock.github.coremod") -public class FluidCraftCore implements IFMLLoadingPlugin { - - private static final boolean DUMP_CLASSES = Boolean.parseBoolean(System.getProperty("ae2fc.dumpClass", "false")); - private static boolean OBF_ENV; - - @Override - public String[] getASMTransformerClass() { - return new String[] { FCClassTransformer.class.getName() }; - } - - @Nullable - @Override - public String getModContainerClass() { - return null; - } - - @Nullable - @Override - public String getSetupClass() { - return null; - } - - @Override - public void injectData(Map data) { - OBF_ENV = (boolean) data.get("runtimeDeobfuscationEnabled"); - } - - @Nullable - @Override - public String getAccessTransformerClass() { - return null; - } - - public static boolean DUMP_CLASSES() { - return DUMP_CLASSES || !OBF_ENV; - } -} diff --git a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java b/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java deleted file mode 100644 index 7a98dd7b..00000000 --- a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooks.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.glodblock.github.coremod.hooker; - -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.FluidStack; - -import com.glodblock.github.common.item.ItemFluidDrop; -import com.glodblock.github.common.item.ItemFluidPacket; - -import appeng.api.storage.data.IAEItemStack; -import appeng.client.gui.IGuiTooltipHandler; - -public class CoreModHooks { - - public static ItemStack displayFluid(IAEItemStack aeStack) { - if (aeStack.getItemStack() != null && aeStack.getItemStack().getItem() instanceof ItemFluidDrop) { - FluidStack fluid = ItemFluidDrop.getFluidStack(aeStack.getItemStack()); - return ItemFluidPacket.newDisplayStack(fluid); - } else return aeStack.getItemStack(); - } - - public static ItemStack getStackUnderMouse(GuiContainer gui, int mousex, int mousey) { - if (gui instanceof IGuiTooltipHandler guiTooltipHandler) { - return guiTooltipHandler.getHoveredStack(); - } - return null; - } -} diff --git a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooksClient.java b/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooksClient.java deleted file mode 100644 index bf94e47f..00000000 --- a/src/main/java/com/glodblock/github/coremod/hooker/CoreModHooksClient.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.glodblock.github.coremod.hooker; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -@SideOnly(Side.CLIENT) -public class CoreModHooksClient { - -} diff --git a/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java b/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java deleted file mode 100644 index 0ad99cc6..00000000 --- a/src/main/java/com/glodblock/github/coremod/transform/ExternalStorageRegistryTransformer.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.glodblock.github.coremod.transform; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.ClassWriter; -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import com.glodblock.github.coremod.FCClassTransformer; - -public class ExternalStorageRegistryTransformer extends FCClassTransformer.ClassMapper { - - public static final ExternalStorageRegistryTransformer INSTANCE = new ExternalStorageRegistryTransformer(); - - private ExternalStorageRegistryTransformer() { - // NO-OP - } - - @Override - protected ClassVisitor getClassMapper(ClassVisitor downstream) { - return new TransformExternalStorageRegistry(Opcodes.ASM5, downstream); - } - - @Override - protected int getWriteFlags() { - return ClassWriter.COMPUTE_FRAMES; - } - - private static class TransformExternalStorageRegistry extends ClassVisitor { - - public TransformExternalStorageRegistry(int api, ClassVisitor cv) { - super(api, cv); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if ("getHandler".equals(name)) { - return new TransformGetHandler(api, super.visitMethod(access, name, desc, signature, exceptions)); - } else { - return super.visitMethod(access, name, desc, signature, exceptions); - } - } - } - - private static class TransformGetHandler extends MethodVisitor { - - private int cnt_return = 0; - private int cnt_if = 0; - private Label L6 = null; - private final Label L9 = new Label(); - - TransformGetHandler(int api, MethodVisitor mv) { - super(api, mv); - } - - @Override - public void visitJumpInsn(int opcode, Label label) { - if (opcode == Opcodes.IFEQ) { - cnt_if++; - } - if (cnt_if == 3) { - L6 = label; - cnt_if++; - super.visitJumpInsn(opcode, L9); - return; - } - super.visitJumpInsn(opcode, label); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == Opcodes.ARETURN) { - cnt_return++; - } - super.visitInsn(opcode); - if (cnt_return == 2) { - super.visitLabel(L9); - super.visitFieldInsn( - Opcodes.GETSTATIC, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "INSTANCE", - "Lcom/glodblock/github/inventory/external/AEFluidTankHandler;"); - super.visitVarInsn(Opcodes.ALOAD, 1); - super.visitVarInsn(Opcodes.ALOAD, 2); - super.visitVarInsn(Opcodes.ALOAD, 3); - super.visitVarInsn(Opcodes.ALOAD, 4); - super.visitMethodInsn( - Opcodes.INVOKEVIRTUAL, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "canHandle", - "(Lnet/minecraft/tileentity/TileEntity;Lnet/minecraftforge/common/util/ForgeDirection;Lappeng/api/storage/StorageChannel;Lappeng/api/networking/security/BaseActionSource;)Z", - false); - super.visitJumpInsn(Opcodes.IFEQ, L6); - super.visitFieldInsn( - Opcodes.GETSTATIC, - "com/glodblock/github/inventory/external/AEFluidTankHandler", - "INSTANCE", - "Lcom/glodblock/github/inventory/external/AEFluidTankHandler;"); - super.visitInsn(Opcodes.ARETURN); - cnt_return++; - } - } - } -} diff --git a/src/main/java/com/glodblock/github/coremod/transform/GuiCraftingTransformer.java b/src/main/java/com/glodblock/github/coremod/transform/GuiCraftingTransformer.java deleted file mode 100644 index da1874e3..00000000 --- a/src/main/java/com/glodblock/github/coremod/transform/GuiCraftingTransformer.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.glodblock.github.coremod.transform; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import com.glodblock.github.coremod.FCClassTransformer; - -public class GuiCraftingTransformer extends FCClassTransformer.ClassMapper { - - public static final GuiCraftingTransformer INSTANCE = new GuiCraftingTransformer(); - - private GuiCraftingTransformer() { - // NO-OP - } - - @Override - protected ClassVisitor getClassMapper(ClassVisitor downstream) { - return new TransformGuiCrafting(Opcodes.ASM5, downstream); - } - - private static class TransformGuiCrafting extends ClassVisitor { - - TransformGuiCrafting(int api, ClassVisitor cv) { - super(api, cv); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if ("drawFG".equals(name) || "drawListFG".equals(name) || "drawStack".equals(name)) { - return new TransformFluidIcon(api, super.visitMethod(access, name, desc, signature, exceptions)); - } - return super.visitMethod(access, name, desc, signature, exceptions); - } - } - - private static class TransformFluidIcon extends MethodVisitor { - - TransformFluidIcon(int api, MethodVisitor mv) { - super(api, mv); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { - if (opcode == Opcodes.INVOKEINTERFACE && owner.equals("appeng/api/storage/data/IAEItemStack") - && name.equals("getItemStack")) { - super.visitMethodInsn( - Opcodes.INVOKESTATIC, - "com/glodblock/github/coremod/hooker/CoreModHooks", - "displayFluid", - "(Lappeng/api/storage/data/IAEItemStack;)Lnet/minecraft/item/ItemStack;", - false); - } else { - super.visitMethodInsn(opcode, owner, name, desc, itf); - } - } - } -} diff --git a/src/main/java/com/glodblock/github/coremod/transform/NEITransformer.java b/src/main/java/com/glodblock/github/coremod/transform/NEITransformer.java deleted file mode 100644 index 6c8a8dc7..00000000 --- a/src/main/java/com/glodblock/github/coremod/transform/NEITransformer.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.glodblock.github.coremod.transform; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -import com.glodblock.github.coremod.FCClassTransformer; - -public class NEITransformer extends FCClassTransformer.ClassMapper { - - public static final NEITransformer INSTANCE = new NEITransformer(); - - private NEITransformer() { - // NO-OP - } - - @Override - protected ClassVisitor getClassMapper(ClassVisitor downstream) { - return new TransformNEI(Opcodes.ASM5, downstream); - } - - private static class TransformNEI extends ClassVisitor { - - TransformNEI(int api, ClassVisitor cv) { - super(api, cv); - } - - @Override - public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - return switch (name) { - case "getStackUnderMouse" -> new TransformStackUnderMouse( - api, - super.visitMethod(access, name, desc, signature, exceptions)); - default -> super.visitMethod(access, name, desc, signature, exceptions); - }; - } - } - - private static class TransformStackUnderMouse extends MethodVisitor { - - TransformStackUnderMouse(int api, MethodVisitor mv) { - super(api, mv); - } - - @Override - public void visitInsn(int opcode) { - if (opcode == Opcodes.ACONST_NULL) { - super.visitVarInsn(Opcodes.ALOAD, 1); - super.visitVarInsn(Opcodes.ILOAD, 2); - super.visitVarInsn(Opcodes.ILOAD, 3); - super.visitMethodInsn( - Opcodes.INVOKESTATIC, - "com/glodblock/github/coremod/hooker/CoreModHooks", - "getStackUnderMouse", - "(Lnet/minecraft/client/gui/inventory/GuiContainer;II)Lnet/minecraft/item/ItemStack;", - false); - return; - } - super.visitInsn(opcode); - } - } -} diff --git a/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectRender.java b/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectRender.java deleted file mode 100644 index 46260a09..00000000 --- a/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectRender.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.glodblock.github.crossmod.thaumcraft; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.util.ResourceLocation; - -import org.lwjgl.opengl.GL11; - -import com.glodblock.github.util.RenderUtil; - -import thaumcraft.api.aspects.Aspect; -import thaumcraft.client.lib.UtilsFX; - -public class AspectRender { - - public static final ResourceLocation UNKNOWN_TEXTURE = new ResourceLocation( - "thaumcraft", - "textures/aspects/_unknown.png"); - - public static void drawAspect(EntityPlayer player, int posX, int posY, float zLevel, Aspect aspect, long amount) { - if (aspect == null || amount <= 0) { - return; - } - if (AspectUtil.isPlayerDiscoveredAspect(player, aspect)) { - UtilsFX.drawTag(posX, posY, aspect, 0, 0, zLevel); - } else { - Minecraft.getMinecraft().renderEngine.bindTexture(UNKNOWN_TEXTURE); - RenderUtil.setGLColorFromInt(aspect.getColor()); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - UtilsFX.drawTexturedQuadFull(posX, posY, zLevel); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - } - } - -} diff --git a/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectUtil.java b/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectUtil.java deleted file mode 100644 index 74560a9c..00000000 --- a/src/main/java/com/glodblock/github/crossmod/thaumcraft/AspectUtil.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.glodblock.github.crossmod.thaumcraft; - -import java.util.Objects; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.fluids.Fluid; -import net.minecraftforge.fluids.FluidStack; - -import org.apache.commons.lang3.tuple.ImmutablePair; -import org.apache.commons.lang3.tuple.MutablePair; - -import appeng.api.storage.data.IAEFluidStack; -import appeng.util.item.AEFluidStack; -import cpw.mods.fml.common.Optional; -import thaumcraft.api.aspects.Aspect; -import thaumcraft.api.aspects.IEssentiaContainerItem; -import thaumcraft.common.Thaumcraft; -import thaumicenergistics.api.ThEApi; -import thaumicenergistics.api.storage.IAspectStack; -import thaumicenergistics.common.fluids.GaseousEssentia; -import thaumicenergistics.common.integration.tc.EssentiaItemContainerHelper; -import thaumicenergistics.common.storage.AspectStack; - -public class AspectUtil { - - public static final EssentiaItemContainerHelper HELPER = EssentiaItemContainerHelper.INSTANCE; - public static int R = 128; - - @Optional.Method(modid = "thaumicenergistics") - public static void init() { - R = ThEApi.instance().config().conversionMultiplier(); - } - - public static boolean isPlayerDiscoveredAspect(final EntityPlayer player, final Aspect aspect) { - if (player != null && aspect != null) { - return Thaumcraft.proxy.getPlayerKnowledge().hasDiscoveredAspect(player.getCommandSenderName(), aspect); - } - return false; - } - - public static boolean isEssentiaGas(Fluid fluid) { - return fluid instanceof GaseousEssentia; - } - - public static boolean isEssentiaGas(FluidStack fluid) { - return fluid != null && fluid.getFluid() instanceof GaseousEssentia; - } - - public static boolean isEssentiaGas(IAEFluidStack fluid) { - return fluid != null && fluid.getFluid() instanceof GaseousEssentia; - } - - public static Aspect getAspectFromGas(FluidStack fluid) { - if (!isEssentiaGas(fluid)) { - return null; - } - GaseousEssentia gas = (GaseousEssentia) fluid.getFluid(); - return gas.getAspect(); - } - - public static Aspect getAspectFromJar(ItemStack stack) { - if (isEssentiaContainer(stack)) { - return HELPER.getAspectInContainer(stack); - } - return null; - } - - public static Aspect getAspectFromGas(IAEFluidStack fluid) { - if (isEssentiaGas(fluid)) { - return null; - } - GaseousEssentia gas = (GaseousEssentia) fluid.getFluid(); - return gas.getAspect(); - } - - public static FluidStack getGasFromAspect(IAspectStack aspectStack) { - if (aspectStack == null || aspectStack.isEmpty()) return null; - return new FluidStack( - GaseousEssentia.getGasFromAspect(aspectStack.getAspect()), - (int) aspectStack.getStackSize() * R); - } - - public static boolean isEssentiaContainer(ItemStack stack) { - return HELPER.getItemType(stack) != EssentiaItemContainerHelper.AspectItemType.Invalid - && HELPER.getItemType(stack) != EssentiaItemContainerHelper.AspectItemType.ItemAspect; - } - - public static AEFluidStack getAEGasFromContainer(ItemStack stack) { - if (isEssentiaContainer(stack) && !isEmptyEssentiaContainer(stack)) { - IAspectStack aspectStack = HELPER.getAspectStackFromContainer(stack); - aspectStack.setStackSize(stack.stackSize * aspectStack.getStackSize()); - FluidStack gas = getGasFromAspect(aspectStack); - return AEFluidStack.create(gas); - } - return null; - } - - public static boolean isEmptyEssentiaContainer(ItemStack stack) { - return HELPER.isContainerEmpty(stack) && isEssentiaContainer(stack); - } - - public static ItemStack setAspectAmount(ItemStack itemStack, int amount, Aspect aspect) { - if (isEssentiaContainer(itemStack)) { - IEssentiaContainerItem container = (IEssentiaContainerItem) itemStack.getItem(); - assert container != null; - container.getAspects(itemStack).aspects.put(aspect, amount); - return itemStack; - } - return null; - } - - public static MutablePair fillEssentiaFromGas(ItemStack itemStack, FluidStack fluid) { - if (isEssentiaContainer(itemStack) && isEssentiaGas(fluid)) { - if (itemStack.stackSize != 1) { - return null; - } - Aspect aspect = getAspectFromGas(fluid); - int amount = fluid.amount / R; - EssentiaItemContainerHelper.AspectItemType iType = HELPER.getItemType(itemStack); - if (iType == EssentiaItemContainerHelper.AspectItemType.JarLabel) { - ItemStack label = itemStack.copy(); - HELPER.setLabelAspect(label, aspect); - } - int cap = HELPER.getContainerCapacity(itemStack); - int tryFill = Math.min(cap, amount); - ImmutablePair result = HELPER - .injectIntoContainer(itemStack, new AspectStack(aspect, tryFill)); - return result != null ? new MutablePair<>(result.left * R, result.right) : null; - } - return null; - } - - public static MutablePair drainEssentiaFromGas(ItemStack itemStack, FluidStack fluid) { - if (isEssentiaContainer(itemStack) && isEssentiaGas(fluid)) { - Aspect aspect = getAspectFromGas(fluid); - int amount = fluid.amount / R; - IAspectStack contents = HELPER.getAspectStackFromContainer(itemStack); - int drained; - ItemStack stack = null; - if (contents == null || !Objects.equals(contents.getAspect(), aspect)) { - drained = 0; - } else { - ImmutablePair result = HELPER - .extractFromContainer(itemStack, new AspectStack(aspect, amount)); - drained = result == null ? 0 : result.left; - stack = result == null ? null : result.right; - } - return stack == null ? null : new MutablePair<>(drained * R, stack); - } - return null; - } - -} diff --git a/src/main/java/com/glodblock/github/crossmod/thaumcraft/ThaumicEnergisticsCrafting.java b/src/main/java/com/glodblock/github/crossmod/thaumcraft/ThaumicEnergisticsCrafting.java index 7e2510d9..ccb3d833 100644 --- a/src/main/java/com/glodblock/github/crossmod/thaumcraft/ThaumicEnergisticsCrafting.java +++ b/src/main/java/com/glodblock/github/crossmod/thaumcraft/ThaumicEnergisticsCrafting.java @@ -1,7 +1,5 @@ package com.glodblock.github.crossmod.thaumcraft; -import java.util.Objects; - import javax.annotation.Nullable; import net.minecraft.item.Item; @@ -11,14 +9,13 @@ import net.minecraft.nbt.NBTTagList; import com.glodblock.github.util.ModAndClassUtil; -import appeng.api.networking.IGrid; import appeng.api.storage.data.IAEItemStack; -import appeng.util.item.AEItemStack; +import appeng.api.storage.data.IAEStack; import cpw.mods.fml.common.Optional.Method; import cpw.mods.fml.common.registry.GameRegistry; import thaumcraft.api.aspects.Aspect; -import thaumicenergistics.api.grid.IEssentiaGrid; import thaumicenergistics.common.items.ItemCraftingAspect; +import thaumicenergistics.common.storage.AEEssentiaStack; public class ThaumicEnergisticsCrafting { @@ -39,6 +36,17 @@ public class ThaumicEnergisticsCrafting { return stack.getItem() == neiAddonAspect || stack.getItem() == thaumicEnergisticsAspect; } + public static IAEStack convertItemAspectStack(IAEStack stack) { + if (stack instanceof IAEItemStack ais && isAspectStack(ais.getItemStack())) { + Aspect aspect = getAspect(ais.getItemStack()); + if (aspect == null) return stack; + + return new AEEssentiaStack(aspect, stack.getStackSize()); + } else { + return stack; + } + } + @Method(modid = "thaumicenergistics") private static @Nullable Aspect getAspect(ItemStack stack) { if (stack == null) return null; @@ -59,53 +67,4 @@ public class ThaumicEnergisticsCrafting { return null; } - - @Method(modid = "thaumicenergistics") - private static ItemStack getAspectStack(Aspect aspect, int stackSize) { - return ItemCraftingAspect.createStackForAspect(aspect, stackSize); - } - - /** - * Converts an aspect stack into a thaumic energistics stack. - */ - public static IAEItemStack convertAspectStack(IAEItemStack stack) { - if (ModAndClassUtil.ThE) { - return convertAspectStackImpl(stack); - } else { - return stack; - } - } - - @Method(modid = "thaumicenergistics") - private static IAEItemStack convertAspectStackImpl(IAEItemStack stack) { - if (stack == null) return null; - - Aspect aspect = getAspect(stack.getItemStack()); - - if (aspect == null) return stack; - - return Objects.requireNonNull(AEItemStack.create(getAspectStack(aspect, 1))).setStackSize(stack.getStackSize()); - } - - /** - * Gets the amount of essentia stored in a grid for a given aspect preview. - */ - public static long getEssentiaAmount(IAEItemStack stack, IGrid grid) { - if (ModAndClassUtil.ThE) { - return getEssentiaAmountImpl(stack, grid); - } else { - return 0; - } - } - - @Method(modid = "thaumicenergistics") - private static long getEssentiaAmountImpl(IAEItemStack stack, IGrid grid) { - Aspect aspect = getAspect(stack.getItemStack()); - - if (aspect == null) return 0; - - IEssentiaGrid essentiaGrid = grid.getCache(IEssentiaGrid.class); - - return essentiaGrid.getEssentiaAmount(aspect); - } } diff --git a/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java index b36d9848..328a84fb 100644 --- a/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java +++ b/src/main/java/com/glodblock/github/crossmod/waila/PartWailaDataProvider.java @@ -10,8 +10,6 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import com.glodblock.github.crossmod.waila.part.FluidInvWailaDataProvider; -import com.glodblock.github.crossmod.waila.part.FluidMonitorWailaDataProvider; -import com.glodblock.github.crossmod.waila.part.SpeedWailaDataProvider; import com.google.common.base.Optional; import com.google.common.collect.Lists; @@ -30,10 +28,8 @@ public class PartWailaDataProvider implements IWailaDataProvider { private final Tracer tracer = new Tracer(); public PartWailaDataProvider() { - final IPartWailaDataProvider speed = new SpeedWailaDataProvider(); final IPartWailaDataProvider fluidInv = new FluidInvWailaDataProvider(); - final IPartWailaDataProvider fluidMonitor = new FluidMonitorWailaDataProvider(); - this.providers = Lists.newArrayList(speed, fluidInv, fluidMonitor); + this.providers = Lists.newArrayList(fluidInv); } @Override diff --git a/src/main/java/com/glodblock/github/crossmod/waila/Tooltip.java b/src/main/java/com/glodblock/github/crossmod/waila/Tooltip.java index 202af0f6..f3db6097 100644 --- a/src/main/java/com/glodblock/github/crossmod/waila/Tooltip.java +++ b/src/main/java/com/glodblock/github/crossmod/waila/Tooltip.java @@ -27,11 +27,6 @@ public class Tooltip { return String.format("0 mB / %s mB", NumberFormat.getInstance().format(capacity)); } - public static String partFluidBusFormat(int amount) { - return String - .format("%s: %s mB/t", I18n.format(NameConst.WAILA_SPEED), NumberFormat.getInstance().format(amount)); - } - public static String tileFluidInterfaceFormat(String name, int amount, int face) { return String.format( "%s %s: %s mB", diff --git a/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java deleted file mode 100644 index ad85f6f2..00000000 --- a/src/main/java/com/glodblock/github/crossmod/waila/part/FluidMonitorWailaDataProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.glodblock.github.crossmod.waila.part; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import com.glodblock.github.common.parts.base.FCPartMonitor; -import com.glodblock.github.crossmod.waila.Tooltip; -import com.glodblock.github.util.Util; - -import appeng.api.parts.IPart; -import appeng.api.storage.data.IAEFluidStack; -import appeng.integration.modules.waila.part.BasePartWailaDataProvider; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public class FluidMonitorWailaDataProvider extends BasePartWailaDataProvider { - - private final String key = "fluidStore"; - - @Override - public List getWailaBody(final IPart part, final List currentToolTip, - final IWailaDataAccessor accessor, final IWailaConfigHandler config) { - if (part instanceof FCPartMonitor && accessor.getNBTData().hasKey(key)) { - IAEFluidStack iaeFluidStack = Util.loadFluidStackFromNBT(accessor.getNBTData().getCompoundTag(key)); - if (iaeFluidStack != null) currentToolTip.add( - Tooltip.fluidFormat( - iaeFluidStack.getFluidStack().getLocalizedName(), - iaeFluidStack.getStackSize())); - } - return currentToolTip; - } - - @Override - public NBTTagCompound getNBTData(final EntityPlayerMP player, final IPart part, final TileEntity te, - final NBTTagCompound tag, final World world, final int x, final int y, final int z) { - if (part instanceof FCPartMonitor && ((FCPartMonitor) part).getAEStoreFluidStack() != null) { - NBTTagCompound data = new NBTTagCompound(); - ((FCPartMonitor) part).getAEStoreFluidStack().writeToNBT(data); - tag.setTag(key, data); - } - return tag; - } -} diff --git a/src/main/java/com/glodblock/github/crossmod/waila/part/SpeedWailaDataProvider.java b/src/main/java/com/glodblock/github/crossmod/waila/part/SpeedWailaDataProvider.java deleted file mode 100644 index 1255ada7..00000000 --- a/src/main/java/com/glodblock/github/crossmod/waila/part/SpeedWailaDataProvider.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.glodblock.github.crossmod.waila.part; - -import java.util.List; - -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -import com.glodblock.github.crossmod.waila.Tooltip; - -import appeng.api.parts.IPart; -import appeng.integration.modules.waila.part.BasePartWailaDataProvider; -import appeng.parts.automation.PartSharedItemBus; -import mcp.mobius.waila.api.IWailaConfigHandler; -import mcp.mobius.waila.api.IWailaDataAccessor; - -public class SpeedWailaDataProvider extends BasePartWailaDataProvider { - - @Override - public List getWailaBody(final IPart part, final List currentToolTip, - final IWailaDataAccessor accessor, final IWailaConfigHandler config) { - if (accessor.getNBTData().hasKey("BusSpeed")) { - currentToolTip.add(Tooltip.partFluidBusFormat(accessor.getNBTData().getInteger("BusSpeed"))); - } - return currentToolTip; - } - - @Override - public NBTTagCompound getNBTData(final EntityPlayerMP player, final IPart part, final TileEntity te, - final NBTTagCompound tag, final World world, final int x, final int y, final int z) { - if (part instanceof PartSharedItemBusbus) { - tag.setInteger("BusSpeed", bus.calculateAmountToSend() / 5); - } - return tag; - } -} diff --git a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java b/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java deleted file mode 100644 index e1ced089..00000000 --- a/src/main/java/com/glodblock/github/inventory/MEMonitorIFluidHandler.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.glodblock.github.inventory; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import javax.annotation.Nonnull; - -import net.minecraft.event.ClickEvent; -import net.minecraft.event.HoverEvent; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatStyle; -import net.minecraft.util.EnumChatFormatting; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidTankInfo; -import net.minecraftforge.fluids.IFluidHandler; - -import appeng.api.AEApi; -import appeng.api.config.AccessRestriction; -import appeng.api.config.Actionable; -import appeng.api.config.StorageFilter; -import appeng.api.networking.security.BaseActionSource; -import appeng.api.networking.ticking.TickRateModulation; -import appeng.api.storage.IMEMonitor; -import appeng.api.storage.IMEMonitorHandlerReceiver; -import appeng.api.storage.StorageChannel; -import appeng.api.storage.data.IAEFluidStack; -import appeng.api.storage.data.IAEStack; -import appeng.api.storage.data.IItemList; -import appeng.core.AELog; -import appeng.util.item.AEFluidStack; - -public class MEMonitorIFluidHandler implements IMEMonitor { - - private static boolean WrongFluidRemovedWarnIssued = false; - - private final IFluidHandler handler; - private final ForgeDirection side; - private IItemList cache = AEApi.instance().storage().createFluidList(); - private final HashMap listeners = new HashMap<>(); - private BaseActionSource mySource; - private StorageFilter mode; - private boolean init = false; - - public MEMonitorIFluidHandler(IFluidHandler handler, ForgeDirection side) { - this.mode = StorageFilter.EXTRACTABLE_ONLY; - this.handler = handler; - this.side = side; - } - - public MEMonitorIFluidHandler(IFluidHandler handler) { - this.mode = StorageFilter.EXTRACTABLE_ONLY; - this.handler = handler; - this.side = ForgeDirection.UNKNOWN; - } - - public void addListener(IMEMonitorHandlerReceiver l, Object verificationToken) { - this.listeners.put(l, verificationToken); - } - - public void removeListener(IMEMonitorHandlerReceiver l) { - this.listeners.remove(l); - } - - public IAEFluidStack injectItems(IAEFluidStack input, Actionable type, BaseActionSource src) { - if (!this.handler.canFill(this.side, input.getFluid())) { - return input; - } - - int filled = this.handler.fill(this.side, input.getFluidStack(), type == Actionable.MODULATE); - - if (type == Actionable.MODULATE) { - this.onTick(); - } - - if ((long) filled == input.getStackSize()) { - return null; - } - - IAEFluidStack o = input.copy(); - o.setStackSize(input.getStackSize() - (long) filled); - return o; - } - - public IAEFluidStack extractItems(IAEFluidStack request, Actionable type, BaseActionSource src) { - if (!this.handler.canDrain(this.side, request.getFluid())) { - return null; - } - FluidStack removed = this.handler.drain(this.side, request.getFluidStack(), type == Actionable.MODULATE); - if (removed != null && removed.amount != 0) { - // perform a one time log if the removed fluid isn't what's reported since this will create a dupe exploit - if (!WrongFluidRemovedWarnIssued && !removed.isFluidEqual(request.getFluidStack())) { - WrongFluidRemovedWarnIssued = true; - String issuesUrl = "https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/new"; - String msg = String.format( - "[AE2FC] MEMonitorIFluidHandler.extractItems got the wrong fluids while extracting from %s. expected %s got %s. Please report this message if seen: ", - this.handler.getClass().getSimpleName(), - request.getFluidStack().getUnlocalizedName(), - removed.getUnlocalizedName()); - // elevate log to error if chat msg is removed to make it easier to find. - AELog.warn(msg + issuesUrl); - - ChatComponentText chatTxt = new ChatComponentText(msg); - chatTxt.setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED).setBold(true)); - - ChatComponentText chatUrl = new ChatComponentText(issuesUrl); - chatUrl.setChatStyle( - new ChatStyle().setUnderlined(true) - .setChatClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, issuesUrl)) - .setChatHoverEvent( - new HoverEvent( - HoverEvent.Action.SHOW_TEXT, - new ChatComponentText("Click to open link")))); - - ChatComponentText chat = new ChatComponentText(""); - chat.appendSibling(chatTxt); - chat.appendSibling(chatUrl); - - MinecraftServer.getServer().getConfigurationManager().sendChatMsg(chat); - } - IAEFluidStack o = request.copy(); - o.setStackSize(removed.amount); - if (type == Actionable.MODULATE) { - IAEFluidStack cachedStack = this.cache.findPrecise(request); - if (cachedStack != null) { - cachedStack.decStackSize(o.getStackSize()); - this.postDifference(Collections.singletonList(o.copy().setStackSize(-o.getStackSize()))); - } - } - return o; - } else { - return null; - } - } - - @Override - public StorageChannel getChannel() { - return StorageChannel.FLUIDS; - } - - // *Decompiled Stuff*// - - public TickRateModulation onTick() { - FluidTankInfo[] tankProperties = this.handler.getTankInfo(this.side); - IItemList currentlyOnStorage = AEApi.instance().storage().createFluidList(); - - if (tankProperties != null) { - for (FluidTankInfo tankProperty : tankProperties) { - if (this.mode != StorageFilter.EXTRACTABLE_ONLY || this.handler.drain(this.side, 1, false) != null) { - currentlyOnStorage.add(AEFluidStack.create(tankProperty.fluid)); - } - } - } - - // make diff between cache and new contents - IItemList> changes = AEApi.instance().storage().createAEStackList(); - // using non-enhanced for to prevent concurrency errors - for (Iterator iter = this.cache.iterator(); iter.hasNext();) { - IAEFluidStack copy = iter.next().copy(); - copy.setStackSize(-copy.getStackSize()); - changes.add(copy); - } - for (IAEFluidStack is : currentlyOnStorage) { - changes.add(is); - } - // update cache as soon as possible - this.cache = currentlyOnStorage; - // remove unchanged values - for (Iterator> iter = changes.iterator(); iter.hasNext();) { - if (iter.next().getStackSize() == 0L) { - iter.remove(); - } - } - - if (!changes.isEmpty()) { - this.postDifference(changes); - return TickRateModulation.URGENT; - } - - return TickRateModulation.SLOWER; - } - - private void postDifference(Iterable> a) { - if (a != null) { - Iterator> i = this.listeners.entrySet().iterator(); - - while (i.hasNext()) { - Map.Entry l = i.next(); - IMEMonitorHandlerReceiver key = l.getKey(); - if (key.isValid(l.getValue())) { - key.postChange(this, a, this.getActionSource()); - } else { - i.remove(); - } - } - } - } - - public AccessRestriction getAccess() { - return AccessRestriction.READ_WRITE; - } - - public boolean isPrioritized(IAEFluidStack input) { - return false; - } - - public boolean canAccept(IAEFluidStack input) { - return true; - } - - public int getPriority() { - return 0; - } - - public int getSlot() { - return 0; - } - - public boolean validForPass(int i) { - return true; - } - - public IItemList getAvailableItems(IItemList out, int iteration) { - if (!init) { - this.onTick(); - init = true; - } - for (IAEFluidStack fs : this.cache) { - out.addStorage(fs); - } - - return out; - } - - @Override - public IAEFluidStack getAvailableItem(@Nonnull IAEFluidStack request, int iteration) { - if (!init) { - this.onTick(); - init = true; - } - return this.cache.findPrecise(request); - } - - public IItemList getStorageList() { - return this.cache; - } - - public void setMode(StorageFilter mode) { - this.mode = mode; - } - - private BaseActionSource getActionSource() { - return this.mySource; - } - - public void setActionSource(BaseActionSource mySource) { - this.mySource = mySource; - } -} diff --git a/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java b/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java deleted file mode 100644 index acbde506..00000000 --- a/src/main/java/com/glodblock/github/inventory/external/AEFluidTankHandler.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.glodblock.github.inventory.external; - -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.IFluidHandler; - -import com.glodblock.github.inventory.MEMonitorIFluidHandler; - -import appeng.api.networking.security.BaseActionSource; -import appeng.api.storage.IExternalStorageHandler; -import appeng.api.storage.IMEInventory; -import appeng.api.storage.StorageChannel; - -// This handler is too generic, so it will overlap other mods' fluid handler. -// It will be injected into external handler by ASM to make sure it is executed at last. -public class AEFluidTankHandler implements IExternalStorageHandler { - - public static final AEFluidTankHandler INSTANCE = new AEFluidTankHandler(); - - @Override - public boolean canHandle(TileEntity te, ForgeDirection d, StorageChannel channel, BaseActionSource mySrc) { - return channel == StorageChannel.FLUIDS && te instanceof IFluidHandler; - } - - @Override - @SuppressWarnings("rawtypes") - public IMEInventory getInventory(TileEntity te, ForgeDirection d, StorageChannel channel, BaseActionSource src) { - if (channel == StorageChannel.FLUIDS) { - return new MEMonitorIFluidHandler((IFluidHandler) te, d); - } - return null; - } -} diff --git a/src/main/java/com/glodblock/github/loader/CalculatorV2PluginLoader.java b/src/main/java/com/glodblock/github/loader/CalculatorV2PluginLoader.java deleted file mode 100644 index 4d9ed210..00000000 --- a/src/main/java/com/glodblock/github/loader/CalculatorV2PluginLoader.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.glodblock.github.loader; - -import com.glodblock.github.common.item.ItemFluidDrop; - -import appeng.api.storage.data.IAEItemStack; -import appeng.crafting.v2.CraftingCalculations; -import appeng.crafting.v2.CraftingRequest; -import appeng.util.Platform; - -public class CalculatorV2PluginLoader { - - private static long adjustByteCost(CraftingRequest request, Long originalAmount) { - if (request.stack.getItem() instanceof ItemFluidDrop) { - return Platform.ceilDiv(originalAmount, 1000L); - } else { - return originalAmount; - } - } - - public static void installCalculatorV2Plugins() { - CraftingCalculations.registerByteAmountAdjuster(CalculatorV2PluginLoader::adjustByteCost, IAEItemStack.class); - } -} diff --git a/src/main/java/com/glodblock/github/proxy/CommonProxy.java b/src/main/java/com/glodblock/github/proxy/CommonProxy.java index 2c387855..8567b234 100644 --- a/src/main/java/com/glodblock/github/proxy/CommonProxy.java +++ b/src/main/java/com/glodblock/github/proxy/CommonProxy.java @@ -15,7 +15,6 @@ import com.glodblock.github.common.parts.PartFluidInterface; import com.glodblock.github.common.parts.PartFluidP2PInterface; import com.glodblock.github.common.tile.TileFluidInterface; import com.glodblock.github.common.tile.TileWalrus; -import com.glodblock.github.crossmod.thaumcraft.AspectUtil; import com.glodblock.github.crossmod.thaumcraft.ThaumicEnergisticsCrafting; import com.glodblock.github.inventory.external.AEFluidInterfaceHandler; import com.glodblock.github.inventory.item.WirelessMagnet; @@ -89,9 +88,6 @@ public class CommonProxy { public void init(FMLInitializationEvent event) { this.registerMovables(); - if (ModAndClassUtil.ThE) { - AspectUtil.init(); - } } public void postInit(FMLPostInitializationEvent event) { diff --git a/src/main/java/com/glodblock/github/util/DualityFluidInterface.java b/src/main/java/com/glodblock/github/util/DualityFluidInterface.java index eb2c8a64..e85e6436 100644 --- a/src/main/java/com/glodblock/github/util/DualityFluidInterface.java +++ b/src/main/java/com/glodblock/github/util/DualityFluidInterface.java @@ -1,5 +1,8 @@ package com.glodblock.github.util; +import static appeng.util.item.AEFluidStackType.FLUID_STACK_TYPE; +import static appeng.util.item.AEItemStackType.ITEM_STACK_TYPE; + import java.util.List; import java.util.Objects; @@ -18,7 +21,6 @@ import com.glodblock.github.common.item.ItemFluidPacket; import com.glodblock.github.inventory.AEFluidInventory; import com.glodblock.github.inventory.IAEFluidInventory; import com.glodblock.github.inventory.IAEFluidTank; -import com.glodblock.github.inventory.MEMonitorIFluidHandler; import appeng.api.config.Actionable; import appeng.api.config.Upgrades; @@ -36,7 +38,6 @@ import appeng.api.networking.ticking.TickingRequest; import appeng.api.storage.IMEInventory; import appeng.api.storage.IMEMonitor; import appeng.api.storage.IStorageMonitorable; -import appeng.api.storage.StorageChannel; import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEItemStack; import appeng.api.util.IConfigManager; @@ -44,6 +45,7 @@ import appeng.core.settings.TickRates; import appeng.helpers.IInterfaceHost; import appeng.me.GridAccessException; import appeng.me.helpers.AENetworkProxy; +import appeng.me.storage.MEMonitorIFluidHandler; import appeng.me.storage.MEMonitorPassThrough; import appeng.me.storage.NullInventory; import appeng.util.ConfigManager; @@ -67,10 +69,10 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable private int isWorking = -1; private final MEMonitorPassThrough items = new MEMonitorPassThrough( new NullInventory<>(), - StorageChannel.ITEMS); + ITEM_STACK_TYPE); private final MEMonitorPassThrough fluids = new MEMonitorPassThrough( new NullInventory<>(), - StorageChannel.FLUIDS); + FLUID_STACK_TYPE); private boolean resetConfigCache = true; public DualityFluidInterface(final AENetworkProxy networkProxy, final IInterfaceHost ih) { diff --git a/src/main/java/com/glodblock/github/coremod/registries/LevelTerminalRegistry.java b/src/main/java/com/glodblock/github/util/LevelTerminalRegistry.java similarity index 97% rename from src/main/java/com/glodblock/github/coremod/registries/LevelTerminalRegistry.java rename to src/main/java/com/glodblock/github/util/LevelTerminalRegistry.java index 480c1c60..8e2c312a 100644 --- a/src/main/java/com/glodblock/github/coremod/registries/LevelTerminalRegistry.java +++ b/src/main/java/com/glodblock/github/util/LevelTerminalRegistry.java @@ -1,4 +1,4 @@ -package com.glodblock.github.coremod.registries; +package com.glodblock.github.util; import java.util.HashSet; import java.util.Map; diff --git a/src/main/java/com/glodblock/github/util/NameConst.java b/src/main/java/com/glodblock/github/util/NameConst.java index c4564465..5152ec86 100644 --- a/src/main/java/com/glodblock/github/util/NameConst.java +++ b/src/main/java/com/glodblock/github/util/NameConst.java @@ -57,9 +57,7 @@ public class NameConst { public static final String ITEM_ENERGY_CARD = "energy_card"; public static final String TT_KEY = FluidCraft.MODID + ".tooltip."; - public static final String TT_CRAFTING_COMPLETE = TT_KEY + "crafting_complete"; public static final String TT_FLUID_TERMINAL = TT_KEY + "fluid_terminal"; - public static final String TT_FLUID_TERMINAL_AMOUNT = TT_FLUID_TERMINAL + ".amount"; public static final String TT_LEVEL_TERMINAL = TT_KEY + "level_terminal"; public static final String TT_INVALID_FLUID = TT_KEY + "invalid_fluid"; public static final String TT_FLUID_PACKET = TT_KEY + "fluid_packet"; @@ -94,8 +92,6 @@ public class NameConst { public static final String TT_LEVEL_MAINTAINER_NOT_FOUND_DESC = TT_LEVEL_MAINTAINER + "not_found_desc"; public static final String TT_LEVEL_MAINTAINER_CANT_CRAFT = TT_LEVEL_MAINTAINER + "cant_craft"; public static final String TT_LEVEL_MAINTAINER_CANT_CRAFT_DESC = TT_LEVEL_MAINTAINER + "cant_craft_desc"; - public static final String TT_CELL_CONTENTS = TT_KEY + "cell_contents"; - public static final String TT_CELL_EMPTY = TT_KEY + "cell_empty"; public static final String TT_CELL_PORTABLE = TT_KEY + "cell_portable"; public static final String TT_WIRELESS = TT_KEY + "wireless."; public static final String TT_WIRELESS_INSTALLED = TT_WIRELESS + "installed"; @@ -103,12 +99,10 @@ public class NameConst { public static final String TT_ULTRA_TERMINAL = TT_KEY + "ultra_terminal"; public static final String TT_ULTRA_TERMINAL_TIPS = TT_ULTRA_TERMINAL + ".tips"; public static final String TT_ULTRA_TERMINAL_TIPS_DESC = TT_ULTRA_TERMINAL_TIPS + ".desc"; - public static final String TT_INFINITY_FLUID_STORAGE_TIPS = TT_KEY + "infinity_fluid"; public static final String TT_ENERGY_CARD = TT_KEY + "energy_card"; public static final String TT_ENERGY_CARD_DESC = TT_ENERGY_CARD + ".desc"; public static final String TT_QUANTUM_BRIDGE_CARD = TT_KEY + "quantum_bridge_card"; public static final String TT_QUANTUM_BRIDGE_CARD_DESC = TT_QUANTUM_BRIDGE_CARD + ".desc"; - public static final String TT_ITEM_FLUID_VOID_CELL = TT_KEY + ITEM_FLUID_VOID_CELL; public static final String TT_ULTRA_TERMINAL_RESTOCK = TT_ULTRA_TERMINAL + ".restock"; public static final String TT_ULTRA_TERMINAL_RESTOCK_ON = TT_ULTRA_TERMINAL_RESTOCK + ".on"; @@ -119,14 +113,9 @@ public class NameConst { public static final String WAILA_KEY = FluidCraft.MODID + ".waila."; public static final String WAILA_ENABLE = WAILA_KEY + "enable"; public static final String WAILA_DISABLE = WAILA_KEY + "disable"; - public static final String WAILA_SPEED = WAILA_KEY + "speed"; public static final String RES_KEY = FluidCraft.MODID + ":"; public static final String GUI_KEY = FluidCraft.MODID + ".gui."; - public static final String GUI_FLUID_LEVEL_EMITTER = GUI_KEY + ITEM_PART_FLUID_LEVEL_EMITTER; - public static final String GUI_FLUID_TERMINAL = GUI_KEY + ITEM_PART_FLUID_TERMINAL; - public static final String GUI_FLUID_PATTERN_TERMINAL = GUI_KEY + ITEM_PART_FLUID_PATTERN_TERMINAL; - public static final String GUI_FLUID_PATTERN_TERMINAL_EX = GUI_KEY + ITEM_PART_FLUID_PATTERN_TERMINAL_EX; public static final String GUI_LEVEL_MAINTAINER = GUI_KEY + BLOCK_LEVEL_MAINTAINER; public static final String GUI_LEVEL_TERMINAL = GUI_KEY + ITEM_PART_LEVEL_TERMINAL; public static final String GUI_FLUID_PATTERN_ENCODER = GUI_KEY + BLOCK_FLUID_PATTERN_ENCODER; @@ -136,9 +125,6 @@ public class NameConst { public static final String GUI_LARGE_INGREDIENT_BUFFER = GUI_KEY + BLOCK_LARGE_INGREDIENT_BUFFER; public static final String GUI_FLUID_INTERFACE = GUI_KEY + BLOCK_FLUID_INTERFACE; public static final String GUI_OC_PATTERN_EDITOR = GUI_KEY + BLOCK_OC_PATTERN_EDITOR; - public static final String GUI_FLUID_IMPORT = GUI_KEY + ITEM_PART_FLUID_IMPORT; - public static final String GUI_FLUID_EXPORT = GUI_KEY + ITEM_PART_FLUID_EXPORT; - public static final String GUI_FLUID_STORAGE_BUS = GUI_KEY + ITEM_PART_FLUID_STORAGE_BUS; public static final String GUI_MAGNET_CARD = GUI_KEY + "magnet"; public static final String GUI_MAGNET_CARD_NBT = GUI_MAGNET_CARD + ".nbt"; diff --git a/src/main/resources/assets/ae2fc/lang/de_DE.lang b/src/main/resources/assets/ae2fc/lang/de_DE.lang index 011882c4..2cb1bbfb 100644 --- a/src/main/resources/assets/ae2fc/lang/de_DE.lang +++ b/src/main/resources/assets/ae2fc/lang/de_DE.lang @@ -77,7 +77,6 @@ tile.fluid_auto_filler.name=ME-Flüssigkeits-Füllautomat tile.certus_quartz_tank.name=Certusquarztank - %s tile.certus_quartz_tank_empty.name=Certusquarztank -ae2fc.waila.speed=Geschwindigkeit ae2fc.waila.enable=An ae2fc.waila.disable=Aus @@ -120,14 +119,11 @@ ae2fc.tooltip.ultra_terminal.tips=Tool-Tipps: ae2fc.tooltip.ultra_terminal.tips.desc=1.Du kannst es in einen Schmuckslot packen, und einen Hotkey zum Öffnen benutzen.\n2.Schnittstellenmodus: Halte §3Shift§7 Schnittstellen-Umbenenn-Knopf.\n3.In der Fertigungsplan-Ansicht\nhalte §3Shift§7 und klicke den "Abbrechen"-Knopf, und die Fehlenden Items\nwerden als NEI-Lesezeichen eingefügt. ae2fc.tooltip.ultra_terminal.restock.on=Wiederauffüllen an ae2fc.tooltip.ultra_terminal.restock.off=Wiederauffüllen aus -ae2fc.tooltip.infinity_fluid=§aUnendlich§r ae2fc.tooltip.fluid_storage.void=Wo nichts alles ist, und alles nichts ae2fc.tooltip.quantum_bridge_card.desc=Erlaubt es Handkonsolen, sich für unendliche Reichweite mit einer Quantenbrücke zu verbinden ae2fc.tooltip.energy_card.desc=Unendlich Energie für die Handkonsole -ae2fc.tooltip.cell_contents=Enthält Flüssigkeit: -ae2fc.tooltip.cell_empty=Zelle leer ae2fc.tooltip.cell_portable=Rechtsklick um Ansicht zu öffnen. Funktioniert wie ein Rucksack, aber du musst sie erst aufladen. ae2fc.tooltip.fluid_terminal=Also brauchen wir kein EC2 mehr? ae2fc.tooltip.level_terminal=Äääh... @@ -179,8 +175,6 @@ ae2fc.tooltip.restock.on.hint=An ae2fc.tooltip.restock.off=Wiederauffüllen ae2fc.tooltip.restock.off.hint=Aus -ae2fc.gui.part_fluid_pattern_terminal=Flüssigkeitsschablonenkonsole -ae2fc.gui.part_fluid_pattern_terminal_ex=Flüssigkeitsverarbeitungsschablonenkonsole ae2fc.gui.part_level_terminal=Füllstand-Konsole ae2fc.gui.fluid_pattern_encoder=Flüssigkeitsschablonenkodierer ae2fc.gui.fluid_packet_decoder=ME-Flüssigkeitspaketdekodierer @@ -196,11 +190,6 @@ ae2fc.gui.fluid_interface.4=W ae2fc.gui.fluid_interface.5=O ae2fc.gui.oc_pattern_editor=OC-Schabloneneditor ae2fc.gui.button.set=Setzen -ae2fc.gui.part_fluid_level_emitter=ME-Flüssigkeitsfüllstandsemitter -ae2fc.gui.part_fluid_import=ME-Flüssigkeits-Importbus -ae2fc.gui.part_fluid_export=ME-Flüssigkeits-Exportbus -ae2fc.gui.part_fluid_terminal=ME-Flüssigkeitskonsole -ae2fc.gui.part_fluid_storage_bus=ME-Flüssigkeitsspeicherbus ae2fc.gui.fluid_auto_filler=ME-Flüssigkeits-Füllautomat ae2fc.gui.magnet=Magnetfilter diff --git a/src/main/resources/assets/ae2fc/lang/en_US.lang b/src/main/resources/assets/ae2fc/lang/en_US.lang index 49fdf287..b2f0596b 100644 --- a/src/main/resources/assets/ae2fc/lang/en_US.lang +++ b/src/main/resources/assets/ae2fc/lang/en_US.lang @@ -77,7 +77,6 @@ tile.fluid_auto_filler.name=ME Fluid Auto Filler tile.certus_quartz_tank.name=Certus Quartz Tank - %s tile.certus_quartz_tank_empty.name=Certus Quartz Tank -ae2fc.waila.speed=Speed ae2fc.waila.enable=Enable ae2fc.waila.disable=Disable @@ -120,14 +119,11 @@ ae2fc.tooltip.ultra_terminal.tips=Tooltips: ae2fc.tooltip.ultra_terminal.tips.desc=1. You can put it to baubles slot and use hotkey to open.\n2. Interface mode hold §3Shift§7 toggle interface renamer button.\n3. When you are in the crafting plan screen.\nHold §3Shift§7 click cancel button will automatically add missing items to NEI bookmark. ae2fc.tooltip.ultra_terminal.restock.on=Restock activated ae2fc.tooltip.ultra_terminal.restock.off=Restock deactivated -ae2fc.tooltip.infinity_fluid=§aInfinity§r ae2fc.tooltip.fluid_storage.void=Where nothing is everything, and everything is nothing ae2fc.tooltip.quantum_bridge_card.desc=Allows wireless terminals to connect to a quantum bridge, allowing for unlimited range ae2fc.tooltip.energy_card.desc=Infinite Energy for the Wireless Terminal -ae2fc.tooltip.cell_contents=Contains Fluid: -ae2fc.tooltip.cell_empty=Cell is empty ae2fc.tooltip.cell_portable=Right click to open its GUI. It works like a backpack, but you need to charge it before using. ae2fc.tooltip.fluid_terminal=uh So we don't need EC2 anymore? ae2fc.tooltip.level_terminal=uh... @@ -179,8 +175,6 @@ ae2fc.tooltip.restock.on.hint=Enable ae2fc.tooltip.restock.off=Toggle Restock ae2fc.tooltip.restock.off.hint=Disable -ae2fc.gui.part_fluid_pattern_terminal=Fluid Pattern Terminal -ae2fc.gui.part_fluid_pattern_terminal_ex=Fluid Processing Pattern Terminal ae2fc.gui.part_level_terminal=Level Terminal ae2fc.gui.fluid_pattern_encoder=Fluid Pattern Encoder ae2fc.gui.fluid_packet_decoder=ME Fluid Packet Decoder @@ -196,11 +190,6 @@ ae2fc.gui.fluid_interface.4=W ae2fc.gui.fluid_interface.5=E ae2fc.gui.oc_pattern_editor=OC Pattern Editor ae2fc.gui.button.set=Set -ae2fc.gui.part_fluid_level_emitter=ME Fluid Level Emitter -ae2fc.gui.part_fluid_import=ME Fluid Import Bus -ae2fc.gui.part_fluid_export=ME Fluid Export Bus -ae2fc.gui.part_fluid_terminal=ME Fluid Terminal -ae2fc.gui.part_fluid_storage_bus=ME Fluid Storage Bus ae2fc.gui.fluid_auto_filler=ME Fluid Auto Filler ae2fc.gui.magnet=Magnet Filter diff --git a/src/main/resources/assets/ae2fc/lang/ru_RU.lang b/src/main/resources/assets/ae2fc/lang/ru_RU.lang index 9c143098..a937edd5 100644 --- a/src/main/resources/assets/ae2fc/lang/ru_RU.lang +++ b/src/main/resources/assets/ae2fc/lang/ru_RU.lang @@ -77,7 +77,6 @@ tile.fluid_auto_filler.name=МЭ жидкостный авто-заполнит tile.certus_quartz_tank.name=Резервуар из истинного кварца - %s tile.certus_quartz_tank_empty.name=Резервуар из истинного кварца -ae2fc.waila.speed=Скорость ae2fc.waila.enable=Включено ae2fc.waila.disable=Отключено @@ -120,14 +119,11 @@ ae2fc.tooltip.ultra_terminal.tips=Подсказки: ae2fc.tooltip.ultra_terminal.tips.desc=1. Вы можете поместить его в слот Baubles и открыть с помощью привязанной клавиши.\n2. Режим интерфейсов. Удерживайте §3Shift§7 для переключения между кнопками подсветки и переименовывания интерфейсов.\n3. Экран "План создания".\nУдерживая §3Shift§7 нажмите кнопку "Отмена", чтобы автоматически добавить все недостающие ингредиенты в панель закладок NEI. ae2fc.tooltip.ultra_terminal.restock.on=Автопополнение запасов активировать ae2fc.tooltip.ultra_terminal.restock.off=Автопополнение запасов деактивировать -ae2fc.tooltip.infinity_fluid=§aБесконечная/ый§r ae2fc.tooltip.fluid_storage.void=Где ничто есть всё, а всё есть ничто ae2fc.tooltip.quantum_bridge_card.desc=Позволяет беспроводным терминалам подключаться к квантовому мосту, обеспечивая неограниченный радиус действия ae2fc.tooltip.energy_card.desc=Бесконечная энергия для беспроводного терминала -ae2fc.tooltip.cell_contents=Содержит жидкость: -ae2fc.tooltip.cell_empty=Ячейка пуста ae2fc.tooltip.cell_portable=Нажмите ПКМ для открытия её интерфейса. Работает как рюкзак, но её необходимо зарядить перед использованием. ae2fc.tooltip.fluid_terminal=Эмм, нам больше не нужен EC2? ae2fc.tooltip.level_terminal=Эмм... @@ -179,8 +175,6 @@ ae2fc.tooltip.restock.on.hint=Включить ae2fc.tooltip.restock.off=Автопополнение запасов ae2fc.tooltip.restock.off.hint=Отключить -ae2fc.gui.part_fluid_pattern_terminal=Жидкостный терминал шаблонов -ae2fc.gui.part_fluid_pattern_terminal_ex=Жидкостный терминал шаблонов обработки ae2fc.gui.part_level_terminal=Терминал уровня ae2fc.gui.fluid_pattern_encoder=Кодировщик жидкостных шаблонов ae2fc.gui.fluid_packet_decoder=МЭ декодер жидкостных пакетов @@ -196,11 +190,6 @@ ae2fc.gui.fluid_interface.4=Зап ae2fc.gui.fluid_interface.5=Вос ae2fc.gui.oc_pattern_editor=OC редактор шаблонов ae2fc.gui.button.set=Задать -ae2fc.gui.part_fluid_level_emitter=МЭ жидкостный излучатель уровня -ae2fc.gui.part_fluid_import=МЭ жидкостная шина импорта -ae2fc.gui.part_fluid_export=МЭ жидкостная шина экспорта -ae2fc.gui.part_fluid_terminal=МЭ жидкостный терминал -ae2fc.gui.part_fluid_storage_bus=МЭ жидкостная шина хранения ae2fc.gui.fluid_auto_filler=МЭ жидкостный авто-заполнитель ae2fc.gui.magnet=Фильтр магнита diff --git a/src/main/resources/assets/ae2fc/lang/zh_CN.lang b/src/main/resources/assets/ae2fc/lang/zh_CN.lang index 2717ccc9..66a5e95a 100644 --- a/src/main/resources/assets/ae2fc/lang/zh_CN.lang +++ b/src/main/resources/assets/ae2fc/lang/zh_CN.lang @@ -77,7 +77,6 @@ tile.fluid_auto_filler.name=ME流体自动装填器 tile.certus_quartz_tank.name=赛特斯石英水槽 - %s tile.certus_quartz_tank_empty.name=赛特斯石英水槽 -ae2fc.waila.speed=速度 ae2fc.waila.enable=启用 ae2fc.waila.disable=禁用 @@ -118,16 +117,7 @@ ae2fc.tooltip.ultra_terminal.WIRELESS_FLUID_PATTERN_TERMINAL_EX=模式: 增广 ae2fc.tooltip.ultra_terminal=Shift右击切换模式。 ae2fc.tooltip.ultra_terminal.tips=使用提示: ae2fc.tooltip.ultra_terminal.tips.desc=1.你可以把它放到饰品栏内并用热键打开.\n2.接口模式按§3Shift§7切换出接口命名按钮.\n3.当你在合成计划界面时.\n按§3Shift§7点击取消按钮会自动添加合成缺失的物品到NEI收藏栏. -ae2fc.tooltip.ultra_terminal.restock.on=Restock activated -ae2fc.tooltip.ultra_terminal.restock.off=Restock deactivated -ae2fc.tooltip.infinity_fluid=§aInfinity§r -ae2fc.tooltip.fluid_storage.void=Where nothing is everything, and everything is nothing -ae2fc.tooltip.quantum_bridge_card.desc=Allows wireless terminals to connect to a quantum bridge, allowing for unlimited range -ae2fc.tooltip.energy_card.desc=Infinite Energy for the Wireless Terminal - -ae2fc.tooltip.cell_contents=内含流体: -ae2fc.tooltip.cell_empty=空存储 ae2fc.tooltip.cell_portable=右键打开GUI,它就像一个背包,但你需要在使用前给它充能。 ae2fc.tooltip.fluid_terminal=我们不再需要EC2了吗? ae2fc.tooltip.level_terminal=uh... @@ -179,8 +169,6 @@ ae2fc.tooltip.restock.on.hint=Enable ae2fc.tooltip.restock.off=Toggle Restock ae2fc.tooltip.restock.off.hint=Disable -ae2fc.gui.part_fluid_pattern_terminal=ME流体样板终端 -ae2fc.gui.part_fluid_pattern_terminal_ex=ME增广流体样板终端 ae2fc.gui.part_level_terminal=Level Terminal ae2fc.gui.fluid_pattern_encoder=流体适配型样板编码台 ae2fc.gui.fluid_packet_decoder=ME流体封包解码器 @@ -196,11 +184,6 @@ ae2fc.gui.fluid_interface.4=西 ae2fc.gui.fluid_interface.5=东 ae2fc.gui.oc_pattern_editor=OC样板编辑器 ae2fc.gui.button.set=设置 -ae2fc.gui.part_fluid_level_emitter=ME流体发信器 -ae2fc.gui.part_fluid_import=ME流体输入总线 -ae2fc.gui.part_fluid_export=ME流体输出总线 -ae2fc.gui.part_fluid_terminal=流体终端 -ae2fc.gui.part_fluid_storage_bus=ME流体存储总线 ae2fc.gui.fluid_auto_filler=ME流体自动装填器 ae2fc.gui.magnet=Magnet Filter