diff --git a/build.gradle.kts b/build.gradle.kts index cb9720c..6e5641e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,4 +9,4 @@ java { targetCompatibility = JavaVersion.VERSION_1_8 } -version = "0.1.4" +version = "0.2.0" diff --git a/gradle.properties b/gradle.properties index 218397c..05c9991 100644 --- a/gradle.properties +++ b/gradle.properties @@ -74,7 +74,7 @@ apiPackage = accessTransformersFile = # Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled! -usesMixins = false +usesMixins = true # Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main. # This can speed up compile times thanks to not running the mixin annotation processor on all input sources. @@ -82,18 +82,18 @@ usesMixins = false separateMixinSourceSet = # Adds some debug arguments like verbose output and class export. -usesMixinDebug = false +usesMixinDebug = true # Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise. mixinPlugin = # Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail! -mixinsPackage = +mixinsPackage = mixins # 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 = +coreModClass = mixins.EarlyMixinsLoader # 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.kts b/settings.gradle.kts index 4294dba..cdf5e41 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -21,5 +21,5 @@ pluginManagement { } plugins { - id("com.gtnewhorizons.gtnhsettingsconvention") version("1.0.38") + id("com.gtnewhorizons.gtnhsettingsconvention") version("1.0.48") } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java b/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java index 75119c3..e8e820c 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/CAModMain.java @@ -35,7 +35,9 @@ public class CAModMain { + ",);" // buildVersion + "required-after:clayium@[0.4.6.36.hotfix2,);" // clayium + "after:etfuturum@[2.6.2,);" // Et Futurum Requiem - + "after:bogosorter@[1.2.51-GTNH,)"; + + "after:bogosorter@[1.2.51-GTNH,);" + + "required-after:gtnhmixins@[2.0.1,);" + + "required-after:unimixins@[0.0.20,);"; @SidedProxy( clientSide = "com.nao7016.ClayiumAdditions.client.ClientProxy", serverSide = "com.nao7016.ClayiumAdditions.common.CommonProxy") diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index c64a8f9..894f9d4 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -11,6 +11,7 @@ import com.nao7016.ClayiumAdditions.item.itemClayMiningHammer; import com.nao7016.ClayiumAdditions.item.itemRawClayOre; import com.nao7016.ClayiumAdditions.item.storagebox.itemClayStorageBox; +import com.nao7016.ClayiumAdditions.item.storagebox.itemMiningStorageBox; import com.nao7016.ClayiumAdditions.item.storagebox.itemStorageBox; import cpw.mods.fml.common.Loader; @@ -27,6 +28,7 @@ public class CAItems { public static Item clayMiningHammer; public static Item storageBox; public static Item clayStorageBox; + public static Item miningStorageBox; private static Item register(Item item, String name) { GameRegistry.registerItem(item, name); @@ -58,6 +60,7 @@ public static void registerItems() { if (Config.cfgStorageBox) { storageBox = register(new itemStorageBox(), "storage_box"); clayStorageBox = register(new itemClayStorageBox(), "clay_storage_box"); + miningStorageBox = register(new itemMiningStorageBox(), "mining_storage_box"); } } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java index 1a044d1..87cec3d 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java @@ -47,13 +47,14 @@ public void init(FMLInitializationEvent event) { MinecraftForge.EVENT_BUS.register(new HammerEvent()); MinecraftForge.EVENT_BUS.register(new MiningHammerEvent()); MinecraftForge.EVENT_BUS.register(new AutoCollect()); - } - // postInit "Handle interaction with other mods, complete your setup based on this." (Remove if not needed) - public void postInit(FMLPostInitializationEvent event) { if (Loader.isModLoaded("NotEnoughItems")) { NEIPluginClayiumAdditions.registerNEI(); } + } + + // postInit "Handle interaction with other mods, complete your setup based on this." (Remove if not needed) + public void postInit(FMLPostInitializationEvent event) { if (!ClayiumCore.cfgEnableFluidCapsule && ClayiumCore.creativeTabClayiumCapsule != null) { ((CreativeTab) ClayiumCore.creativeTabClayiumCapsule).setTabIconItem(Items.bucket); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumAdditionsCatalyst.java b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumAdditionsCatalyst.java index 4e70763..f332cc5 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumAdditionsCatalyst.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumAdditionsCatalyst.java @@ -10,6 +10,7 @@ import codechicken.nei.recipe.CatalystInfo; import codechicken.nei.recipe.RecipeCatalysts; +@Deprecated public class NEIClayiumAdditionsCatalyst { public static void registerHammerCatalysts() { diff --git a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumCatalyst.java b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumCatalyst.java index 96a67a4..1d43553 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumCatalyst.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIClayiumCatalyst.java @@ -11,6 +11,7 @@ import codechicken.nei.recipe.RecipeCatalysts; import mods.clayium.block.CBlocks; +@Deprecated public class NEIClayiumCatalyst { public static void registerMachineCatalysts() { diff --git a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIIMCSender.java b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIIMCSender.java new file mode 100644 index 0000000..7dfd479 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIIMCSender.java @@ -0,0 +1,267 @@ +package com.nao7016.ClayiumAdditions.compat.nei; + +import java.util.Arrays; +import java.util.Objects; + +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; + +import com.nao7016.ClayiumAdditions.common.AddMachines; +import com.nao7016.ClayiumAdditions.common.CAItems; +import com.nao7016.ClayiumAdditions.common.Config; + +import cpw.mods.fml.common.event.FMLInterModComms; +import cpw.mods.fml.common.registry.GameRegistry; +import mods.clayium.block.CBlocks; + +public class NEIIMCSender { + + public static void IMCHandlerSender() { + // template + // sendHandlerClayium("", "clayium:blockBasic"); + + // tier 0 + sendHandlerClayium("ClayWorkTable", "clayium:blockClayWorkTable"); + + // tier 1 + sendHandlerClayium("BendingMachine", "clayium:blockClayWorkTable"); + sendHandlerClayium("WireDrawingMachine", "clayium:blockBasicWireDrawingMachine"); + sendHandlerClayium("PipeDrawingMachine", "clayium:blockBasicPipeDrawingMachine"); + sendHandlerClayium("CuttingMachine", "clayium:blockBasicCuttingMachine"); + sendHandlerClayium("Lathe", "clayium:blockBasicLathe"); + sendHandlerClayium("MillingMachine", "clayium:blockBasicMillingMachine"); + sendHandlerClayium("CobblestoneGenerator", "clayium:blockBasicCobblestoneGenerator"); + + // tier 2 + sendHandlerClayium("Condenser", "clayium:blockBasicCondenser"); + sendHandlerClayium("Grinder", "clayium:blockBasicGrinder"); + sendHandlerClayium("Decomposer", "clayium:blockBasicDecomposer"); + + // tier 3 + sendHandlerClayium("Assembler", "clayium:blockBasicAssembler"); + sendHandlerClayium("Centrifuge", "clayium:blockBasicCentrifuge"); + sendHandlerClayium("Inscriber", "clayium:blockBasicInscriber"); + sendHandlerClayium("ECCondenser", "clayium:blockEnergeticClayCondenserMK2"); + + // tier 4 + sendHandlerClayium("Smelter", "clayium:blockBasicSmelter"); + sendHandlerClayium("ChemicalReactor", "clayium:blockBasicChemicalReactor"); + sendHandlerClayium("SaltExtractor", "clayium:blockBasicSaltExtractor"); + + // tier 5 + sendHandlerClayium("QuartzCrucible", "clayium:blockQuartzCrucible", 1, false); + sendHandlerClayium("SolarClayFabricator", "clayium:blockSolarClayFabricatorMK1"); + + // tier 6 + sendHandlerClayium("BlastFurnace", "clayium:blockClayBlastFurnace"); + sendHandlerClayium("AlloySmelter", "clayium:blockAlloySmelter"); + sendHandlerClayium("ChemicalMetalSeparator", "clayium:blockChemicalMetalSeparator"); + sendHandlerClayium("ElectrolysisReactor", "clayium:blockPrecisionElectrolysisReactor"); + + // tier 7 + sendHandlerClayium("Reactor", "clayium:blockClayReactor"); + sendHandlerClayium("ClayTree", "clayium:blockClayTreeSapling", 1, false); + sendHandlerClayium("MatterTransformer", "clayium:blockClaySteelTransformer"); + + // tier 9 + sendHandlerClayium("CACondenser", "clayium:itemGems:800"); + sendHandlerClayium("CAInjector", "clayium:blockAntimatterCAInjector"); + + // tier 10 + sendHandlerClayium("CAReactor", "clayium:itemGems:801"); + sendHandlerClayium("ECDecomposer", "clayium:blockEnergeticClayDecomposer"); + + if (Config.cfgModeSky) { + sendHandlerCA("ClayHammer", "clayiumadditions:clay_hammer"); + } + } + + public static void IMCCatalystSender() { + // tier 0 + sendCatalyst("ClayWorkTable", CBlocks.blockClayWorkTable); + sendCatalyst("crafting", CBlocks.blockClayCraftingTable); + + // tier 1 + sendCatalyst("BendingMachine", CBlocks.blocksBendingMachine); + sendCatalyst("WireDrawingMachine", CBlocks.blocksWireDrawingMachine); + sendCatalyst("PipeDrawingMachine", CBlocks.blocksPipeDrawingMachine); + sendCatalyst("CuttingMachine", CBlocks.blocksCuttingMachine); + sendCatalyst("Lathe", CBlocks.blocksLathe); + sendCatalyst("MillingMachine", CBlocks.blockElementalMillingMachine); + sendCatalyst("MillingMachine", CBlocks.blocksMillingMachine); + sendCatalyst("CobblestoneGenerator", CBlocks.blocksCobblestoneGenerator); + + // tier 2 + sendCatalyst("Condenser", CBlocks.blocksCondenser); + sendCatalyst("Grinder", CBlocks.blocksGrinder); + sendCatalyst("Decomposer", CBlocks.blocksDecomposer); + + // tier 3 + sendCatalyst("Assembler", CBlocks.blocksAssembler); + sendCatalyst("Centrifuge", CBlocks.blocksCentrifuge); + sendCatalyst("Inscriber", CBlocks.blocksInscriber); + sendCatalyst("ECCondenser", CBlocks.blockEnergeticClayCondenser); + sendCatalyst("ECCondenser", CBlocks.blockEnergeticClayCondenserMK2); + + // tier 4 + sendCatalyst("Smelter", CBlocks.blocksSmelter); + sendCatalyst("ChemicalReactor", CBlocks.blocksChemicalReactor); + sendCatalyst("SaltExtractor", CBlocks.blocksSaltExtractor); + + // tier 5 + sendCatalyst("QuartzCrucible", CBlocks.blockQuartzCrucible); + sendCatalyst("SolarClayFabricator", CBlocks.blockSolarClayFabricatorMK1); + sendCatalyst("SolarClayFabricator", CBlocks.blockSolarClayFabricatorMK2); + sendCatalyst("SolarClayFabricator", CBlocks.blockLithiumSolarClayFabricator); + + // tier 6 + sendCatalyst("BlastFurnace", CBlocks.blockClayBlastFurnace); + sendCatalyst("AlloySmelter", CBlocks.blocksAlloySmelter); + sendCatalyst("ChemicalMetalSeparator", CBlocks.blockChemicalMetalSeparator); + sendCatalyst("ElectrolysisReactor", CBlocks.blocksElectrolysisReactor); + + // tier 7 + sendCatalyst("Reactor", CBlocks.blockClayReactor); + sendCatalyst("ClayTree", CBlocks.blocksClayEnergyLaser); + sendCatalyst("ClayTree", CBlocks.blockClayTreeLog); + + // tier 9 + sendCatalyst("MatterTransformer", CBlocks.blocksTransformer); + sendCatalyst("CACondenser", CBlocks.blocksCACondenser); + + // tier 10 + sendCatalyst("CAInjector", CBlocks.blocksCAInjector); + sendCatalyst("CAReactor", CBlocks.blocksCAReactorCore); + + // tier 13 + sendCatalyst("ECDecomposer", CBlocks.blockEnergeticClayDecomposer); + + if (Config.cfgAddMachines) { + // tier 1 + sendCatalyst("BendingMachine", AddMachines.blocksAddBendingMachine); + sendCatalyst("WireDrawingMachine", AddMachines.blocksAddWireDrawingMachine); + sendCatalyst("PipeDrawingMachine", AddMachines.blocksAddPipeDrawingMachine); + sendCatalyst("CuttingMachine", AddMachines.blocksAddCuttingMachine); + sendCatalyst("Lathe", AddMachines.blocksAddLathe); + sendCatalyst("MillingMachine", AddMachines.blocksAddMillingMachine); + sendCatalyst("CobblestoneGenerator", AddMachines.blocksAddCobblestoneGenerator); + + // tier 2 + sendCatalyst("Condenser", AddMachines.blocksAddCondenser); + sendCatalyst("Grinder", AddMachines.blocksAddGrinder); + sendCatalyst("Decomposer", AddMachines.blocksAddDecomposer); + + // tier 3 + sendCatalyst("Assembler", AddMachines.blocksAddAssembler); + sendCatalyst("Centrifuge", AddMachines.blocksAddCentrifuge); + sendCatalyst("Inscriber", AddMachines.blocksAddInscriber); + + // tier 4 + sendCatalyst("Smelter", AddMachines.blocksAddSmelter); + sendCatalyst("ChemicalReactor", AddMachines.blocksAddChemicalReactor); + sendCatalyst("SaltExtractor", AddMachines.blocksAddSaltExtractor); + + // tier 6 + sendCatalyst("ElectrolysisReactor", AddMachines.blocksAddElectrolysisReactor); + + // tier 9 + sendCatalyst("MatterTransformer", AddMachines.blocksAddTransformer); + sendCatalyst("CACondenser", AddMachines.blocksAddCACondenser); + } + + if (Config.cfgModeSky) { + sendCatalyst("ClayHammer", CAItems.clayHammer); + } + } + + private static void sendHandlerClayium(String handlerId, String name) { + sendHandlerClayium(handlerId, name, 5, true); + } + + private static void sendHandlerClayium(String handlerId, String name, int maxRecipesPerPage, boolean showButtons) { + sendHandler(handlerId, "Clayium", "clayium", true, name, 65, 166, maxRecipesPerPage, showButtons); + } + + private static void sendHandlerCA(String handlerId, String name) { + sendHandlerCA(handlerId, name, 5, true); + } + + private static void sendHandlerCA(String handlerId, String name, int maxRecipesPerPage, boolean showButtons) { + sendHandler( + handlerId, + "ClayiumAdditions", + "clayiumadditions", + true, + name, + 65, + 166, + maxRecipesPerPage, + showButtons); + } + + private static void sendHandler(String handlerId, String modName, String modId, boolean modRequired, String block, + int handlerHeight, int handlerWidth, int maxRecipesPerPage, boolean showButtons) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("handler", handlerId); + nbt.setString("modName", modName); + nbt.setString("modId", modId); + nbt.setBoolean("modRequired", modRequired); + nbt.setString("itemName", block); + nbt.setInteger("handlerHeight", handlerHeight); + nbt.setInteger("handlerWidth", handlerWidth); + nbt.setInteger("maxRecipesPerPage", maxRecipesPerPage); + nbt.setBoolean("showFavoritesButton", showButtons); + nbt.setBoolean("showOverlayButton", showButtons); + FMLInterModComms.sendMessage("NotEnoughItems", "registerHandlerInfo", nbt); + } + + private static void sendCatalyst(String id, Object[] objects) { + String[] stacks = getNames(objects); + sendCatalyst(id, stacks); + } + + private static void sendCatalyst(String id, String[] names) { + names = nonNullObjects(names); + for (String name : names) { + sendCatalyst(id, name); + } + } + + private static void sendCatalyst(String id, Object object) { + String name = getName(object); + if (name == null) return; + sendCatalyst(id, name); + } + + private static void sendCatalyst(String id, String name) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("handlerID", id); + nbt.setString("itemName", name); + nbt.setInteger("priority", 0); + FMLInterModComms.sendMessage("NotEnoughItems", "registerCatalystInfo", nbt); + } + + private static String getName(Object object) { + if (object instanceof Block) return GameRegistry.findUniqueIdentifierFor((Block) object) + .toString(); + if (object instanceof Item) return GameRegistry.findUniqueIdentifierFor((Item) object) + .toString(); + return null; + } + + private static String[] getNames(Object[] objects) { + objects = nonNullObjects(objects); + String[] names = new String[objects.length]; + for (int i = 0; i < objects.length; i++) { + names[i] = getName(objects[i]); + } + return names; + } + + private static T[] nonNullObjects(T[] objects) { + return Arrays.stream(objects) + .filter(Objects::nonNull) + .toArray(size -> Arrays.copyOf(objects, size)); + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIPluginClayiumAdditions.java b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIPluginClayiumAdditions.java index ca31c53..0b42349 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIPluginClayiumAdditions.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEIPluginClayiumAdditions.java @@ -7,8 +7,8 @@ public class NEIPluginClayiumAdditions { public static void registerNEI() { - NEIClayiumCatalyst.registerMachineCatalysts(); - NEIClayiumAdditionsCatalyst.registerHammerCatalysts(); + NEIIMCSender.IMCHandlerSender(); + NEIIMCSender.IMCCatalystSender(); registerHammer(); } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/ContainerStorage.java b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/ContainerStorage.java index 8742b9c..0aa4a7c 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/ContainerStorage.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/ContainerStorage.java @@ -50,6 +50,9 @@ public ItemStack transferStackInSlot(EntityPlayer player, int index) { if (stack.getItem() instanceof itemStorageBox) return null; + itemStorageBox box = getBoxItem(); + if (!box.canStore(stack)) return null; + int storageSlotStart = 0; int storageSlotEnd = 1; int playerInvStart = storageSlotEnd; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemClayStorageBox.java b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemClayStorageBox.java index cbd3c61..638b7b0 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemClayStorageBox.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemClayStorageBox.java @@ -42,7 +42,7 @@ public itemClayStorageBox() { @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { - defaultIcon = iconRegister.registerIcon("clayiumadditions:clay_storage_box"); + defaultIcon = iconRegister.registerIcon("clayiumadditions:storage_box_clay"); this.itemIcon = defaultIcon; } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemMiningStorageBox.java b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemMiningStorageBox.java new file mode 100644 index 0000000..05173de --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemMiningStorageBox.java @@ -0,0 +1,62 @@ +package com.nao7016.ClayiumAdditions.item.storagebox; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class itemMiningStorageBox extends itemStorageBox { + + private IIcon defaultIcon; + + public itemMiningStorageBox() { + super(); + setUnlocalizedName("mining_storage_box"); + } + + private static final Set Whitelist = new HashSet<>( + Arrays.asList( + Item.getItemFromBlock(Blocks.dirt), + Item.getItemFromBlock(Blocks.cobblestone), + Item.getItemFromBlock(Blocks.stone), + Item.getItemFromBlock(Blocks.gravel), + Items.flint, + Item.getItemFromBlock(Blocks.sand), + Item.getItemFromBlock(Blocks.sandstone), + Item.getItemFromBlock(Blocks.torch), + Item.getItemFromBlock(Blocks.netherrack), + Item.getItemFromBlock(Blocks.soul_sand))); + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) { + defaultIcon = iconRegister.registerIcon("clayiumadditions:storage_box_mining"); + this.itemIcon = defaultIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int damage) { + return defaultIcon; + } + + @Override + public Item setUnlocalizedName(String name) { + super.setUnlocalizedName(name); + return this; + } + + @Override + public boolean canStore(ItemStack stack) { + return super.canStore(stack) && Whitelist.contains(stack.getItem()); + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java new file mode 100644 index 0000000..dca4260 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/EarlyMixinsLoader.java @@ -0,0 +1,48 @@ +package com.nao7016.ClayiumAdditions.mixins; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +import com.gtnewhorizon.gtnhmixins.IEarlyMixinLoader; +import com.gtnewhorizon.gtnhmixins.builders.IMixins; +import com.nao7016.ClayiumAdditions.CAModMain; + +import cpw.mods.fml.relauncher.IFMLLoadingPlugin; + +@IFMLLoadingPlugin.MCVersion("1.7.10") +public class EarlyMixinsLoader implements IFMLLoadingPlugin, IEarlyMixinLoader { + + @Override + public String[] getASMTransformerClass() { + return null; + } + + @Override + public String getModContainerClass() { + return null; + } + + @Override + public String getSetupClass() { + return null; + } + + @Override + public void injectData(Map data) {} + + @Override + public String getAccessTransformerClass() { + return null; + } + + @Override + public String getMixinConfig() { + return "mixins." + CAModMain.MODID + ".early.json"; + } + + @Override + public List getMixins(Set loadedCoreMods) { + return IMixins.getEarlyMixins(Mixins.class, loadedCoreMods); + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java new file mode 100644 index 0000000..b550e4b --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/Mixins.java @@ -0,0 +1,24 @@ +package com.nao7016.ClayiumAdditions.mixins; + +import javax.annotation.Nonnull; + +import com.gtnewhorizon.gtnhmixins.builders.IMixins; +import com.gtnewhorizon.gtnhmixins.builders.MixinBuilder; + +public enum Mixins implements IMixins { + + CLAYIUM(new MixinBuilder().setPhase(Phase.EARLY) + .addCommonMixins("MixinTilePANCore")); + + private final MixinBuilder builder; + + Mixins(MixinBuilder builder) { + this.builder = builder; + } + + @Nonnull + @Override + public MixinBuilder getBuilder() { + return builder; + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java new file mode 100644 index 0000000..2cb06c1 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/mixins/early/MixinTilePANCore.java @@ -0,0 +1,30 @@ +package com.nao7016.ClayiumAdditions.mixins.early; + +import static mods.clayium.util.crafting.CRecipes.i; + +import java.util.Set; + +import net.minecraft.item.ItemStack; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +import com.nao7016.ClayiumAdditions.common.CAItems; + +import mods.clayium.block.tile.TilePANCore; + +@Mixin(value = TilePANCore.class, remap = false) +public class MixinTilePANCore { + + @ModifyVariable(method = "refreshItemSet", at = @At("STORE"), name = "prohibiteds", require = 1) + private Set addProhibited(Set prohibiteds) { + + for (int tier = 4; tier <= 12; tier++) { + ItemStack energyClay = i(CAItems.clayEnergy, 1, tier); + prohibiteds.add(new TilePANCore.ItemStackWithEnergy(energyClay, 0, 0)); + } + + return prohibiteds; + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java index cf3b371..fe2923d 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java @@ -206,23 +206,41 @@ private static void registerCESplitted() { } private static void registerCMachines() { + CMaterial[] clays = new CMaterial[] { CMaterials.CLAY, CMaterials.DENSE_CLAY, CMaterials.IND_CLAY, + CMaterials.ADVIND_CLAY }; CMaterial[] materials = new CMaterial[] { CMaterials.IMPURE_SILICON, CMaterials.SILICON, CMaterials.SILICONE, CMaterials.ALUMINIUM, CMaterials.CLAY_STEEL, CMaterials.CLAYIUM, CMaterials.ULTIMATE_ALLOY, CMaterials.AZ91D_ALLOY, CMaterials.ZK60A_ALLOY }; if (Config.cfgQoLRecipe) { + // Bending Clays + for (CMaterial clay : clays) { + CRecipes.recipeBendingMachine.addRecipe( + CMaterials.get(clay, CMaterials.BLOCK, 4), + getTier(clay) + 3, + CMaterials.get(clay, CMaterials.PLATE, 4), + 4L * e(getTier(clay)), + (long) ((int) clay.hardness)); + CRecipes.recipeBendingMachine.addRecipe( + CMaterials.get(clay, CMaterials.PLATE, 16), + getTier(clay) + 3, + CMaterials.get(clay, CMaterials.LARGE_PLATE, 4), + 4L * e(getTier(clay)), + (long) ((int) (2.0F * clay.hardness))); + } + // Bending Materials for (CMaterial material : materials) { CRecipes.recipeBendingMachine.addRecipe( - CMaterials.getOD(material, CMaterials.INGOT), + CMaterials.getOD(material, CMaterials.INGOT, 4), 9, - CMaterials.get(material, CMaterials.PLATE), - e(7), + CMaterials.get(material, CMaterials.PLATE, 4), + 4L * e(7), (long) ((int) (material.hardness))); CRecipes.recipeBendingMachine.addRecipe( - CMaterials.getOD(material, CMaterials.PLATE, 4), + CMaterials.getOD(material, CMaterials.PLATE, 16), 9, - CMaterials.get(material, CMaterials.LARGE_PLATE), - e(7), + CMaterials.get(material, CMaterials.LARGE_PLATE, 4), + 4L * e(7), (long) ((int) (2.0F * material.hardness))); } } @@ -269,7 +287,7 @@ private static void registerAssembler() { if (Config.cfgAutoWaterWheel) { for (int i = 2; i <= 4; i++) { CRecipes.recipeAssembler.addRecipe( - ii(i(CABlocks.blocksWaterWheel[i]), CMaterials.get(getTier(i + 1), CMaterials.LARGE_PLATE)), + ii(i(CABlocks.blocksWaterWheel[i]), CMaterials.get(getMaterial(i + 1), CMaterials.LARGE_PLATE)), 0, i + 1, ii(i(CABlocks.blocksWaterWheel[i + 1])), @@ -278,9 +296,10 @@ private static void registerAssembler() { } } + // Buffer One for (int i = 4; i <= 13; i++) { CRecipes.recipeAssembler.addRecipe( - ii(i(CBlocks.blocksBuffer[i]), CMaterials.get(getTier(i), CMaterials.PLATE)), + ii(i(CBlocks.blocksBuffer[i]), CMaterials.get(getMaterial(i), CMaterials.PLATE)), 0, 4, ii(i(CABlocks.blocksBufferOne[i], 2)), @@ -288,6 +307,7 @@ private static void registerAssembler() { 40L); } + // Circuit and Synchro if (Config.cfgQoLRecipe) { CRecipes.recipeAssembler.addRecipe( ii(CItems.itemMisc.get("PrecisionCircuit"), CMaterials.get(CMaterials.EXC_CLAY, CMaterials.DUST, 8)), @@ -410,7 +430,7 @@ private static void registerCAInjector() { } } - public static CMaterial getTier(int tier) { + public static CMaterial getMaterial(int tier) { if (tier == 1) return CMaterials.CLAY; if (tier == 2) return CMaterials.DENSE_CLAY; if (tier == 3) return CMaterials.IND_CLAY; @@ -431,6 +451,27 @@ public static CMaterial getTier(int tier) { return null; } + public static int getTier(CMaterial material) { + if (material == CMaterials.CLAY) return 1; + if (material == CMaterials.DENSE_CLAY) return 2; + if (material == CMaterials.IND_CLAY) return 3; + if (material == CMaterials.ADVIND_CLAY) return 4; + if (material == CMaterials.IMPURE_SILICON) return 5; + if (ClayiumCore.cfgHardcoreAluminium) { + if (material == CMaterials.IMPURE_ALUMINIUM) return 6; + } else { + if (material == CMaterials.ALUMINIUM) return 6; + } + if (material == CMaterials.CLAY_STEEL) return 7; + if (material == CMaterials.CLAYIUM) return 8; + if (material == CMaterials.ULTIMATE_ALLOY) return 9; + if (material == CMaterials.ANTIMATTER) return 10; + if (material == CMaterials.PURE_ANTIMATTER) return 11; + if (material == CMaterials.OCTUPLE_CLAY) return 12; + if (material == CMaterials.OCTUPLE_PURE_ANTIMATTER) return 13; + return -1; + } + private static void recipeCAInjector(Block[] blocks) { if (blocks == null) return; diff --git a/src/main/resources/assets/clayiumadditions/lang/en_US.lang b/src/main/resources/assets/clayiumadditions/lang/en_US.lang index 042e66d..7b9c818 100644 --- a/src/main/resources/assets/clayiumadditions/lang/en_US.lang +++ b/src/main/resources/assets/clayiumadditions/lang/en_US.lang @@ -3,15 +3,15 @@ #If you want to translate "__DETAIL__", please use "tooltip.HoldShiftForDetails=". #en_US and ja_JP are already available "__DETAIL__" translation, not necessary to add the key. -item.clay_energy.4.name=Splitted Energetic Clay -item.clay_energy.5.name=Splitted Compressed Energetic Clay -item.clay_energy.6.name=Splitted Double Compressed Energetic Clay -item.clay_energy.7.name=Splitted Triple Compressed Energetic Clay -item.clay_energy.8.name=Splitted Quadruple Compressed Energetic Clay -item.clay_energy.9.name=Splitted Quintuple Compressed Energetic Clay -item.clay_energy.10.name=Splitted Sextuple Energetic Clay -item.clay_energy.11.name=Splitted Septuple Energetic Clay -item.clay_energy.12.name=Splitted Octuple Energetic Clay +item.clay_energy.4.name=Split Energetic Clay +item.clay_energy.5.name=Split Compressed Energetic Clay +item.clay_energy.6.name=Split Double Compressed Energetic Clay +item.clay_energy.7.name=Split Triple Compressed Energetic Clay +item.clay_energy.8.name=Split Quadruple Compressed Energetic Clay +item.clay_energy.9.name=Split Quintuple Compressed Energetic Clay +item.clay_energy.10.name=Split Sextuple Energetic Clay +item.clay_energy.11.name=Split Septuple Energetic Clay +item.clay_energy.12.name=Split Octuple Energetic Clay item.clay_energy.tooltip.line1=Oh, over-compressed? item.clay_energy.tooltip.line2=OK, JUST 1 decompression. item.clay_bowl_empty.name=Empty Clay Bowl @@ -32,7 +32,13 @@ item.storage_box.name=Storage Box item.storage_box.tooltip.line1=The true Storage Box item.clay_storage_box.name=Clay Storage Box item.clay_storage_box.tooltip.line1=Toy Clay Box -item.clay_storage_box.tooltip.line2=Can be stored: Clay Ball, (Compressed) Clay Blocks, Clay Ores +item.clay_storage_box.tooltip.line2=__DETAIL__ +item.clay_storage_box.tooltip.line3=Can be stored: Clay Ball, (Compressed) Clay Blocks, Clay Ores +item.mining_storage_box.name=Mining Storage Box +item.mining_storage_box.tooltip.line1=Essential items for miners +item.mining_storage_box.tooltip.line2=__DETAIL__ +item.mining_storage_box.tooltip.line3=Can be stored: Dirt, Stone, Cobblestone, Gravel, Flint, +item.mining_storage_box.tooltip.line4=Sand, Torch, Netherrack, Soul Sand tile.blockAutoSimpleWaterWheel.name=Simple Auto Clay Water Wheel tile.blockAutoBasicWaterWheel.name=Basic Auto Clay Water Wheel diff --git a/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang b/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang index 2fb8b0e..be56102 100644 --- a/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang +++ b/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang @@ -32,7 +32,13 @@ item.storage_box.name=ストレージボックス item.storage_box.tooltip.line1=本物のストレージボックス item.clay_storage_box.name=粘土ストレージボックス item.clay_storage_box.tooltip.line1=おもちゃの粘土箱 -item.clay_storage_box.tooltip.line2=入るアイテム : 粘土玉、(圧縮)粘土ブロック系、粘土鉱石類 +item.clay_storage_box.tooltip.line2=__DETAIL__ +item.clay_storage_box.tooltip.line3=入るアイテム : 粘土玉, (圧縮)粘土ブロック系, 粘土鉱石類 +item.mining_storage_box.name=採掘ストレージボックス +item.mining_storage_box.tooltip.line1=鉱夫の必需品 +item.mining_storage_box.tooltip.line2=__DETAIL__ +item.mining_storage_box.tooltip.line3=入るアイテム : 土, 石, 丸石, 砂利, 火打石, +item.mining_storage_box.tooltip.line4=砂, 松明, ネザーラック, ソウルサンド tile.blockAutoSimpleWaterWheel.name=簡易自動粘土水車 tile.blockAutoBasicWaterWheel.name=基本自動粘土水車 diff --git a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang index f39c351..7be8e39 100644 --- a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang +++ b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang @@ -32,7 +32,13 @@ item.storage_box.name=Storage Box item.storage_box.tooltip.line1=The true Storage Box item.clay_storage_box.name=Clay Storage Box item.clay_storage_box.tooltip.line1=Toy Clay Box -item.clay_storage_box.tooltip.line2=Can be stored: Clay Ball, (Compressed) Clay Blocks, Clay Ores +item.clay_storage_box.tooltip.line2=__DETAIL__ +item.clay_storage_box.tooltip.line3=Can be stored: Clay Ball, (Compressed) Clay Blocks, Clay Ores +item.mining_storage_box.name=Mining Storage Box +item.mining_storage_box.tooltip.line1=Essential items for miners +item.mining_storage_box.tooltip.line2=__DETAIL__ +item.mining_storage_box.tooltip.line3=Can be stored: Dirt, Stone, Cobblestone, Gravel, Flint, +item.mining_storage_box.tooltip.line4=Sand, Torch, Netherrack, Soul Sand tile.blockAutoSimpleWaterWheel.name=简易自动粘土水车 tile.blockAutoBasicWaterWheel.name=基础自动粘土水车 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/clay_storage_box.png b/src/main/resources/assets/clayiumadditions/textures/items/storage_box_clay.png similarity index 100% rename from src/main/resources/assets/clayiumadditions/textures/items/clay_storage_box.png rename to src/main/resources/assets/clayiumadditions/textures/items/storage_box_clay.png diff --git a/src/main/resources/assets/clayiumadditions/textures/items/storage_box_mining.png b/src/main/resources/assets/clayiumadditions/textures/items/storage_box_mining.png new file mode 100644 index 0000000..4965798 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/storage_box_mining.png differ diff --git a/src/main/resources/assets/nei/csv/handlers.csv b/src/main/resources/assets/nei/csv/handlers.csv.disabled similarity index 100% rename from src/main/resources/assets/nei/csv/handlers.csv rename to src/main/resources/assets/nei/csv/handlers.csv.disabled diff --git a/src/main/resources/mixins.clayiumadditions.early.json b/src/main/resources/mixins.clayiumadditions.early.json new file mode 100644 index 0000000..5ee1734 --- /dev/null +++ b/src/main/resources/mixins.clayiumadditions.early.json @@ -0,0 +1,8 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "package": "com.nao7016.ClayiumAdditions.mixins.early", + "refmap": "mixins.clayiumadditions.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +} diff --git a/src/main/resources/mixins.clayiumadditions.json b/src/main/resources/mixins.clayiumadditions.json new file mode 100644 index 0000000..92d7ef1 --- /dev/null +++ b/src/main/resources/mixins.clayiumadditions.json @@ -0,0 +1,7 @@ +{ + "required": true, + "minVersion": "0.8.5-GTNH", + "refmap": "mixins.clayiumadditions.refmap.json", + "target": "@env(DEFAULT)", + "compatibilityLevel": "JAVA_8" +}