From 1b6054d5bb72a29f46f0a6d887d5d9cbddb66263 Mon Sep 17 00:00:00 2001 From: nao7016 Date: Tue, 9 Sep 2025 14:08:45 +0900 Subject: [PATCH] 1 / Initial settings --- .../block/EnhancedClayCraftingTable.java | 39 ++++ .../ClayiumAdditions/client/ClientProxy.java | 5 + .../ClayiumAdditions/common/CAItems.java | 4 +- .../ClayiumAdditions/common/CommonProxy.java | 4 +- .../ClayiumAdditions/event/IDChecker.java | 23 +++ .../{util => item/hammer}/HammerEvent.java | 3 +- .../hammer}/MiningHammerEvent.java | 3 +- .../item/{ => hammer}/itemClayHammer.java | 2 +- .../{ => hammer}/itemClayMiningHammer.java | 2 +- .../item/storagebox/StorageRenderer.java | 4 +- .../item/storagebox/itemStorageBox.java | 8 +- .../plugin/InventoryBogoSorter.java | 6 +- .../plugin/nei/NEICrushHandler.java | 2 +- .../recipe/CrushRecipesCraft.java | 2 +- .../ClayiumAdditions/util/AbsInventory.java | 188 ++++++++++++++++++ .../ClayiumAdditions/util/UtilInventory.java | 49 +++++ ...torageBoxUtil.java => UtilStorageBox.java} | 4 +- 17 files changed, 325 insertions(+), 23 deletions(-) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/block/EnhancedClayCraftingTable.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/event/IDChecker.java rename src/main/java/com/nao7016/ClayiumAdditions/{util => item/hammer}/HammerEvent.java (90%) rename src/main/java/com/nao7016/ClayiumAdditions/{util => item/hammer}/MiningHammerEvent.java (92%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{ => hammer}/itemClayHammer.java (98%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{ => hammer}/itemClayMiningHammer.java (97%) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/util/AbsInventory.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/util/UtilInventory.java rename src/main/java/com/nao7016/ClayiumAdditions/util/{StorageBoxUtil.java => UtilStorageBox.java} (99%) diff --git a/src/main/java/com/nao7016/ClayiumAdditions/block/EnhancedClayCraftingTable.java b/src/main/java/com/nao7016/ClayiumAdditions/block/EnhancedClayCraftingTable.java new file mode 100644 index 0000000..06ae715 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/block/EnhancedClayCraftingTable.java @@ -0,0 +1,39 @@ +package com.nao7016.ClayiumAdditions.block; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import mods.clayium.block.ClayContainerTiered; +import mods.clayium.block.tile.TileClayCraftingTable; + +public class EnhancedClayCraftingTable extends ClayContainerTiered { + + public EnhancedClayCraftingTable(int tier) { + super(Material.clay, TileClayCraftingTable.class, 0, tier); + setStepSound(Block.soundTypeGravel); + setHardness(1.0F); + setResistance(4.0F); + setHarvestLevel("shovel", 0); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.UpOverlayIcon = iconRegister.registerIcon("clayium:claycraftingtable"); + super.registerBlockIcons(iconRegister); + } + + public boolean isOpaqueCube() { + return false; + } + + public boolean renderAsNormalBlock() { + return false; + } + + public void setInitialBlockBounds() { + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.25F, 1.0F); + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/client/ClientProxy.java b/src/main/java/com/nao7016/ClayiumAdditions/client/ClientProxy.java index e33fcae..85c4bc9 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/client/ClientProxy.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/client/ClientProxy.java @@ -1,12 +1,15 @@ package com.nao7016.ClayiumAdditions.client; import net.minecraftforge.client.MinecraftForgeClient; +import net.minecraftforge.common.MinecraftForge; import com.nao7016.ClayiumAdditions.common.CAItems; import com.nao7016.ClayiumAdditions.common.CommonProxy; +import com.nao7016.ClayiumAdditions.event.IDChecker; import com.nao7016.ClayiumAdditions.item.storagebox.StorageKey; import com.nao7016.ClayiumAdditions.item.storagebox.StorageRenderer; +import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.event.FMLInitializationEvent; public class ClientProxy extends CommonProxy { @@ -19,5 +22,7 @@ public void init(FMLInitializationEvent event) { MinecraftForgeClient.registerItemRenderer(CAItems.storageBox, new StorageRenderer()); MinecraftForgeClient.registerItemRenderer(CAItems.clayStorageBox, new StorageRenderer()); StorageKey.set(); + + if (!(Loader.isModLoaded("inventorytweaks"))) MinecraftForge.EVENT_BUS.register(new IDChecker()); } } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index c64a8f9..2bed20c 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -4,11 +4,11 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import com.nao7016.ClayiumAdditions.item.hammer.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.hammer.itemClayMiningHammer; import com.nao7016.ClayiumAdditions.item.itemClayBowl; import com.nao7016.ClayiumAdditions.item.itemClayBowlEmpty; import com.nao7016.ClayiumAdditions.item.itemClayEnergy; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; -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.itemStorageBox; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java index 4fc90ae..d68eb03 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CommonProxy.java @@ -5,14 +5,14 @@ import com.nao7016.ClayiumAdditions.CAModMain; import com.nao7016.ClayiumAdditions.Tags; +import com.nao7016.ClayiumAdditions.item.hammer.HammerEvent; +import com.nao7016.ClayiumAdditions.item.hammer.MiningHammerEvent; import com.nao7016.ClayiumAdditions.item.storagebox.AutoCollect; import com.nao7016.ClayiumAdditions.network.CANetwork; import com.nao7016.ClayiumAdditions.plugin.EtOreIntegration; import com.nao7016.ClayiumAdditions.plugin.InventoryBogoSorter; import com.nao7016.ClayiumAdditions.plugin.nei.NEIPluginClayiumAdditions; import com.nao7016.ClayiumAdditions.recipe.CARecipes; -import com.nao7016.ClayiumAdditions.util.HammerEvent; -import com.nao7016.ClayiumAdditions.util.MiningHammerEvent; import com.nao7016.ClayiumAdditions.util.UtilAddTier; import cpw.mods.fml.common.Loader; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/event/IDChecker.java b/src/main/java/com/nao7016/ClayiumAdditions/event/IDChecker.java new file mode 100644 index 0000000..efb8654 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/event/IDChecker.java @@ -0,0 +1,23 @@ +package com.nao7016.ClayiumAdditions.event; + +import net.minecraft.item.Item; +import net.minecraft.util.EnumChatFormatting; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; + +/** + * From Inventory Tweaks ID checker function + */ + +public class IDChecker { + + @SubscribeEvent + public void IDCheckerOnTooltip(ItemTooltipEvent event) { + if (event.showAdvancedItemTooltips) { + event.toolTip + .add(1, EnumChatFormatting.GRAY + Item.itemRegistry.getNameForObject(event.itemStack.getItem())); + } + } + +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/HammerEvent.java b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/HammerEvent.java similarity index 90% rename from src/main/java/com/nao7016/ClayiumAdditions/util/HammerEvent.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/hammer/HammerEvent.java index 33b7c55..e07898d 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/util/HammerEvent.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/HammerEvent.java @@ -1,10 +1,9 @@ -package com.nao7016.ClayiumAdditions.util; +package com.nao7016.ClayiumAdditions.item.hammer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.event.world.BlockEvent; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; import com.nao7016.ClayiumAdditions.recipe.CrushRecipes; import cpw.mods.fml.common.eventhandler.SubscribeEvent; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/MiningHammerEvent.java b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/MiningHammerEvent.java similarity index 92% rename from src/main/java/com/nao7016/ClayiumAdditions/util/MiningHammerEvent.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/hammer/MiningHammerEvent.java index c4d13ee..7534a88 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/util/MiningHammerEvent.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/MiningHammerEvent.java @@ -1,11 +1,10 @@ -package com.nao7016.ClayiumAdditions.util; +package com.nao7016.ClayiumAdditions.item.hammer; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraftforge.event.world.BlockEvent; import com.nao7016.ClayiumAdditions.common.CABlocks; -import com.nao7016.ClayiumAdditions.item.itemClayMiningHammer; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import mods.clayium.block.CBlocks; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayHammer.java similarity index 98% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayHammer.java index d25e9c5..8165272 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayHammer.java @@ -1,4 +1,4 @@ -package com.nao7016.ClayiumAdditions.item; +package com.nao7016.ClayiumAdditions.item.hammer; import java.util.List; import java.util.Objects; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayMiningHammer.java similarity index 97% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayMiningHammer.java index daade4b..0df7dd4 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/hammer/itemClayMiningHammer.java @@ -1,4 +1,4 @@ -package com.nao7016.ClayiumAdditions.item; +package com.nao7016.ClayiumAdditions.item.hammer; import java.util.List; import java.util.Objects; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/StorageRenderer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/StorageRenderer.java index ae55630..6180d1b 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/StorageRenderer.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/StorageRenderer.java @@ -12,7 +12,7 @@ import org.lwjgl.opengl.GL11; import com.nao7016.ClayiumAdditions.common.Config; -import com.nao7016.ClayiumAdditions.util.StorageBoxUtil; +import com.nao7016.ClayiumAdditions.util.UtilStorageBox; public class StorageRenderer extends RenderItem implements IItemRenderer { @@ -38,7 +38,7 @@ public void renderItem(ItemRenderType type, ItemStack item, Object... data) { if (type != ItemRenderType.INVENTORY || !(item.getItem() instanceof itemStorageBox)) return; ItemStack stored = itemStorageBox.getStoredItemStackAll(item); - String count = Config.cfgSBSIPrefix ? StorageBoxUtil.calcNumberPrefix(itemStorageBox.getStoredCount(item)) + String count = Config.cfgSBSIPrefix ? UtilStorageBox.calcNumberPrefix(itemStorageBox.getStoredCount(item)) : String.valueOf(itemStorageBox.getStoredCount(item)); if (stored != null) { GL11.glPushMatrix(); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemStorageBox.java b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemStorageBox.java index 5d5996d..6533c45 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemStorageBox.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/storagebox/itemStorageBox.java @@ -1,7 +1,7 @@ package com.nao7016.ClayiumAdditions.item.storagebox; -import static com.nao7016.ClayiumAdditions.util.StorageBoxUtil.findPrivateValue; -import static com.nao7016.ClayiumAdditions.util.StorageBoxUtil.setItemNBTData; +import static com.nao7016.ClayiumAdditions.util.UtilStorageBox.findPrivateValue; +import static com.nao7016.ClayiumAdditions.util.UtilStorageBox.setItemNBTData; import java.util.List; import java.util.Objects; @@ -28,7 +28,7 @@ import com.nao7016.ClayiumAdditions.CAModMain; import com.nao7016.ClayiumAdditions.common.CATabs; -import com.nao7016.ClayiumAdditions.util.StorageBoxUtil; +import com.nao7016.ClayiumAdditions.util.UtilStorageBox; import cpw.mods.fml.common.registry.GameData; import cpw.mods.fml.relauncher.Side; @@ -254,7 +254,7 @@ public void addInformation(ItemStack stack, EntityPlayer player, List list, bool if (sItem == null) return; String storageItemName = "Name: " + sItem.getItemStackDisplayName(sItemStack); list.add(storageItemName); - StringBuilder builder = StorageBoxUtil.calcItemNumByUnit(stack, false); + StringBuilder builder = UtilStorageBox.calcItemNumByUnit(stack, false); builder.insert(0, "Unit: "); list.add(builder.toString()); list.add("Items: " + getStoredCount(stack)); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/plugin/InventoryBogoSorter.java b/src/main/java/com/nao7016/ClayiumAdditions/plugin/InventoryBogoSorter.java index c5af23e..15cf933 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/plugin/InventoryBogoSorter.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/plugin/InventoryBogoSorter.java @@ -6,7 +6,7 @@ import com.cleanroommc.bogosorter.BogoSortAPI; import com.cleanroommc.bogosorter.api.IPosSetter; -import com.nao7016.ClayiumAdditions.util.StorageBoxUtil; +import com.nao7016.ClayiumAdditions.util.UtilStorageBox; import mods.clayium.block.tile.InventoryMultiPage; import mods.clayium.block.tile.InventoryOffsetted; @@ -20,10 +20,10 @@ public static void init() { BogoSortAPI.INSTANCE.addCompat(ContainerNormalInventory.class, ((container, builder) -> { // ContainerNormalInventory -> ContainerTemp.tileを取得 - List l = StorageBoxUtil.findPrivateValue(ContainerTemp.class, container, IInventory.class); + List l = UtilStorageBox.findPrivateValue(ContainerTemp.class, container, IInventory.class); if (l.size() != 1 || !(l.get(0) instanceof InventoryMultiPage multiPage)) return; // InventoryOffsetted.inventoryを取得 - List l2 = StorageBoxUtil.findPrivateValue(InventoryOffsetted.class, multiPage, IInventory.class); + List l2 = UtilStorageBox.findPrivateValue(InventoryOffsetted.class, multiPage, IInventory.class); if (l2.size() != 1 || !(l2.get(0) instanceof TileMetalChest)) return; if (container.drawInventoryName()) { diff --git a/src/main/java/com/nao7016/ClayiumAdditions/plugin/nei/NEICrushHandler.java b/src/main/java/com/nao7016/ClayiumAdditions/plugin/nei/NEICrushHandler.java index b28d991..71abbec 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/plugin/nei/NEICrushHandler.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/plugin/nei/NEICrushHandler.java @@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.hammer.itemClayHammer; import com.nao7016.ClayiumAdditions.recipe.CrushRecipes; import com.nao7016.ClayiumAdditions.util.CrushList; diff --git a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java index 1affbcc..1a8311a 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java @@ -5,7 +5,7 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.hammer.itemClayHammer; public class CrushRecipesCraft implements IRecipe { diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/AbsInventory.java b/src/main/java/com/nao7016/ClayiumAdditions/util/AbsInventory.java new file mode 100644 index 0000000..9672a1f --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/util/AbsInventory.java @@ -0,0 +1,188 @@ +package com.nao7016.ClayiumAdditions.util; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public abstract class AbsInventory extends TileEntity implements IInventory { + + protected ItemStack[] inventory; + protected String invName; + protected int stackSizeLimit; + + public AbsInventory(int invSize) { + this(invSize, 64); + } + + public AbsInventory(int invSize, int maxStackSize) { + inventory = new ItemStack[invSize]; + stackSizeLimit = maxStackSize; + } + + /** + * Inventory management + */ + + @Override + public ItemStack getStackInSlot(int slot) { + return slot < inventory.length ? inventory[slot] : null; + } + + public boolean isStackInSlot(int slot) { + return slot < inventory.length && inventory[slot] != null; + } + + @Override + public int getSizeInventory() { + return inventory.length; + } + + public boolean canDropInventorySlot(int slot) { + return true; + } + + @Override + public int getInventoryStackLimit() { + return stackSizeLimit; + } + + public void setInventorySlotContents(int slot, ItemStack itemStack) { + inventory[slot] = itemStack; + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public ItemStack decrStackSize(int slot, int quantity) { + ItemStack target = inventory[slot]; + if (target != null) { + if (target.stackSize <= quantity) { + ItemStack stack = target; + target = null; + return stack; + } + + ItemStack split = target.splitStack(quantity); + if (target.stackSize == 0) { + target = null; + } + return split; + } else { + return null; + } + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistance((double) xCoord + 0.5D, (double) yCoord + 0.5D, (double) zCoord + 0.5D) <= 64D; + } + } + + public abstract Container getGuiContainer(InventoryPlayer inventoryPlayer, World world, int x, int y, int z); + + /* for NBT */ + + @Override + public void readFromNBT(NBTTagCompound tags) { + super.readFromNBT(tags); + readInventoryFromNBT(tags); + } + + public void readInventoryFromNBT(NBTTagCompound tags) { + super.readFromNBT(tags); + NBTTagList nbtList = tags.getTagList("Items", 10); + this.inventory = new ItemStack[getSizeInventory()]; + + if (tags.hasKey("CustomName", 8)) { + this.invName = tags.getString("CustomName"); + } + + for (int i = 0; i < nbtList.tagCount(); ++i) { + NBTTagCompound nbt = nbtList.getCompoundTagAt(i); + + int j = nbt.getShort("Slot"); + + if (j < 0) j += 256; + + if (j >= 0 && j < this.inventory.length) { + this.inventory[j] = ItemStack.loadItemStackFromNBT(nbt); + } + } + } + + @Override + public void writeToNBT(NBTTagCompound tags) { + super.writeToNBT(tags); + whiteInventoryToNBT(tags); + } + + public void whiteInventoryToNBT(NBTTagCompound tags) { + super.writeToNBT(tags); + NBTTagList nbtList = new NBTTagList(); + + for (int i = 0; i < this.inventory.length; ++i) { + if (this.inventory[i] != null) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setShort("Slot", (short) i); + this.inventory[i].writeToNBT(nbt); + nbtList.appendTag(nbt); + } + } + + tags.setTag("Items", nbtList); + if (this.isInvNameLocalized()) { + tags.setString("CustomName", this.invName); + } + } + + /* Default implementation */ + public ItemStack getStackInSlotOnClosing() { + return null; + } + + public void openChest() {} + + public void closeChest() {} + + protected abstract String getDefaultName(); + + public void setInvName(String name) { + this.invName = name; + } + + public String getInvName() { + return this.isInvNameLocalized() ? this.invName : getDefaultName(); + } + + public boolean hasCustomInventoryName() { + return isInvNameLocalized(); + } + + public boolean isInvNameLocalized() { + return this.invName != null && this.invName.length() > 0; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack itemStack) { + ItemStack target = inventory[slot]; + if (slot < getSizeInventory()) { + return target == null || itemStack.stackSize + target.stackSize <= getInventoryStackLimit(); + } + return false; + } + + public void placeBlock(EntityLivingBase entity, ItemStack stack) {} + + public void removeBlock() {} +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/UtilInventory.java b/src/main/java/com/nao7016/ClayiumAdditions/util/UtilInventory.java new file mode 100644 index 0000000..2408d93 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/util/UtilInventory.java @@ -0,0 +1,49 @@ +package com.nao7016.ClayiumAdditions.util; + +import java.lang.ref.WeakReference; + +import net.minecraft.inventory.IInventory; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import mods.clayium.block.tile.TileClayCraftingTable; +import mods.clayium.util.UtilDirection; +import mods.clayium.util.UtilTransfer; + +public class UtilInventory { + + public static class EnhancedSelector extends UtilTransfer.InventorySelector { + + public WeakReference doubleChest; + public boolean doubleFirst; + + @Override + public IInventory selectInventoryToInsertTo(World world, int fromX, int fromY, int fromZ, + ForgeDirection direction) { + TileEntity tile = UtilDirection.getTileEntity(world, fromX, fromY, fromZ, direction); + if (tile instanceof IInventory to && !(tile instanceof TileClayCraftingTable)) { + if (tile instanceof TileEntityChest) { + checkDoubleChest(world, tile, 1, 0); + checkDoubleChest(world, tile, -1, 0); + checkDoubleChest(world, tile, 0, 1); + checkDoubleChest(world, tile, 0, -1); + } + } + return null; + } + + void checkDoubleChest(World world, TileEntity tile, int dx, int dz) { + this.checkDoubleChest(world, tile.xCoord, tile.yCoord, tile.zCoord, dx, dz); + } + + void checkDoubleChest(World world, int x, int y, int z, int dx, int dz) { + TileEntity tile = world.getTileEntity(x + dx, y, z + dz); + if (tile instanceof TileEntityChest) { + doubleChest = new WeakReference<>((IInventory) tile); + doubleFirst = dx + dz < 0; + } + } + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/StorageBoxUtil.java b/src/main/java/com/nao7016/ClayiumAdditions/util/UtilStorageBox.java similarity index 99% rename from src/main/java/com/nao7016/ClayiumAdditions/util/StorageBoxUtil.java rename to src/main/java/com/nao7016/ClayiumAdditions/util/UtilStorageBox.java index 9b99b31..eeeafba 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/util/StorageBoxUtil.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/util/UtilStorageBox.java @@ -12,7 +12,7 @@ import com.nao7016.ClayiumAdditions.item.storagebox.itemStorageBox; -public class StorageBoxUtil { +public class UtilStorageBox { /** * LC + Stack + itemに分ける @@ -72,7 +72,7 @@ public static StringBuilder calcItemNumByUnit(ItemStack stack, boolean appendIte /** * 一番上のSI接頭辞を付けてStringで返す。 - * + * * @param number 数値 * @return G, M, k, なしのどれか */