aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kubatech/loaders
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kubatech/loaders')
-rw-r--r--src/main/java/kubatech/loaders/BlockLoader.java24
-rw-r--r--src/main/java/kubatech/loaders/ItemLoader.java6
-rw-r--r--src/main/java/kubatech/loaders/RecipeLoader.java20
-rw-r--r--src/main/java/kubatech/loaders/TCLoader.java125
-rw-r--r--src/main/java/kubatech/loaders/block/BlockProxy.java76
-rw-r--r--src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java8
-rw-r--r--src/main/java/kubatech/loaders/block/KubaBlock.java187
-rw-r--r--src/main/java/kubatech/loaders/block/KubaItemBlock.java37
-rw-r--r--src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java42
-rw-r--r--src/main/java/kubatech/loaders/item/IItemProxyGUI.java9
-rw-r--r--src/main/java/kubatech/loaders/item/ItemProxy.java31
-rw-r--r--src/main/java/kubatech/loaders/item/KubaItems.java6
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaCollection.java42
-rw-r--r--src/main/java/kubatech/loaders/item/items/TeaUltimate.java160
14 files changed, 740 insertions, 33 deletions
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;
+ }
+ }
+ return false;
+ }
+
+ public void onBlockPlaced(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {}
+
+ public void registerIcon(IIconRegister iconRegister) {
+ icon = iconRegister.registerIcon(texturepath);
+ }
+
+ public IIcon getIcon(int side) {
+ return icon;
+ }
+
+ public String getUnlocalizedName() {
+ return this.unlocalizedName;
+ }
+
+ public String getDisplayName(ItemStack stack) {
+ return StatCollector.translateToLocal(this.unlocalizedName + ".name").trim();
+ }
+
+ public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) {}
+
+ public float getHardness() {
+ return 10.f;
+ }
+
+ public Material getMaterial() {
+ return Material.anvil;
+ }
+
+ public float getResistance() {
+ return 5.f;
+ }
+}
diff --git a/src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java b/src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java
new file mode 100644
index 0000000000..b2a94c09b7
--- /dev/null
+++ b/src/main/java/kubatech/loaders/block/IProxyTileEntityProvider.java
@@ -0,0 +1,8 @@
+package kubatech.loaders.block;
+
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public interface IProxyTileEntityProvider {
+ TileEntity createTileEntity(World world);
+}
diff --git a/src/main/java/kubatech/loaders/block/KubaBlock.java b/src/main/java/kubatech/loaders/block/KubaBlock.java
new file mode 100644
index 0000000000..dd34ce5883
--- /dev/null
+++ b/src/main/java/kubatech/loaders/block/KubaBlock.java
@@ -0,0 +1,187 @@
+package kubatech.loaders.block;
+
+import static kubatech.kubatech.KT;
+
+import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI;
+import com.gtnewhorizons.modularui.api.screen.ModularUIContext;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.builder.UIBuilder;
+import com.gtnewhorizons.modularui.common.builder.UIInfo;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularGui;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
+import java.lang.ref.WeakReference;
+import java.util.HashMap;
+import java.util.List;
+import java.util.function.Function;
+import kubatech.loaders.BlockLoader;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.World;
+
+public class KubaBlock extends Block {
+
+ public static final Function<IModularUIContainerCreator, UIInfo<?, ?>> TileEntityUIFactory =
+ containerConstructor -> UIBuilder.of()
+ .container((player, world, x, y, z) -> {
+ TileEntity te = world.getTileEntity(x, y, z);
+ if (te instanceof ITileWithModularUI) {
+ UIBuildContext buildContext = new UIBuildContext(player);
+ ModularWindow window = ((ITileWithModularUI) te).createWindow(buildContext);
+ return containerConstructor.createUIContainer(
+ new ModularUIContext(buildContext, te::markDirty), window);
+ }
+ return null;
+ })
+ .gui(((player, world, x, y, z) -> {
+ if (!world.isRemote) return null;
+ TileEntity te = world.getTileEntity(x, y, z);
+ if (te instanceof ITileWithModularUI) {
+ UIBuildContext buildContext = new UIBuildContext(player);
+ ModularWindow window = ((ITileWithModularUI) te).createWindow(buildContext);
+ return new ModularGui(containerConstructor.createUIContainer(
+ new ModularUIContext(buildContext, null), window));
+ }
+ return null;
+ }))
+ .build();
+
+ public static final UIInfo<?, ?> defaultTileEntityUI = TileEntityUIFactory.apply(ModularUIContainer::new);
+
+ static final HashMap<Integer, BlockProxy> blocks = new HashMap<>();
+ private static int idCounter = 0;
+
+ public KubaBlock(Material p_i45394_1_) {
+ super(p_i45394_1_);
+ setCreativeTab(KT);
+ }
+
+ public ItemStack registerProxyBlock(BlockProxy block) {
+ blocks.put(idCounter, block);
+ block.itemInit(idCounter);
+ return new ItemStack(BlockLoader.kubaItemBlock, 1, idCounter++);
+ }
+
+ private BlockProxy getBlock(int id) {
+ return blocks.get(id);
+ }
+
+ WeakReference<World> lastAccessor = null;
+ int X, Y, Z;
+
+ public void setLastBlockAccess(World accessor, int x, int y, int z) {
+ lastAccessor = new WeakReference<>(accessor);
+ X = x;
+ Y = y;
+ Z = z;
+ }
+
+ @Override
+ public boolean hasTileEntity(int meta) {
+ return getBlock(meta) instanceof IProxyTileEntityProvider;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) {
+ for (int i = 0; i < blocks.size(); i++) p_149666_3_.add(new ItemStack(p_149666_1_, 1, i));
+ }
+
+ @Override
+ public void registerBlockIcons(IIconRegister p_149651_1_) {
+ blocks.values().forEach(b -> b.registerIcon(p_149651_1_));
+ }
+
+ @Override
+ public IIcon getIcon(int p_149691_1_, int p_149691_2_) {
+ return blocks.get(p_149691_2_).getIcon(p_149691_1_);
+ }
+
+ @Override
+ public String getLocalizedName() {
+ return "KUBABLOCK";
+ }
+
+ @Override
+ public TileEntity createTileEntity(World world, int metadata) {
+ if (!hasTileEntity(metadata)) return null;
+ return ((IProxyTileEntityProvider) getBlock(metadata)).createTileEntity(world);
+ }
+
+ @Override
+ public boolean onBlockActivated(
+ World p_149727_1_,
+ int p_149727_2_,
+ int p_149727_3_,
+ int p_149727_4_,
+ EntityPlayer p_149727_5_,
+ int p_149727_6_,
+ float p_149727_7_,
+ float p_149727_8_,
+ float p_149727_9_) {
+ return getBlock(p_149727_1_.getBlockMetadata(p_149727_2_, p_149727_3_, p_149727_4_))
+ .onActivated(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, p_149727_5_);
+ }
+
+ @Override
+ public void onBlockPlacedBy(
+ World p_149689_1_,
+ int p_149689_2_,
+ int p_149689_3_,
+ int p_149689_4_,
+ EntityLivingBase p_149689_5_,
+ ItemStack p_149689_6_) {
+ getBlock(p_149689_6_.getItemDamage())
+ .onBlockPlaced(p_149689_1_, p_149689_2_, p_149689_3_, p_149689_4_, p_149689_5_, p_149689_6_);
+ }
+
+ @Override
+ public float getBlockHardness(World p_149712_1_, int p_149712_2_, int p_149712_3_, int p_149712_4_) {
+ return getBlock(p_149712_1_.getBlockMetadata(p_149712_2_, p_149712_3_, p_149712_4_))
+ .getHardness();
+ }
+
+ @Override
+ public Material getMaterial() {
+ if (lastAccessor == null) return super.getMaterial();
+ World world = lastAccessor.get();
+ if (world == null) {
+ lastAccessor = null;
+ return super.getMaterial();
+ }
+ if (world.getBlock(X, Y, Z) != this) return super.getMaterial();
+ return getBlock(world.getBlockMetadata(X, Y, Z)).getMaterial();
+ }
+
+ @Override
+ public float getExplosionResistance(
+ Entity par1Entity,
+ World world,
+ int x,
+ int y,
+ int z,
+ double explosionX,
+ double explosionY,
+ double explosionZ) {
+ return getBlock(world.getBlockMetadata(x, y, z)).getResistance();
+ }
+
+ @FunctionalInterface
+ public interface IModularUIContainerCreator {
+ ModularUIContainer createUIContainer(ModularUIContext context, ModularWindow mainWindow);
+ }
+
+ @FunctionalInterface
+ public interface IModularUIProvider {
+ UIInfo<?, ?> getUI();
+ }
+}
diff --git a/src/main/java/kubatech/loaders/block/KubaItemBlock.java b/src/main/java/kubatech/loaders/block/KubaItemBlock.java
new file mode 100644
index 0000000000..eb5197d1bf
--- /dev/null
+++ b/src/main/java/kubatech/loaders/block/KubaItemBlock.java
@@ -0,0 +1,37 @@
+package kubatech.loaders.block;
+
+import java.util.List;
+import kubatech.kubatech;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+
+public class KubaItemBlock extends ItemBlock {
+ public KubaItemBlock(Block p_i45328_1_) {
+ super(p_i45328_1_);
+ setHasSubtypes(true);
+ }
+
+ @Override
+ public void registerIcons(IIconRegister p_94581_1_) {
+ super.registerIcons(p_94581_1_);
+ }
+
+ @Override
+ public String getUnlocalizedName(ItemStack p_77667_1_) {
+ return KubaBlock.blocks.get(p_77667_1_.getItemDamage()).getUnlocalizedName();
+ }
+
+ @Override
+ public String getItemStackDisplayName(ItemStack p_77653_1_) {
+ return KubaBlock.blocks.get(p_77653_1_.getItemDamage()).getDisplayName(p_77653_1_);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) {
+ KubaBlock.blocks.get(p_77624_1_.getItemDamage()).addInformation(p_77624_1_, p_77624_2_, p_77624_3_, p_77624_4_);
+ }
+}
diff --git a/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java b/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java
new file mode 100644
index 0000000000..97b41efdc0
--- /dev/null
+++ b/src/main/java/kubatech/loaders/block/blocks/TeaAcceptor.java
@@ -0,0 +1,42 @@
+package kubatech.loaders.block.blocks;
+
+import java.util.List;
+import kubatech.loaders.block.BlockProxy;
+import kubatech.loaders.block.IProxyTileEntityProvider;
+import kubatech.tileentity.TeaAcceptorTile;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class TeaAcceptor extends BlockProxy implements IProxyTileEntityProvider {
+
+ public TeaAcceptor() {
+ super("tea_acceptor", "tea_acceptor");
+ }
+
+ @Override
+ public TileEntity createTileEntity(World world) {
+ return new TeaAcceptorTile();
+ }
+
+ @Override
+ public void onBlockPlaced(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
+ if (world.isRemote) return;
+ if (!(player instanceof EntityPlayerMP)) return;
+ ((TeaAcceptorTile) world.getTileEntity(x, y, z)).setTeaOwner(player.getCommandSenderName());
+ }
+
+ @Override
+ public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) {
+ tooltipList.add("Accepts Tea items and adds them to your network");
+ tooltipList.add("Can accept up to 10 stacks per tick");
+ }
+
+ @Override
+ public float getResistance() {
+ return 999999999999.f;
+ }
+}
diff --git a/src/main/java/kubatech/loaders/item/IItemProxyGUI.java b/src/main/java/kubatech/loaders/item/IItemProxyGUI.java
new file mode 100644
index 0000000000..40020c81e9
--- /dev/null
+++ b/src/main/java/kubatech/loaders/item/IItemProxyGUI.java
@@ -0,0 +1,9 @@
+package kubatech.loaders.item;
+
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+
+public interface IItemProxyGUI {
+ ModularWindow createWindow(ItemStack stack, EntityPlayer player);
+}
diff --git a/src/main/java/kubatech/loaders/item/ItemProxy.java b/src/main/java/kubatech/loaders/item/ItemProxy.java
index 03ea390f74..6c2ac6f7ea 100644
--- a/src/main/java/kubatech/loaders/item/ItemProxy.java
+++ b/src/main/java/kubatech/loaders/item/ItemProxy.java
@@ -19,6 +19,13 @@
package kubatech.loaders.item;
+import com.gtnewhorizons.modularui.api.screen.ModularUIContext;
+import com.gtnewhorizons.modularui.api.screen.ModularWindow;
+import com.gtnewhorizons.modularui.api.screen.UIBuildContext;
+import com.gtnewhorizons.modularui.common.builder.UIBuilder;
+import com.gtnewhorizons.modularui.common.builder.UIInfo;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularGui;
+import com.gtnewhorizons.modularui.common.internal.wrapper.ModularUIContainer;
import java.util.List;
import kubatech.Tags;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -31,6 +38,25 @@ import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
public class ItemProxy {
+ private static final UIInfo<?, ?> HeldItemUIInfo = UIBuilder.of()
+ .container((player, w, x, y, z) -> {
+ ItemStack stack = player.getHeldItem();
+ ItemProxy proxy = KubaItems.getItemProxy(stack);
+ if (!(proxy instanceof IItemProxyGUI)) return null;
+ UIBuildContext context = new UIBuildContext(player);
+ ModularWindow window = ((IItemProxyGUI) proxy).createWindow(stack, player);
+ return new ModularUIContainer(
+ new ModularUIContext(context, () -> player.inventoryContainer.detectAndSendChanges()), window);
+ })
+ .gui((player, w, x, y, z) -> {
+ ItemStack stack = player.getHeldItem();
+ ItemProxy proxy = KubaItems.getItemProxy(stack);
+ if (!(proxy instanceof IItemProxyGUI)) return null;
+ UIBuildContext context = new UIBuildContext(player);
+ ModularWindow window = ((IItemProxyGUI) proxy).createWindow(stack, player);
+ return new ModularGui(new ModularUIContainer(new ModularUIContext(context, null), window));
+ })
+ .build();
private final String unlocalizedName;
private final String texturepath;
private IIcon icon;
@@ -80,4 +106,9 @@ public class ItemProxy {
public int getMaxItemUseDuration() {
return 0;
}
+
+ public static void openHeldItemGUI(EntityPlayer player) {
+ ItemStack stack = player.getHeldItem();
+ if (KubaItems.getItemProxy(stack) instanceof IItemProxyGUI) HeldItemUIInfo.open(player);
+ }
}
diff --git a/src/main/java/kubatech/loaders/item/KubaItems.java b/src/main/java/kubatech/loaders/item/KubaItems.java
index b0f8723cde..205622a30b 100644
--- a/src/main/java/kubatech/loaders/item/KubaItems.java
+++ b/src/main/java/kubatech/loaders/item/KubaItems.java
@@ -25,6 +25,7 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.HashMap;
import java.util.List;
+import kubatech.loaders.ItemLoader;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
@@ -56,6 +57,11 @@ public class KubaItems extends Item {
return items.get(stack.getItemDamage());
}
+ public static ItemProxy getItemProxy(ItemStack stack) {
+ if (!(stack.getItem() instanceof KubaItems)) return null;
+ return ItemLoader.kubaitems.getItem(stack);
+ }
+
private ItemProxy getItem(int damage) {
return items.get(damage);
}
diff --git a/src/main/java/kubatech/loaders/item/items/TeaCollection.java b/src/main/java/kubatech/loaders/item/items/TeaCollection.java
index 85b74421b6..c0c20aa244 100644
--- a/src/main/java/kubatech/loaders/item/items/TeaCollection.java
+++ b/src/main/java/kubatech/loaders/item/items/TeaCollection.java
@@ -32,6 +32,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagString;
import net.minecraft.stats.Achievement;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
@@ -66,6 +67,21 @@ public class TeaCollection extends ItemProxy {
{1, 3}
};
+ boolean checkTeaOwner(ItemStack stack, String username) {
+ NBTTagCompound tag = stack.stackTagCompound;
+ if (tag == null || !stack.stackTagCompound.hasKey("TeaOwner")) return true;
+ return stack.stackTagCompound.getString("TeaOwner").equals(username);
+ }
+
+ private boolean checkOrSetTeaOwner(ItemStack stack, String username) {
+ NBTTagCompound tag = stack.stackTagCompound;
+ if (tag == null || !stack.stackTagCompound.hasKey("TeaOwner")) {
+ stack.setTagInfo("TeaOwner", new NBTTagString(username));
+ return true;
+ }
+ return stack.stackTagCompound.getString("TeaOwner").equals(username);
+ }
+
@Override
public void ItemInit(int index) {
super.ItemInit(index);
@@ -87,9 +103,7 @@ public class TeaCollection extends ItemProxy {
@Override
public void addInformation(ItemStack stack, EntityPlayer entity, List<String> tooltipList, boolean showDebugInfo) {
- if (stack.stackTagCompound != null
- && stack.stackTagCompound.hasKey("TeaOwner")
- && !stack.stackTagCompound.getString("TeaOwner").equals(entity.getCommandSenderName())) {
+ if (!checkTeaOwner(stack, entity.getCommandSenderName())) {
tooltipList.add(EnumChatFormatting.GRAY + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC
+ StatCollector.translateToLocal("kubaitem.notyours"));
return;
@@ -105,20 +119,16 @@ public class TeaCollection extends ItemProxy {
}
@Override
- public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) {
- if (p_77659_1_.stackTagCompound == null || !p_77659_1_.stackTagCompound.hasKey("TeaOwner")) return p_77659_1_;
- if (!p_77659_1_.stackTagCompound.getString("TeaOwner").equals(p_77659_3_.getCommandSenderName()))
- return p_77659_1_;
- p_77659_3_.setItemInUse(p_77659_1_, 32);
- return p_77659_1_;
+ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer entity) {
+ if (!checkTeaOwner(stack, entity.getCommandSenderName())) return stack;
+ entity.setItemInUse(stack, 32);
+ return stack;
}
@Override
public ItemStack onEaten(ItemStack stack, World world, EntityPlayer entity) {
if (world.isRemote) return stack;
if (!(entity instanceof EntityPlayerMP)) return stack;
- if (stack.stackTagCompound == null || !stack.stackTagCompound.hasKey("TeaOwner")) return stack;
- if (!stack.stackTagCompound.getString("TeaOwner").equals(entity.getCommandSenderName())) return stack;
entity.addChatComponentMessage(new ChatComponentText(
EnumChatFormatting.GREEN + StatCollector.translateToLocal("kubaitem.teacollection.mmm")));
entity.triggerAchievement(achievement);
@@ -133,11 +143,7 @@ public class TeaCollection extends ItemProxy {
@Override
public String getDisplayName(ItemStack stack) {
if (!ModUtils.isClientSided) return super.getDisplayName(stack);
- if (stack.stackTagCompound == null
- || (!stack.stackTagCompound.hasKey("TeaOwner")
- || stack.stackTagCompound
- .getString("TeaOwner")
- .equals(Minecraft.getMinecraft().thePlayer.getCommandSenderName())))
+ if (checkTeaOwner(stack, Minecraft.getMinecraft().thePlayer.getCommandSenderName()))
return super.getDisplayName(stack);
return EnumChatFormatting.GOLD + "" + EnumChatFormatting.BOLD + "" + EnumChatFormatting.ITALIC + "???????";
}
@@ -146,11 +152,9 @@ public class TeaCollection extends ItemProxy {
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) {
if (world.isRemote) return;
if (!(entity instanceof EntityPlayerMP)) return;
+ checkOrSetTeaOwner(stack, entity.getCommandSenderName());
NBTTagCompound tag = stack.stackTagCompound;
- if (tag == null) tag = stack.stackTagCompound = new NBTTagCompound();
if (tag.hasKey("display")) tag.removeTag("display");
- if (tag.hasKey("TeaOwner")) return;
- tag.setString("TeaOwner", entity.getCommandSenderName());
}
private static class TeaPage extends AchievementPage {
diff --git a/src/main/java/kubatech/loaders/item/items/TeaUltima