diff options
| author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2022-12-15 16:53:12 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-15 16:53:12 +0100 |
| commit | 8a581938862a4d612f510a8afed88727a34c3916 (patch) | |
| tree | 0307ca87f3c06bbeda6d699aabbc2247b6f38efb /src/main/java | |
| parent | 24a9953b153529191c855af0ae2d10f35844095f (diff) | |
| download | GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.tar.gz GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.tar.bz2 GT5-Unofficial-8a581938862a4d612f510a8afed88727a34c3916.zip | |
MODULAR UI (#34)
* MODULAR UUUUUUUUIIIIIIIIIII
* Tea
* Add recipe to ULTIMATE TEA
* Stupid MT Scripts. I hate it
* Yeet
* More TEA
* Add blocks
* More Modular UIs
* Textures
* Fix custom UI containers
* Texture, tooltip
* UI with tabs
* ButtonWidget
* fix
* Fix
* Texture
* Color is fixed
* More UI work
* Modular UI is hard dependency now
* Spotless
* Simplify
* Format numbers
* A
* Update TeaAcceptorTile.java
* Shadow is fixed, lets gooooo
* hardness
* Mixins mixins mixins
* Tab icons
* Fix crash
* Shop concept
* Bump ModularUI
* Bump Modular UI
* Nooooooooooo
* GREY -> GRAY
* Bump ModularUI
* Bump GT5
* EEC with MUI test
* Include incomplete structure
* REFLECTIONS !!
* Just use slot filter
* Update pos when needed
* Update GT_MetaTileEntity_ExtremeExterminationChamber.java
* Spawner status
* Nice toggle button
* Send messages
* Next toggle button
* Start work on IAADDS
* Scrollable inventory test
* Draw queen slots
* Fix
* Update dependencies.gradle
* Use sync widget
* Add button to enable/disable working
* Configuration in Mega Apiary
* Refactor a bit
* Update ModularUI
* Bump ModularUI
* Bump GT5
* Fix build
* Update dependencies.gradle
* Update build.gradle
* Update dependencies.gradle
* spotless
* Begin working on configuration window
* Update dependencies.gradle
* Deprecated
* Update dependencies.gradle
* Optimize bee storage rendering (2 fps -> 100 fps)
* Make Mega Apiary storage GUI usable
* Configuration window looks ok
* Color is fixed
* TC research
* Disable for now
* Finish tea command
* ok
* Fix
* Update en_US.lang
* ZzZ
* Stuff changed
Diffstat (limited to 'src/main/java')
30 files changed, 1744 insertions, 50 deletions
diff --git a/src/main/java/kubatech/CommonProxy.java b/src/main/java/kubatech/CommonProxy.java index ccd4949137..f34ce3216a 100644 --- a/src/main/java/kubatech/CommonProxy.java +++ b/src/main/java/kubatech/CommonProxy.java @@ -19,15 +19,21 @@ package kubatech; -import static kubatech.loaders.ItemLoader.RegisterItems; +import static kubatech.loaders.BlockLoader.registerBlocks; +import static kubatech.loaders.ItemLoader.registerItems; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.event.*; +import kubatech.api.LoaderReference; import kubatech.commands.CommandConfig; import kubatech.commands.CommandHandler; import kubatech.commands.CommandHelp; +import kubatech.commands.CommandTea; import kubatech.config.Config; import kubatech.loaders.RecipeLoader; +import kubatech.loaders.TCLoader; +import kubatech.savedata.PlayerDataManager; +import net.minecraftforge.common.MinecraftForge; public class CommonProxy { @@ -37,22 +43,28 @@ public class CommonProxy { Config.init(event.getModConfigurationDirectory()); Config.synchronizeConfiguration(); FMLCommonHandler.instance().bus().register(new FMLEventHandler()); - RegisterItems(); - RecipeLoader.addRecipes(); + MinecraftForge.EVENT_BUS.register(new PlayerDataManager()); + registerItems(); + registerBlocks(); + if (LoaderReference.Thaumcraft) TCLoader.load(); } public void init(FMLInitializationEvent event) {} - public void postInit(FMLPostInitializationEvent event) {} + public void postInit(FMLPostInitializationEvent event) { + RecipeLoader.addRecipes(); + } public void serverAboutToStart(FMLServerAboutToStartEvent event) {} public void serverStarting(FMLServerStartingEvent event) { RecipeLoader.addRecipesLate(); + if (LoaderReference.Thaumcraft) TCLoader.lateLoad(); CommandHandler cmd = new CommandHandler(); cmd.addCommand(new CommandHelp()); cmd.addCommand(new CommandConfig()); // cmd.addCommand(new CommandBees()); + cmd.addCommand(new CommandTea()); event.registerServerCommand(cmd); } diff --git a/src/main/java/kubatech/api/LoaderReference.java b/src/main/java/kubatech/api/LoaderReference.java index b9e76a9a30..3215fa1b21 100644 --- a/src/main/java/kubatech/api/LoaderReference.java +++ b/src/main/java/kubatech/api/LoaderReference.java @@ -15,4 +15,6 @@ public class LoaderReference { public static final boolean HarvestCraft = Loader.isModLoaded("harvestcraft"); public static final boolean TwilightForest = Loader.isModLoaded("TwilightForest"); public static final boolean Forestry = Loader.isModLoaded("Forestry"); + public static final boolean DraconicEvolution = Loader.isModLoaded("DraconicEvolution"); + public static final boolean Avaritia = Loader.isModLoaded("Avaritia"); } diff --git a/src/main/java/kubatech/api/enums/ItemList.java b/src/main/java/kubatech/api/enums/ItemList.java index b37bd86c1c..00334d848e 100644 --- a/src/main/java/kubatech/api/enums/ItemList.java +++ b/src/main/java/kubatech/api/enums/ItemList.java @@ -52,7 +52,8 @@ public enum ItemList implements IItemContainer { FermentedTeaLeaf, BruisedTeaLeaf, PartiallyOxidizedTeaLeaf, - ; + TeaAcceptorResearchNote, + TeaAcceptor; private ItemStack mStack; private boolean mHasNotBeenSet = true; diff --git a/src/main/java/kubatech/api/helpers/ReflectionHelper.java b/src/main/java/kubatech/api/helpers/ReflectionHelper.java index 1d7449afc4..7b02fe6c82 100644 --- a/src/main/java/kubatech/api/helpers/ReflectionHelper.java +++ b/src/main/java/kubatech/api/helpers/ReflectionHelper.java @@ -45,6 +45,7 @@ public class ReflectionHelper { boolean exceptionDetected = false; Field f = null; do { + exceptionDetected = false; try { f = cl.getDeclaredField(fieldName); f.setAccessible(true); @@ -61,6 +62,38 @@ public class ReflectionHelper { } } + public static <T> boolean setField(Object obj, String fieldName, T value) { + Class<?> cl = obj.getClass(); + String clName = cl.getName(); + HashMap<String, Field> classmap = classes.computeIfAbsent(clName, s -> new _FieldsMethods()).fields; + try { + if (classmap.containsKey(fieldName)) { + Field f = classmap.get(fieldName); + if (f == null) return false; + f.set(obj, value); + return true; + } + boolean exceptionDetected = false; + Field f = null; + do { + exceptionDetected = false; + try { + f = cl.getDeclaredField(fieldName); + f.setAccessible(true); + } catch (Exception ex) { + exceptionDetected = true; + cl = cl.getSuperclass(); + } + } while (exceptionDetected && !cl.equals(Object.class)); + classmap.put(fieldName, f); + if (f == null) return false; + f.set(obj, value); + return true; + } catch (Exception ex) { + return false; + } + } + public static <T> T getField(Object obj, String fieldName) { return getField(obj, fieldName, null); } @@ -87,6 +120,7 @@ public class ReflectionHelper { boolean exceptionDetected = false; Method m = null; do { + exceptionDetected = false; try { m = cl.getDeclaredMethod(methodName, argsTypes); m.setAccessible(true); diff --git a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java index b81bbb0337..11fb4f848f 100644 --- a/src/main/java/kubatech/api/network/CustomTileEntityPacket.java +++ b/src/main/java/kubatech/api/network/CustomTileEntityPacket.java @@ -128,7 +128,11 @@ public class CustomTileEntityPacket implements IMessage { @Override public IMessage onMessage(CustomTileEntityPacket message, MessageContext ctx) { if (!ModUtils.isClientSided) return null; - World w = Minecraft.getMinecraft().thePlayer.getEntityWorld(); + Minecraft mc = Minecraft.getMinecraft(); + if (mc == null) return null; + if (mc.thePlayer == null) return null; + World w = mc.thePlayer.getEntityWorld(); + if (w == null) return null; if (message.w != w.provider.dimensionId) return null; TileEntity e = w.getTileEntity(message.x, message.y, message.z); if (e == null || e.isInvalid()) return null; diff --git a/src/main/java/kubatech/api/network/LoadConfigPacket.java b/src/main/java/kubatech/api/network/LoadConfigPacket.java index defb139151..03602e89f1 100644 --- a/src/main/java/kubatech/api/network/LoadConfigPacket.java +++ b/src/main/java/kubatech/api/network/LoadConfigPacket.java @@ -26,10 +26,12 @@ import io.netty.buffer.ByteBuf; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.HashSet; +import kubatech.api.LoaderReference; import kubatech.config.Config; import kubatech.config.OverridesConfig; import kubatech.kubatech; import kubatech.loaders.MobRecipeLoader; +import kubatech.loaders.TCLoader; public class LoadConfigPacket implements IMessage { @@ -85,6 +87,7 @@ public class LoadConfigPacket implements IMessage { public IMessage onMessage(LoadConfigPacket message, MessageContext ctx) { kubatech.info("Received Mob Handler config, parsing"); MobRecipeLoader.processMobRecipeMap(message.mobsToLoad, message.mobsOverrides); + if (LoaderReference.Thaumcraft) TCLoader.lateLoad(); return null; } } diff --git a/src/main/java/kubatech/commands/CommandHandler.java b/src/main/java/kubatech/commands/CommandHandler.java index d1822a1ff8..dfa612fcce 100644 --- a/src/main/java/kubatech/commands/CommandHandler.java +++ b/src/main/java/kubatech/commands/CommandHandler.java @@ -61,7 +61,7 @@ public class CommandHandler extends CommandBase { } } - private static final ArrayList<String> aliases = new ArrayList<>(Collections.singleton("kt")); + private static final List<String> aliases = Collections.singletonList("kt"); public static final HashMap<String, ICommand> commands = new HashMap<>(); @Override diff --git a/src/main/java/kubatech/commands/CommandTea.java b/src/main/java/kubatech/commands/CommandTea.java new file mode 100644 index 0000000000..187b21c789 --- /dev/null +++ b/src/main/java/kubatech/commands/CommandTea.java @@ -0,0 +1,109 @@ +package kubatech.commands; + +import static kubatech.commands.CommandTea.Translations.*; + +import kubatech.savedata.PlayerData; +import kubatech.savedata.PlayerDataManager; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StatCollector; + +public class CommandTea extends CommandBase { + enum Translations { + INVALID_OPTION, + PLAYER_NOT_FOUND, + SUCCESS_GET, + SUCCESS_SET, + SUCCESS_ADD, + USAGE, + ; + final String key; + + Translations() { + key = "command.tea." + this.name().toLowerCase(); + } + + public String get() { + return StatCollector.translateToLocal(key); + } + + public String get(Object... args) { + return StatCollector.translateToLocalFormatted(key, args); + } + + public String getKey() { + return key; + } + + @Override + public String toString() { + return get(); + } + } + + @Override + public String getCommandName() { + return "tea"; + } + + @Override + public String getCommandUsage(ICommandSender p_71518_1_) { + return "tea " + USAGE.get(); + } + + @Override + public int getRequiredPermissionLevel() { + return 4; + } + + @Override + public void processCommand(ICommandSender p_71515_1_, String[] p_71515_2_) { + if (p_71515_2_.length < 2) { + p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get())); + return; + } + PlayerData playerData = PlayerDataManager.getPlayer(p_71515_2_[0]); + if (playerData == null) { + p_71515_1_.addChatMessage(new ChatComponentText(PLAYER_NOT_FOUND.get())); + return; + } + if (!p_71515_2_[1].equalsIgnoreCase("get") && p_71515_2_.length < 3) { + p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get())); + return; + } + switch (p_71515_2_[1].toLowerCase()) { + case "get": + p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_GET.get(p_71515_2_[0], playerData.teaAmount))); + break; + case "set": { + long tea; + try { + tea = Long.parseLong(p_71515_2_[2]); + } catch (NumberFormatException ex) { + p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get())); + return; + } + playerData.teaAmount = tea; + playerData.markDirty(); + p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_SET.get(p_71515_2_[0], playerData.teaAmount))); + break; + } + case "add": { + long tea; + try { + tea = Long.parseLong(p_71515_2_[2]); + } catch (NumberFormatException ex) { + p_71515_1_.addChatMessage(new ChatComponentText(INVALID_OPTION.get())); + return; + } + playerData.teaAmount += tea; + playerData.markDirty(); + p_71515_1_.addChatMessage(new ChatComponentText(SUCCESS_ADD.get(p_71515_2_[0], playerData.teaAmount))); + break; + } + default: + break; + } + } +} diff --git a/src/main/java/kubatech/kubatech.java b/src/main/java/kubatech/kubatech.java index ca4d06320f..740699aa34 100644 --- a/src/main/java/kubatech/kubatech.java +++ b/src/main/java/kubatech/kubatech.java @@ -42,9 +42,11 @@ import org.apache.logging.log4j.Logger; version = Tags.VERSION, name = Tags.MODNAME, acceptedMinecraftVersions = "[1.7.10]", - dependencies = "required-after:gregtech; " + "required-after:gtnhmixins@[2.0.1,); " + "after:EnderIO; " - + "after:AWWayofTime; " + "after:ExtraUtilities; " + "after: InfernalMobs; " + "after: Thaumcraft; " - + "after: MineTweaker3; " + "after: miscutils; " + "after: harvestcraft; " + "after: Forestry; ") + dependencies = "required-after: gregtech; " + "required-after: gtnhmixins@[2.0.1,); " + + "required-after: modularui; " + "after: EnderIO; " + + "after: AWWayofTime; " + "after: ExtraUtilities; " + "after: InfernalMobs; " + "after: Thaumcraft; " + + "after: MineTweaker3; " + "after: miscutils; " + "after: harvestcraft; " + "after: Forestry; " + + "after: DraconicEvolution; " + "after: Avaritia; " + " after: dreamcraft; ") public class kubatech { public static kubatech instance = null; diff --git a/src/main/java/kubatech/loaders/BlockLoader.java b/src/main/java/kubatech/loaders/BlockLoader.java new file mode 100644 index 0000000000..55e97badc6 --- /dev/null +++ b/src/main/java/kubatech/loaders/BlockLoader.java @@ -0,0 +1,24 @@ +package kubatech.loaders; + +import cpw.mods.fml.common.registry.GameRegistry; +import kubatech.api.enums.ItemList; +import kubatech.loaders.block.KubaBlock; +import kubatech.loaders.block.KubaItemBlock; +import kubatech.loaders.block.blocks.TeaAcceptor; +import kubatech.tileentity.TeaAcceptorTile; +import net.minecraft.block.material.Material; +import net.minecraft.item.ItemBlock; + +public class BlockLoader { + + public static final KubaBlock kubaBlock = new KubaBlock(Material.anvil); + public static final ItemBlock kubaItemBlock = new KubaItemBlock(kubaBlock); + + public static void registerBlocks() { + GameRegistry.registerTileEntity(TeaAcceptorTile.class, "KT_TeaAcceptor"); + GameRegistry.registerBlock(kubaBlock, null, "kubablocks"); + GameRegistry.registerItem(kubaItemBlock, "kubablocks"); + + ItemList.TeaAcceptor.set(kubaBlock.registerProxyBlock(new TeaAcceptor())); + } +} diff --git a/src/main/java/kubatech/loaders/ItemLoader.java b/src/main/java/kubatech/loaders/ItemLoader.java index 7df248da60..8db9c9f15f 100644 --- a/src/main/java/kubatech/loaders/ItemLoader.java +++ b/src/main/java/kubatech/loaders/ItemLoader.java @@ -22,6 +22,7 @@ package kubatech.loaders; import static kubatech.api.enums.ItemList.*; import cpw.mods.fml.common.registry.GameRegistry; +import kubatech.loaders.item.ItemProxy; import kubatech.loaders.item.KubaItems; import kubatech.loaders.item.items.Tea; import kubatech.loaders.item.items.TeaCollection; @@ -31,7 +32,7 @@ import kubatech.loaders.item.items.TeaUltimate; public class ItemLoader { public static final KubaItems kubaitems = new KubaItems(); - public static void RegisterItems() { + public static void registerItems() { GameRegistry.registerItem(kubaitems, "kubaitems"); // DON'T EVER CHANGE ORDER IN HERE, ADD NEW ITEMS ON BOTTOM @@ -75,5 +76,8 @@ public class ItemLoader { FermentedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("fermented_tea_leaf"))); BruisedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("bruised_tea_leaf"))); PartiallyOxidizedTeaLeaf.set(kubaitems.registerProxyItem(new TeaIngredient("partially_oxidized_tea_leaf"))); + + TeaAcceptorResearchNote.set( + kubaitems.registerProxyItem(new ItemProxy("tea_acceptor_research_note", "research_note"))); } } diff --git a/src/main/java/kubatech/loaders/RecipeLoader.java b/src/main/java/kubatech/loaders/RecipeLoader.java index 2b7fe77719..7bbaaf17e7 100644 --- a/src/main/java/kubatech/loaders/RecipeLoader.java +++ b/src/main/java/kubatech/loaders/RecipeLoader.java @@ -21,6 +21,7 @@ package kubatech.loaders; import static kubatech.api.enums.ItemList.*; +import com.dreammaster.gthandler.CustomItemList; import cpw.mods.fml.common.registry.GameRegistry; import gregtech.api.enums.GT_Values; import gregtech.api.enums.Materials; @@ -270,5 +271,24 @@ public class RecipeLoader { GameRegistry.addSmelting(WhiteTeaLeaf.get(1), WhiteTea.get(1), 10); GameRegistry.addSmelting(YellowTeaLeaf.get(1), YellowTea.get(1), 10); } + if (LoaderReference.Avaritia && LoaderReference.GTNHCoreMod) { + GT_Values.RA.addAssemblylineRecipe( + TeaAcceptorResearchNote.get(1), + 10000, + new Object[] { + LegendaryUltimateTea.get(0), + GameRegistry.findItemStack("Avaritia", "Neutronium_Compressor", 1), + gregtech.api.enums.ItemList.Quantum_Tank_EV.get(1), + CustomItemList.FluidExtractorUHV.get(10), + new Object[] {OrePrefixes.circuit.get(Materials.SuperconductorUHV), 4L}, + new Object[] {OrePrefixes.circuit.get(Materials.SuperconductorUHV), 4L}, + new Object[] {OrePrefixes.circuit.get(Materials.SuperconductorUHV), 4L}, + new Object[] {OrePrefixes.circuit.get(Materials.SuperconductorUHV), 4L}, + }, + new FluidStack[] {FluidRegistry.getFluidStack("molten.indalloy140", 28800)}, + TeaAcceptor.get(1), + 6000, + 2_048_000); + } } } diff --git a/src/main/java/kubatech/loaders/TCLoader.java b/src/main/java/kubatech/loaders/TCLoader.java new file mode 100644 index 0000000000..3c4980f251 --- /dev/null +++ b/src/main/java/kubatech/loaders/TCLoader.java @@ -0,0 +1,125 @@ +package kubatech.loaders; + +import cpw.mods.fml.common.registry.GameRegistry; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.stream.Collectors; +import kubatech.api.LoaderReference; +import kubatech.api.enums.ItemList; +import kubatech.api.utils.ItemID; +import kubatech.loaders.item.items.TeaUltimate; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.ThaumcraftApiHelper; +import thaumcraft.api.aspects.Aspect; +import thaumcraft.api.aspects.AspectList; +import thaumcraft.api.crafting.InfusionRecipe; +import thaumcraft.api.research.ResearchCategories; +import thaumcraft.api.research.ResearchItem; +import thaumcraft.api.research.ResearchPage; + +public class TCLoader { + private static boolean lateLoaded = false; + + public static void load() {} + + public static void lateLoad() { + if (lateLoaded) return; + lateLoaded = true; + if (!LoaderReference.GTNHCoreMod || !LoaderReference.DraconicEvolution) return; + + final ItemStack[] components = new ItemStack[] { + // ItemList.LegendaryBlackTea.get(1), + // ItemList.LegendaryButterflyTea.get(1), + // ItemList.LegendaryEarlGrayTea.get(1), + ItemList.LegendaryGreenTea.get(1), // EIG + // ItemList.LegendaryLemonTea.get(1), + // ItemList.LegendaryMilkTea.get(1), + // ItemList.LegendaryOolongTea.get(1), + ItemList.LegendaryPeppermintTea.get(1), // HTGR + ItemList.LegendaryPuerhTea.get(1), // EEC + // ItemList.LegendaryRedTea.get(1), + // ItemList.LegendaryWhiteTea.get(1), + ItemList.LegendaryYellowTea.get(1), // IApiary + ItemList.BlackTea.get(1), + ItemList.EarlGrayTea.get(1), + ItemList.GreenTea.get(1), + ItemList.LemonTea.get(1), + ItemList.MilkTea.get(1), + ItemList.OolongTea.get(1), + ItemList.PeppermintTea.get(1), + ItemList.PuerhTea.get(1), + ItemList.WhiteTea.get(1), + ItemList.YellowTea.get(1) + }; + + final HashSet<ItemID> componentsHashed = Arrays.stream(components) + .map(stack -> ItemID.create_NoCopy(stack, true, false, true)) + .collect(Collectors.toCollection(HashSet::new)); + + InfusionRecipe ultimateTeaRecipe; + //noinspection unchecked + ThaumcraftApi.getCraftingRecipes() + .add( + ultimateTeaRecipe = + new InfusionRecipe( + "KT_UltimateTea", + ItemList.LegendaryUltimateTea.get(1), + 10, + new AspectList() + .add(Aspect.MAGIC, 100) + .add(Aspect.HEAL, 100) + .add(Aspect.PLANT, 100) + .add(Aspect.EXCHANGE, 100), + GameRegistry.findItemStack("DraconicEvolution", "dezilsMarshmallow", 1), + components) { + @Override + public boolean matches( + ArrayList<ItemStack> input, + ItemStack central, + World world, + EntityPlayer player) { + if (!central.isItemEqual(getRecipeInput())) return false; + if (!ThaumcraftApiHelper.isResearchComplete( + player.getCommandSenderName(), this.research)) return false; + if (componentsHashed.size() > input.size()) return false; + HashSet<ItemID> hashedInputs = input.stream() + .map(stack -> ItemID.create_NoCopy(stack, true, false, true)) + .collect(Collectors.toCollection(HashSet::new)); + return hashedInputs.containsAll(componentsHashed); + } + }); + ResearchItem research = + new ResearchItem( + "KT_UltimateTea", + "NEWHORIZONS", + new AspectList() + .add(Aspect.MAGIC, 1) + .add(Aspect.HEAL, 1) + .add(Aspect.PLANT, 1) + .add(Aspect.EXCHANGE, 1), + -2, + 4, + 2, + ItemList.LegendaryUltimateTea.get(1)) { + @Override + public String getName() { + return TeaUltimate.getUltimateTeaDisplayName(super.getName()); + } + }; + research.setPages( + new ResearchPage("KT.research.ultimatetea") { + @Override + public String getTranslatedText() { + return TeaUltimate.getUltimateTeaDisplayName(super.getTranslatedText()); + } + }, + new ResearchPage(ultimateTeaRecipe)); + research.setParents("INFUSION", "DEZILSMARSHMALLOW"); + ThaumcraftApi.addWarpToResearch("KT_UltimateTea", 20); + ResearchCategories.addResearch(research); + } +} diff --git a/src/main/java/kubatech/loaders/block/BlockProxy.java b/src/main/java/kubatech/loaders/block/BlockProxy.java new file mode 100644 index 0000000000..1c06fd50d9 --- /dev/null +++ b/src/main/java/kubatech/loaders/block/BlockProxy.java @@ -0,0 +1,76 @@ +package kubatech.loaders.block; + +import static kubatech.loaders.block.KubaBlock.defaultTileEntityUI; + +import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI; +import java.util.List; +import kubatech.Tags; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +public class BlockProxy { + + private final String unlocalizedName; + private final String texturepath; + private IIcon icon; + + public BlockProxy(String unlocalizedName, String texture) { + this.unlocalizedName = "kubablock." + unlocalizedName; + texturepath = Tags.MODID + ":" + texture; + } + + public void itemInit(int ID) {} + + public boolean onActivated(World world, int x, int y, int z, EntityPlayer player) { + if (this instanceof IProxyTileEntityProvider) { + TileEntity te = world.getTileEntity(x, y, z); + if (te instanceof ITileWithModularUI) { + if (world.isRemote) return true; + if (te instanceof KubaBlock.IModularUIProvider) + ((KubaBlock.IModularUIProvider) te).getUI().open(player, world, x, y, z); + else defaultTileEntityUI.open(player, world, x, y, z); + return true; + } + }< |
