From 0fbe9c7ec8c13de911d9baf734bbc9e3ddbe0f22 Mon Sep 17 00:00:00 2001 From: nao7016 Date: Wed, 7 Jan 2026 18:40:14 +0900 Subject: [PATCH 1/5] Added Speed Gadgets (#41) * Added Speed Gadget (broken) * Added Speed Gadget (broken) 2 * Added Speed Gadget (broken) 3 * spotless * comment * fix * changed textures * changed textures 2 --- .../ClayiumAdditions/common/CAItems.java | 33 ++++++---- .../ClayiumAdditions/common/Config.java | 13 ++-- .../compat/nei/NEICrushHandler.java | 4 +- .../ClayiumAdditions/event/HammerEvent.java | 4 +- .../event/MiningHammerEvent.java | 6 +- .../ClayiumAdditions/item/ItemAddGadget.java | 43 ++++++++++++ .../{itemClayBowl.java => ItemClayBowl.java} | 4 +- ...yBowlEmpty.java => ItemClayBowlEmpty.java} | 4 +- ...temClayEnergy.java => ItemClayEnergy.java} | 4 +- ...temClayHammer.java => ItemClayHammer.java} | 4 +- ...gHammer.java => ItemClayMiningHammer.java} | 4 +- ...temRawClayOre.java => ItemRawClayOre.java} | 4 +- .../item/gadget/GadgetAddOrdinal.java | 55 ++++++++++++++++ .../item/gadget/GadgetSpeed.java | 61 ++++++++++++++++++ .../ClayiumAdditions/recipe/CARecipes.java | 2 +- .../recipe/CrushRecipesCraft.java | 5 +- .../assets/clayiumadditions/lang/en_US.lang | 3 + .../assets/clayiumadditions/lang/ja_JP.lang | 3 + .../assets/clayiumadditions/lang/zh_CN.lang | 3 + .../textures/items/gadget_blank.png | Bin 0 -> 562 bytes .../textures/items/gadget_speed0.png | Bin 0 -> 818 bytes .../textures/items/gadget_speed0_2.png | Bin 0 -> 833 bytes .../textures/items/gadget_speed1.png | Bin 0 -> 826 bytes .../textures/items/gadget_speed1_2.png | Bin 0 -> 821 bytes .../textures/items/gadget_speed2.png | Bin 0 -> 812 bytes .../textures/items/gadget_speed2_2.png | Bin 0 -> 828 bytes 26 files changed, 216 insertions(+), 43 deletions(-) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/item/ItemAddGadget.java rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemClayBowl.java => ItemClayBowl.java} (95%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemClayBowlEmpty.java => ItemClayBowlEmpty.java} (97%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemClayEnergy.java => ItemClayEnergy.java} (97%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemClayHammer.java => ItemClayHammer.java} (97%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemClayMiningHammer.java => ItemClayMiningHammer.java} (95%) rename src/main/java/com/nao7016/ClayiumAdditions/item/{itemRawClayOre.java => ItemRawClayOre.java} (95%) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetAddOrdinal.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetSpeed.java create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_blank.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0_2.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1_2.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2.png create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2_2.png diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index 894f9d4..3c1585c 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -4,12 +4,9 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; -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.*; +import com.nao7016.ClayiumAdditions.item.ItemClayBowl; +import com.nao7016.ClayiumAdditions.item.gadget.GadgetSpeed; import com.nao7016.ClayiumAdditions.item.storagebox.itemClayStorageBox; import com.nao7016.ClayiumAdditions.item.storagebox.itemMiningStorageBox; import com.nao7016.ClayiumAdditions.item.storagebox.itemStorageBox; @@ -17,6 +14,7 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameRegistry; import ganymedes01.etfuturum.api.RawOreRegistry; +import mods.clayium.item.ItemGadgetHolder; public class CAItems { @@ -29,6 +27,7 @@ public class CAItems { public static Item storageBox; public static Item clayStorageBox; public static Item miningStorageBox; + public static ItemAddGadget addGadget; private static Item register(Item item, String name) { GameRegistry.registerItem(item, name); @@ -36,17 +35,25 @@ private static Item register(Item item, String name) { } public static void registerItems() { - if (Config.cfgSplittedEnergeticClay) { - clayEnergy = register(new itemClayEnergy(), "clay_energy"); + addGadget = (ItemAddGadget) (new ItemAddGadget()).setCreativeTab(CATabs.ca_tabs) + .setUnlocalizedName("itemGadget") + .setMaxStackSize(1); + addGadget.addItemList("Speed0", 96, "gadget_speed0", 7); + addGadget.addItemList("Speed1", 97, "gadget_speed1", 9); + addGadget.addItemList("Speed2", 98, "gadget_speed2", 11); + register(addGadget, "itemGadget"); + ItemGadgetHolder.addGadget(new GadgetSpeed()); + if (Config.cfgSplitEnergeticClay) { + clayEnergy = register(new ItemClayEnergy(), "clay_energy"); } if (Config.cfgModeSky) { - clayBowlEmpty = register(new itemClayBowlEmpty(), "clay_bowl_empty"); - clayBowl = register(new itemClayBowl(), "clay_bowl"); - clayHammer = register(new itemClayHammer(), "clay_hammer"); + clayBowlEmpty = register(new ItemClayBowlEmpty(), "clay_bowl_empty"); + clayBowl = register(new ItemClayBowl(), "clay_bowl"); + clayHammer = register(new ItemClayHammer(), "clay_hammer"); } if (Config.cfgEtFuturum) { if (Loader.isModLoaded("etfuturum")) { - rawClayOre = new itemRawClayOre(); + rawClayOre = new ItemRawClayOre(); register(rawClayOre, "raw_clay_ore"); OreDictionary.registerOre("oreDenseClay", getMeta(rawClayOre, 1)); OreDictionary.registerOre("oreLargeDenseClay", getMeta(rawClayOre, 2)); @@ -55,7 +62,7 @@ public static void registerItems() { } } if (Config.cfgMiningHammer) { - clayMiningHammer = register(new itemClayMiningHammer(), "clay_mining_hammer"); + clayMiningHammer = register(new ItemClayMiningHammer(), "clay_mining_hammer"); } if (Config.cfgStorageBox) { storageBox = register(new itemStorageBox(), "storage_box"); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/Config.java b/src/main/java/com/nao7016/ClayiumAdditions/common/Config.java index e6cba3c..230cc8b 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/Config.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/Config.java @@ -6,7 +6,7 @@ public class Config { - public static boolean cfgSplittedEnergeticClay; + public static boolean cfgSplitEnergeticClay; public static boolean cfgAutoWaterWheel; public static boolean cfgMiningHammer; public static boolean cfgAddMachines; @@ -24,20 +24,17 @@ public class Config { public static void synchronizeConfiguration(File configFile) { Configuration configuration = new Configuration(configFile); - cfgSplittedEnergeticClay = configuration.getBoolean( - "EnableSplittedEnergeticClay", - "item", - true, - "If true, Splitted Energetic Clay will be enabled."); + cfgSplitEnergeticClay = configuration + .getBoolean("EnableSplitEnergeticClay", "item", true, "If true, Split Energetic Clay will be enabled."); cfgAutoWaterWheel = configuration .getBoolean("EnableAutoWaterWheel", "item", true, "If true, Auto Water Wheel will be enabled."); cfgMiningHammer = configuration .getBoolean("EnableMiningHammer", "item", true, "If true, Clay Mining Hammer will be enabled."); cfgAddMachines = configuration.getBoolean( - "EnableAdditionalMachines", + "EnableAdditionalTieredMachines", "item", false, - "If true, additional tiers Machines will be enabled. (ex. tier 6,7 Condenser) Mainly for modpacks."); + "If true, additional tiered Machines will be enabled. (ex. tier 6,7 Condenser) Mainly for modpacks."); cfgStorageBox = configuration .getBoolean("EnableStorageBox", "storagebox", true, "If true, Storage Box will be enabled."); cfgSBMoreDisplay = configuration.getBoolean( diff --git a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEICrushHandler.java b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEICrushHandler.java index c5591f9..45a2fc8 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEICrushHandler.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/compat/nei/NEICrushHandler.java @@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.ItemClayHammer; import com.nao7016.ClayiumAdditions.recipe.CrushRecipes; import com.nao7016.ClayiumAdditions.util.CrushList; @@ -45,7 +45,7 @@ public void loadCraftingRecipes(ItemStack result) { @Override public void loadUsageRecipes(ItemStack ingredient) { for (CrushList recipe : CrushRecipes.getAll()) { - if (recipe.matches(ingredient) || ingredient.getItem() instanceof itemClayHammer) { + if (recipe.matches(ingredient) || ingredient.getItem() instanceof ItemClayHammer) { arecipes.add(new CachedCrushRecipe(recipe)); } } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/event/HammerEvent.java b/src/main/java/com/nao7016/ClayiumAdditions/event/HammerEvent.java index aa3c4ff..4a52126 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/event/HammerEvent.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/event/HammerEvent.java @@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.event.world.BlockEvent; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.ItemClayHammer; import com.nao7016.ClayiumAdditions.recipe.CrushRecipes; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -16,7 +16,7 @@ public void onHarvestDrops(BlockEvent.HarvestDropsEvent event) { EntityPlayer player = event.harvester; if (player != null && player.getHeldItem() != null && player.getHeldItem() - .getItem() instanceof itemClayHammer) { + .getItem() instanceof ItemClayHammer) { ItemStack drop = new ItemStack(event.block); ItemStack result = CrushRecipes.getResult(drop); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/event/MiningHammerEvent.java b/src/main/java/com/nao7016/ClayiumAdditions/event/MiningHammerEvent.java index 2031551..b94045a 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/event/MiningHammerEvent.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/event/MiningHammerEvent.java @@ -5,7 +5,7 @@ import net.minecraftforge.event.world.BlockEvent; import com.nao7016.ClayiumAdditions.common.CABlocks; -import com.nao7016.ClayiumAdditions.item.itemClayMiningHammer; +import com.nao7016.ClayiumAdditions.item.ItemClayMiningHammer; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import mods.clayium.block.CBlocks; @@ -17,7 +17,7 @@ public void onHarvestDrops(BlockEvent.HarvestDropsEvent event) { EntityPlayer player = event.harvester; if (player != null && player.getHeldItem() != null && player.getHeldItem() - .getItem() instanceof itemClayMiningHammer) { + .getItem() instanceof ItemClayMiningHammer) { ItemStack held = player.getHeldItem(); @@ -33,7 +33,7 @@ public void onHarvestDrops(BlockEvent.HarvestDropsEvent event) { public void onBreak(BlockEvent.BreakEvent event) { ItemStack held = event.getPlayer() != null ? event.getPlayer() .getHeldItem() : null; - if (held == null || !(held.getItem() instanceof itemClayMiningHammer)) return; + if (held == null || !(held.getItem() instanceof ItemClayMiningHammer)) return; if (event.block == CBlocks.blockClayOre || event.block == CABlocks.blockDeepslateClayOre) { event.setExpToDrop(0); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/ItemAddGadget.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemAddGadget.java new file mode 100644 index 0000000..86569f5 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemAddGadget.java @@ -0,0 +1,43 @@ +package com.nao7016.ClayiumAdditions.item; + +import java.util.HashMap; +import java.util.Map; + +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import mods.clayium.item.ItemDamaged; +import mods.clayium.item.ItemGadget; + +public class ItemAddGadget extends ItemGadget { + + private Map entryMap = new HashMap<>(); + private Map iconMap = new HashMap<>(); + + @Override + public ItemDamaged addItemList(String itemName, int meta, String iconString, int tier) { + entryMap.put(meta, iconString); + return super.addItemList(itemName, meta, iconString, tier); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iicon) { + this.itemIcon = iicon.registerIcon("clayiumadditions:gadget_blank"); + for (Map.Entry entry : entryMap.entrySet()) { + String iconString = "clayiumadditions:" + entry.getValue(); + int meta = entry.getKey(); + IIcon icon = iicon.registerIcon(iconString); + iconMap.put(meta, icon); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + IIcon icon = iconMap.get(meta); + return icon != null ? icon : this.itemIcon; + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowl.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowl.java similarity index 95% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowl.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowl.java index 73c0d45..c0fd1e6 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowl.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowl.java @@ -15,9 +15,9 @@ import mods.clayium.item.ItemTiered; import mods.clayium.util.UtilLocale; -public class itemClayBowl extends ItemTiered { +public class ItemClayBowl extends ItemTiered { - public itemClayBowl() { + public ItemClayBowl() { setUnlocalizedName("clay_bowl"); setContainerItem(CAItems.clayBowlEmpty); setCreativeTab(CATabs.ca_tabs); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowlEmpty.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowlEmpty.java similarity index 97% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowlEmpty.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowlEmpty.java index 3901d30..49e5b0f 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayBowlEmpty.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayBowlEmpty.java @@ -17,9 +17,9 @@ import cpw.mods.fml.relauncher.SideOnly; import mods.clayium.util.UtilLocale; -public class itemClayBowlEmpty extends Item { +public class ItemClayBowlEmpty extends Item { - public itemClayBowlEmpty() { + public ItemClayBowlEmpty() { setUnlocalizedName("clay_bowl_empty"); setCreativeTab(CATabs.ca_tabs); } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayEnergy.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayEnergy.java similarity index 97% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayEnergy.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayEnergy.java index e51e883..bf9b168 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayEnergy.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayEnergy.java @@ -19,11 +19,11 @@ import mods.clayium.item.ItemDamaged; import mods.clayium.util.UtilLocale; -public class itemClayEnergy extends ItemDamaged implements IClayEnergy { +public class ItemClayEnergy extends ItemDamaged implements IClayEnergy { private final Map iconMap = new HashMap<>(); - public itemClayEnergy() { + public ItemClayEnergy() { setUnlocalizedName("clay_energy"); setHasSubtypes(true); setCreativeTab(CATabs.ca_tabs); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayHammer.java similarity index 97% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayHammer.java index d25e9c5..af727fa 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayHammer.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayHammer.java @@ -19,12 +19,12 @@ import mods.clayium.block.CBlocks; import mods.clayium.util.UtilLocale; -public class itemClayHammer extends ItemPickaxe { +public class ItemClayHammer extends ItemPickaxe { protected float efficiencyOnClayBlocks = 40.0F; private float efficiencyOnClayOre = 15.0F; - public itemClayHammer() { + public ItemClayHammer() { super(ToolMaterial.STONE); this.setMaxDamage(300); this.setCreativeTab(CATabs.ca_tabs); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayMiningHammer.java similarity index 95% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayMiningHammer.java index daade4b..50c90f7 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemClayMiningHammer.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemClayMiningHammer.java @@ -17,11 +17,11 @@ import mods.clayium.block.CBlocks; import mods.clayium.util.UtilLocale; -public class itemClayMiningHammer extends ItemPickaxe { +public class ItemClayMiningHammer extends ItemPickaxe { private float efficiencyOnClayOre = 40.0F; - public itemClayMiningHammer() { + public ItemClayMiningHammer() { super(ToolMaterial.IRON); this.setMaxDamage(400); this.setCreativeTab(CATabs.ca_tabs); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/itemRawClayOre.java b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemRawClayOre.java similarity index 95% rename from src/main/java/com/nao7016/ClayiumAdditions/item/itemRawClayOre.java rename to src/main/java/com/nao7016/ClayiumAdditions/item/ItemRawClayOre.java index 8067be8..055d589 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/item/itemRawClayOre.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/ItemRawClayOre.java @@ -14,12 +14,12 @@ import cpw.mods.fml.relauncher.SideOnly; import mods.clayium.item.ItemDamaged; -public class itemRawClayOre extends ItemDamaged { +public class ItemRawClayOre extends ItemDamaged { private IIcon[] icons = new IIcon[3]; private static final int[] VALID_METAS = { 1, 2 }; - public itemRawClayOre() { + public ItemRawClayOre() { setUnlocalizedName("raw_clay_ore"); setCreativeTab(CATabs.ca_tabs); setMaxStackSize(64); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetAddOrdinal.java b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetAddOrdinal.java new file mode 100644 index 0000000..365e9de --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetAddOrdinal.java @@ -0,0 +1,55 @@ +package com.nao7016.ClayiumAdditions.item.gadget; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.nao7016.ClayiumAdditions.common.CAItems; + +import mods.clayium.item.CItems; +import mods.clayium.item.IItemGadget; +import mods.clayium.item.gadget.GadgetOrdinal; + +public abstract class GadgetAddOrdinal extends GadgetOrdinal implements IItemGadget { + + public List itemNames; + + // アイテム名とリスト(+インデックス)を受け取るコンストラクタ + public GadgetAddOrdinal(String... itemNames) { + this.itemNames = Arrays.asList(itemNames); + } + + // 粘土ガジェットかどうかを判定する + @Override + public boolean match(ItemStack itemStack, World world, Entity entity, int slot, boolean isCurrentItem) { + return isGadget(itemStack) && this.itemNames.contains(CAItems.addGadget.getItemName(itemStack)); + } + + // 元のメソッドではCItems.itemGadgetを対象にupdateを呼び出し + // OverrideしてaddGadgetを対象にした + @Override + public void update(List list, Entity entity, boolean isRemote) { + int i = -1; + + for (ItemStack itemStack : list) { + if (isGadget(itemStack)) { + i = Math.max(this.itemNames.indexOf(CAItems.addGadget.getItemName(itemStack)), i); + } + } + + this.update(i, entity, isRemote); + } + + // 粘土ガジェットかどうかを判定するヘルパーメソッド + private boolean isGadget(ItemStack itemStack) { + return itemStack != null + && (itemStack.getItem() == CItems.itemGadget || itemStack.getItem() == CAItems.addGadget); + } + + // インデックス、Entity、isRemoteを受け取る抽象メソッド + @Override + public abstract void update(int itemIndex, Entity entity, boolean isRemote); +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetSpeed.java b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetSpeed.java new file mode 100644 index 0000000..1a14b34 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetSpeed.java @@ -0,0 +1,61 @@ +package com.nao7016.ClayiumAdditions.item.gadget; + +import java.util.UUID; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; + +import com.google.common.collect.HashMultimap; +import com.google.common.collect.Multimap; + +public class GadgetSpeed extends GadgetAddOrdinal { + + private AttributeModifier mod; + private static UUID uuid = UUID.fromString("400d58e3-62dc-7c2d-e4b4-e3d3348af325"); + private int previousIndex = -1; + + // リストのインデックスによって効果値を変更させる + public GadgetSpeed() { + super(new String[] { "Speed0", "Speed1", "Speed2" }); + } + + @Override + public void update(int itemIndex, Entity entity, boolean isRemote) { + if (isRemote) return; + + // 過剰な効果の付け外しを抑制 + if (itemIndex == previousIndex) return; + previousIndex = itemIndex; + + // AttributeModifierがnullの場合、新たに作成 + if (this.mod == null) { + this.mod = new AttributeModifier(uuid, "GadgetSpeed", 0.2D, 1); + } + + // インデックスに応じて効果を適用または削除 + // itemIndex >= 0 (ガジェットが収納されている) の場合は効果を適用 + // itemIndex = -1 (ガジェットが未収納) の場合は削除 + if (itemIndex >= 0) { + if (entity instanceof EntityLivingBase) { + Multimap map = HashMultimap.create(); + map.put( + SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), + new AttributeModifier( + uuid, + this.mod.getName(), + this.mod.getAmount() * Math.pow(2, itemIndex), + this.mod.getOperation())); + ((EntityLivingBase) entity).getAttributeMap() + .applyAttributeModifiers(map); + } + } else if (entity instanceof EntityLivingBase) { + Multimap map = HashMultimap.create(); + map.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), this.mod); + ((EntityLivingBase) entity).getAttributeMap() + .removeAttributeModifiers(map); + } + + } +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java index 8d34e11..8bf38a7 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java @@ -144,7 +144,7 @@ private static void registerHammer() { } private static void registerCESplitted() { - if (Config.cfgSplittedEnergeticClay) { + if (Config.cfgSplitEnergeticClay) { for (int tier = 4; tier <= 12; tier++) { CRecipes.recipeCuttingMachine.addRecipe( i(CBlocks.blockCompressedClay, 1, tier), diff --git a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java index 1affbcc..918f86d 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CrushRecipesCraft.java @@ -5,8 +5,9 @@ import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; -import com.nao7016.ClayiumAdditions.item.itemClayHammer; +import com.nao7016.ClayiumAdditions.item.ItemClayHammer; +@Deprecated public class CrushRecipesCraft implements IRecipe { private final ItemStack input; @@ -31,7 +32,7 @@ public boolean matches(InventoryCrafting inv, World world) { for (int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stack = inv.getStackInSlot(i); if (stack != null) { - if (stack.getItem() instanceof itemClayHammer) { + if (stack.getItem() instanceof ItemClayHammer) { hammer = true; } else if (stack.isItemEqual(input)) { matchedInput = true; diff --git a/src/main/resources/assets/clayiumadditions/lang/en_US.lang b/src/main/resources/assets/clayiumadditions/lang/en_US.lang index 378d10e..1e201a4 100644 --- a/src/main/resources/assets/clayiumadditions/lang/en_US.lang +++ b/src/main/resources/assets/clayiumadditions/lang/en_US.lang @@ -39,6 +39,9 @@ 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 +item.itemGadget.Speed0.name=Clay Gadget [Speed I] +item.itemGadget.Speed1.name=Clay Gadget [Speed II] +item.itemGadget.Speed2.name=Clay Gadget [Speed III] 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 a71a628..6d8c5d6 100644 --- a/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang +++ b/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang @@ -54,6 +54,9 @@ tile.blockDeepslateClayOre.1.name=深層高密度粘土鉱石 tile.blockDeepslateClayOre.2.name=深層高密度粘土鉱石大 tile.blockRawClayOre.1.name=工業用粘土の原石ブロック tile.blockRawClayOre.2.name=発展工業用粘土の原石ブロック +item.itemGadget.Speed0.name=粘土ガジェット [移動速度 I] +item.itemGadget.Speed1.name=粘土ガジェット [移動速度 II] +item.itemGadget.Speed2.name=粘土ガジェット [移動速度 III] tile.blockBasicLimitBuffer.name=制限バッファー tile.blockAdvancedLimitBuffer.name=発展制限バッファー diff --git a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang index 5a8b2ff..9ecbc75 100644 --- a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang +++ b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang @@ -39,6 +39,9 @@ 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 +item.itemGadget.Speed0.name=Clay Gadget [Speed I] +item.itemGadget.Speed1.name=Clay Gadget [Speed II] +item.itemGadget.Speed2.name=Clay Gadget [Speed III] tile.blockAutoSimpleWaterWheel.name=简易自动粘土水车 tile.blockAutoBasicWaterWheel.name=基础自动粘土水车 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_blank.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..d25da81f665f13b34c0a67b68bb78b2ebe5330b0 GIT binary patch literal 562 zcmV-20?qx2P)m{T~)0WG^ zmh^A?c^C{nEKmCIW#*ij`7$RtQvjy^hjFqPS^_VH5tZYJzlxb#3C3#WsuPjfKvjM?I@T&@Ko`>*(}Mbo#v!EH|&M zKlIVDdc;t`zu_lu(CM4RWv7kv*3}s6WHvzWx=|n%~ek`;OyZ4c1cu7xPaR>>K(RtzN|; z6Al>(kLXT6G2mmpHo;0dfCHmM?CL7MR5TKO(iBuqYcyP9!v{wt_!1KYFJc_F)gp>) zpr|WQ$|_VtqqANwLn*2Beuc@Og}rvcSQLIZ*@REdT%j07*qoM6N<$f}%16 A_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf1e51fb2a6ac834355efa356d77d46637e2257 GIT binary patch literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f|4b!5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7 zdWMEw9Af8yigu(%c&2%JYB6vCIjjs)jI0cdK$aH}OGDWp=V&l8gT7#SNdE`XQ|vXgZI#H?vRHV7~Q zO=beC46?KUvY@&Q4GciCk(zZI&cCU+0t}gZo-U3d7XC{o@68i-6lvXWz1hq|tu5hr z;2IAH0a+&}4-t<)CQF({6darHEC{&x)Ucw-!P$|CccJ@2hb0VL<{f()HVPX|^2}LZ zUS6lsbDXb(?c6J`>i2VgmXwu;?fL$vKZRw-*9Y75eW#y%{;7k5Axb1lJ19AT<63mj z#y4BaE580%%HX1W>C45(cXm_>zm{dt3hLlESG|QJDtk`xjx!rSrX_F5<+N~xs?CCp`I{IF)7?edQ+Bz-1VZTi$S^VGr%t1tRaQmgrSYthwv zsUL5tJ_}!U(Bx8v*zv*{tt?!MzQR2lpM0`pxOZ+#li-36UrZUk%UwI9qr$M^nxfK- zGYkbw?Zj6dSpGoRwvL@q!Ap7nI+N2)56gA0W*HQgFe#i3`u3|jCvWfbyX{uJPu0F~ zmL|To^4=;nU4NdsA6q?BRkNP_>)R&NW*V2YXJM zCtI?^53a&X&z~I9jNr~@m=igJck^X+tuK#jebNqBc|6#&bow`ous)4&zF-~AE>+j< z*OyzFAI;h6Q2pO}_uTv=H-E^q%zydjk!8G%5o<%3;5o~pogEtUkEgJ`m(4Wmx%cy8 hV)f_EG7NuK*D-}mJHir}wlEwN>z=NDF6*2UngDxPAoBnK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0_2.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f6ce025f3af53ba910259a5af1006ff9665ac8fc GIT binary patch literal 833 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv=}#LT=BJwMkF1yemk zJwwAT4zY7UMLSX>JkvZqwHP>n999M?Mpgz!Aj=DgrJ-z)b2J#4!QxCnwjm=EgCLNO z0^-be7O;2@kPQL}Kn&6kqtR_;U|?oon841!0#svQWNg5=0Aemk59Mybe+V|Ge#WBRff9a&%*&=}=$LiDH%?<73f3$eR zR$+OKrU*@?jlnFU+8YJe9yxdE(EbDL9TTo82^d60u=KP}ICjXy?v#j>S*LWz>vLz$ z)keK}cbBv5S1g|l-~GQI3oV3_pVX@;AGo^v`lEd(|8Dstro_}RiD#)%PjL!|UDce= zYs$hZZU1^PeCaURnXW(mTi}*R4X_|>5125 z?Ov`Xw~Io(O3FJJn9Z!DRhG;=z|PMkP_4 zv2ov_x7)8DU$;e);@@#atGHYZr8PPg!>4 zaYf}D-YHA0wptv0EPmeLSisf4`x#yLyQls>GjC4%w<9%1CRa7hR>a6Zer@8-5N(~4 zxZwD-Sy2{~t7MD!e7*A5P+{(;pVH!w9y+@hoMW8uTBbqv_I5?4d%QJP;WfWD9oapz za^Xw`7ym@AR{@Vdmb})xyUTmM#>=UydlxPET;06&?EH|j8g|Wt7rT!?em8eFL%>Y6 z7KeG+C97LE_en4x<6D&f@79yshr(|%{Rscd_;lt+8+H?QQBWfAboFyt=akR{0Ee$G A8~^|S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1.png new file mode 100644 index 0000000000000000000000000000000000000000..14c9afbd572b72908972bddc9e0a3c99c8be1a96 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f|4b!5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7 zdWMEw9Af8yigu(%c&2%JYB6vCIjjs)jI0cdK$aH}OGDWp=V&l8gT7#SNdE`XQ|vXgZI#H?vRHV7~Q zO=beC46?KUvY@&Q4GciCk(zZI&cCU+0t}gFo-U3d7XC{o*=C10inPr)E-nu>nVnMZ z+mRa3tg($zH>9OxSF2Ob7qdlETbJ%v_@B7eY>`@Tp|qnx7+X(M_F_ejvY!#Y8#!;j zxwl@j`|RAkhI98FZk%cS-e%ADq9akK|9b=-SlhlmH*<%N-E?;sh6{@>LhEu^E9LJ)za71PI7|uAc;X|Eb?KSp{rGZKs zSF=Os?=M-l=H307$Ab5^q%d}RIxy&56)(P$eSD7Q>Mr~9CnqYuTXV@*fNjm+TM5al zPhPp|9rCBoc&S(QT)+S4R0B8?B?OLh?yTW!c)E1`IgWt!dl|d#)IQlg&zoU_3Y(x} zUlN0wzW1_umh)fyvoBx>l)4$8C}Mf|{;D5#DQ?FZ4{4;N=eHkSnrc^*6|nv+le}^1 zw66a%UY*gJyP#U)!n=2$c5ZaqYqtCUj}5DgS2MJDKB(doVBPyZZ=Ju~imv+eZyDum zW-7e+#+Wx{y>I;X=f}=(-nQ?p9^<*5{!fq7FV9u?>;L#Py1BeKzcq&`S@>4s?1h`$ zE1zhzPFfTY^k&<43sbWL89yzWU41uyo$YsJKJ)YkhpxCrTNpAlgvlL~D6-_&pReAR rw8pe0P`@gB_t8_2$}Jgwg#Tq+8-7yyRl_b&s%7wW^>bP0l+XkKIu9xL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1_2.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..47de6bcb95dc699f51e0c22fd182a7349203b15f GIT binary patch literal 821 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv=}#LT=BJwMkF1yemk zJwwAT4zY7UMLSX>JkvZqwHP>n999M?Mpgz!Aj=DgrJ-z)b2J#4!QxCnwjm=EgCLNO z0^-be7O;2@kPQL}Kn&6kqtR_;U|?oon841!0#svQWNg5=0Aemk59Mybe+V{}Y#WBRff9a&XSyLQE+U6U7u3g<^@3NQ4 zI#4I4DWZeJZ1#L7#R^ugtVF>Ry%|nAN=-?rJQ<2BVjZNn2Ie1_krSi1?*8`OpYu1~ zyvZB&(pqMQ<>z_r#%Cr@5&Ewz$+RwJ|ExY=ndO0I0)h-%G`56Aybt71WZlD`vvqq# z+5eRcBF>kNOkC^}KSOZ|M}wA#l9LaoZqv0{63Q1{!|t!)I~{PiH%v;^X(hK;?1IGs z3o<<#-2`h}7-u{2TBYo17GUOZIQ08K&gV+A-t4zWMGD1_RIneDGTUZ;GiUpcU3(8c zYTm3IeobieS_eGX}~Ext{+Txx@7Qp|d}8B(86r>CSK?p-8WOv9Vlubku#d&rk1f`B5QtIsW`} zn^WS?^_EUn_j|aPeSwY_1K*qb?HnxjA4Hcv`@5WfPt~U&iFzlW##`5BWN@%pEpt9z zvf`Cq=yvbW>s#voF4+2c?mX$Uj_)3Pd20Of!$D_;j8K8(B|6+)Zp`m(G+oz7@2P$M ioG(7EewuAV{nh;I8qfT)vnH#8BHq*0&t;ucLK6VC5ES+R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2.png new file mode 100644 index 0000000000000000000000000000000000000000..2f53bd266c09645202cb984f32f59f518403182d GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f|4b!5hcO-X(i=}MX3w{iJ5sNdVa1U3Z{C7 zdWMEw9Af8yigu(%c&2%JYB6vCIjjs)jI0cdK$aH}OGDWp=V&l8gT7#SNdE`XQ|vXgZI#H?vRHV7~Q zO=beC46?KUvY@&Q4GciCk(zZI&cCU+0t}fOo-U3d7XC{o`DX_^iX5#kf2OK+E5p|( zlx3mP77e{6+U8nL#*u%T@YSEGv9ln)-_P1xMGIFdm$`wbRWb`_h-c zvkNEgtE{{*b>71RXJ%Tr8&B817WI#PlB7-5w;N&U*;BkzU04`&xz>sXPFf%kG<%YY z=H0sKXT|eb4xFBoc7ERThj-alnlfnkD=JB3UsTFiYj`Xn>F}}Ry>BA(7EE>PTyVuD zs`}?GQQyZeCyUycdY;(gm=z?zaQfEj(pioVy0|{n>Rs{QvG|l(qR6Jt#nbQB^*^mH z&-k%V`_zQY#~*KGo^w!i2|Q6?Q8GOzU;G9qla*tG(03hk29Mz8jtNIjy6o5#qO#$^ z?~ZfT4|rTMpJcce@-*z7VeG8Vk&smqBfQum>3_ofwPDf?+mD+RD!x9r@e=Pzb?>d;FT6}xVzyD2+nm*vS6->F3=y5WD#^m?!KbB? z&$5=k{QuK8|3i1-ob!#|1;sz7t(`NI(LtL(nP=&w_Hez)M>wxZEvgWz-C(}p@562p co`0hCj5UELu3ay^6Ap@RPgg&ebxsLQ03U=RIRF3v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2_2.png b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb05e6a34f9cd30b1a336b23b7bd3b78d6de0536 GIT binary patch literal 828 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv=}#LT=BJwMkF1yemk zJwwAT4zY7UMLSX>JkvZqwHP>n999M?Mpgz!Aj=DgrJ-z)b2J#4!QxCnwjm=EgCLNO z0^-be7O;2@kPQL}Kn&6kqtR_;U|?oon841!0#svQWNg5=0Aemk59Mybe+V{fK#WBRff9a&%*&&V+N9*sOxwE>7f03A2 zSlOb8&b1v0kDDEorX@XI9H5gl@tD1nql#D*8_VWav8G$xj@ny&5}nKnnP2ZJe}B(f zzx(doyRJE3c-Y(ejoa_O_=ieOl)-+jpZ1(k*M8U}{p|Kk`?md~7-Tn0~ z@4P(`Qp?+-^7f>>{VkOmxhzsCfTJ|_;T-kTn;Fl(%Hm?OnX{Mcz|7s(FY5?0RLBbm z&MB>sfB52MCiC}s`ifP5_=6fXdU^bFb+>IhqO8*Y<;5}I84+{8aBf}u@{5&3vcrRe zZ+}0&5>P(R?pWpdf4kbAJLl;JSKilu zuBxR~yk7b1anqJl&)3cEKi)t0fF-*_ni0ddH}_gOD$GyJ^!fbqboxEr{i14|PG3Yy z9YwWl=J{P+7+m^7%y!paxx0%Ne9dlO`;Fhr`d+h3!KXtjchtYPW7uNUB5=Z}`DF2& s(jyWp-ZJd{yZP+)@A0Xt9>jl@R=N5n=XZbWJ5c<4y85}Sb4q9e0N`3CaR2}S literal 0 HcmV?d00001 From 8a93401b1724406b9497a21174c66fdf0bfbcf16 Mon Sep 17 00:00:00 2001 From: nao7016 Date: Tue, 13 Jan 2026 16:23:04 +0900 Subject: [PATCH 2/5] Add 3x3 Hammer --- .../ClayiumAdditions/common/CAItems.java | 2 + .../ClayiumAdditions/item/Item3x3Hammer.java | 60 ++++++++++++++++++ .../ClayiumAdditions/recipe/CARecipes.java | 13 +++- .../util/HarvestCoord3x3.java | 47 ++++++++++++++ .../assets/clayiumadditions/lang/en_US.lang | 2 + .../assets/clayiumadditions/lang/ja_JP.lang | 8 ++- .../assets/clayiumadditions/lang/zh_CN.lang | 2 + .../textures/items/3x3hammer.png | Bin 0 -> 472 bytes 8 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/item/Item3x3Hammer.java create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/util/HarvestCoord3x3.java create mode 100644 src/main/resources/assets/clayiumadditions/textures/items/3x3hammer.png diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index 3c1585c..bc12506 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -24,6 +24,7 @@ public class CAItems { public static Item rawClayOre; public static Item clayHammer; public static Item clayMiningHammer; + public static Item clay3x3Hammer; public static Item storageBox; public static Item clayStorageBox; public static Item miningStorageBox; @@ -63,6 +64,7 @@ public static void registerItems() { } if (Config.cfgMiningHammer) { clayMiningHammer = register(new ItemClayMiningHammer(), "clay_mining_hammer"); + clay3x3Hammer = register(new Item3x3Hammer(), "clay_3x3_hammer"); } if (Config.cfgStorageBox) { storageBox = register(new itemStorageBox(), "storage_box"); diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/Item3x3Hammer.java b/src/main/java/com/nao7016/ClayiumAdditions/item/Item3x3Hammer.java new file mode 100644 index 0000000..d430edf --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/Item3x3Hammer.java @@ -0,0 +1,60 @@ +package com.nao7016.ClayiumAdditions.item; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemPickaxe; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import com.nao7016.ClayiumAdditions.common.CATabs; +import com.nao7016.ClayiumAdditions.util.HarvestCoord3x3; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import mods.clayium.item.IAdvancedTool; +import mods.clayium.item.IHarvestCoord; +import mods.clayium.util.UtilAdvancedTools; +import mods.clayium.util.UtilLocale; + +public class Item3x3Hammer extends ItemPickaxe implements IAdvancedTool { + + private IHarvestCoord harvestCoord; + + public Item3x3Hammer() { + super(ToolMaterial.IRON); + this.setMaxDamage(1000); + this.setCreativeTab(CATabs.ca_tabs); + this.setUnlocalizedName("clay_3x3_hammer"); + this.setTextureName("clayiumadditions:3x3hammer"); + this.harvestCoord = new HarvestCoord3x3(); + } + + public float getDigSpeed(ItemStack stack, Block block, int meta) { + return super.getDigSpeed(stack, block, meta) * 2.0F; + } + + @Override + public IHarvestCoord getHarvestCoord() { + return this.harvestCoord; + } + + public boolean onBlockDestroyed(ItemStack stack, World world, Block block, int x, int y, int z, + EntityLivingBase entity) { + boolean result = super.onBlockDestroyed(stack, world, block, x, y, z, entity); + stack.damageItem(UtilAdvancedTools.onBlockDestroyed(stack, world, block, x, y, z, entity), entity); + return result; + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean flag) { + super.addInformation(stack, player, list, flag); + List alist = UtilLocale.localizeTooltip(this.getUnlocalizedName(stack) + ".tooltip"); + if (alist != null) { + list.addAll(alist); + } + } + +} diff --git a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java index 8bf38a7..4b87785 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/recipe/CARecipes.java @@ -29,7 +29,7 @@ public class CARecipes { public static void register() { registerCrafting(); registerHammer(); - registerCESplitted(); + registerCESplit(); registerCMachines(); registerGrinder(); registerTransformer(); @@ -80,6 +80,15 @@ private static void registerCrafting() { CMaterials.get(CMaterials.DENSE_CLAY, CMaterials.CYLINDER), 'S', CMaterials.get(CMaterials.DENSE_CLAY, CMaterials.STICK)); + GameRegistry.addRecipe( + i(CAItems.clay3x3Hammer), + "CCC", + " S ", + " S ", + 'C', + CMaterials.get(CMaterials.IND_CLAY, CMaterials.BLOCK), + 'S', + CMaterials.get(CMaterials.DENSE_CLAY, CMaterials.STICK)); } if (Config.cfgEtFuturum && Loader.isModLoaded("etfuturum")) { @@ -143,7 +152,7 @@ private static void registerHammer() { } } - private static void registerCESplitted() { + private static void registerCESplit() { if (Config.cfgSplitEnergeticClay) { for (int tier = 4; tier <= 12; tier++) { CRecipes.recipeCuttingMachine.addRecipe( diff --git a/src/main/java/com/nao7016/ClayiumAdditions/util/HarvestCoord3x3.java b/src/main/java/com/nao7016/ClayiumAdditions/util/HarvestCoord3x3.java new file mode 100644 index 0000000..711f7a4 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/util/HarvestCoord3x3.java @@ -0,0 +1,47 @@ +package com.nao7016.ClayiumAdditions.util; + +import java.util.ArrayList; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +import mods.clayium.item.IHarvestCoord; + +public class HarvestCoord3x3 implements IHarvestCoord { + + public HarvestCoord3x3() {} + + @Override + public List getHarvestedCoordList(ItemStack itemStack, int x, int y, int z, Vec3 xxVector, Vec3 yyVector, + Vec3 zzVector) { + List result = new ArrayList<>(); + + for (int yy = -1; yy <= 1; ++yy) { + for (int xx = -1; xx <= 1; ++xx) { + for (int zz = 0; zz <= 0; ++zz) { + result.add( + Vec3.createVectorHelper( + (double) x + xxVector.xCoord * (double) xx + + yyVector.xCoord * (double) yy + + zzVector.xCoord * (double) zz, + (double) y + xxVector.yCoord * (double) xx + + yyVector.yCoord * (double) yy + + zzVector.yCoord * (double) zz, + (double) z + xxVector.zCoord * (double) xx + + yyVector.zCoord * (double) yy + + zzVector.zCoord * (double) zz)); + } + } + } + return result; + } + + @Override + public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int i, int i1, int i2, int i3, + float v, float v1, float v2) { + return false; + } +} diff --git a/src/main/resources/assets/clayiumadditions/lang/en_US.lang b/src/main/resources/assets/clayiumadditions/lang/en_US.lang index 1e201a4..0accca1 100644 --- a/src/main/resources/assets/clayiumadditions/lang/en_US.lang +++ b/src/main/resources/assets/clayiumadditions/lang/en_US.lang @@ -28,6 +28,8 @@ item.clay_mining_hammer.tooltip.line1=Can mine Clay Ores as Silk Touch. item.clay_mining_hammer.tooltip.line2=__DETAIL__ item.clay_mining_hammer.tooltip.line3=Apply for:Clay Ore, Dense Clay Ore, Large Dense Clay Ore item.clay_mining_hammer.tooltip.line4=(3 Deepslate Clay Ores) +item.clay_3x3_hammer.name=Clay Range Hammer +item.clay_3x3_hammer.tooltip.line1=Can mine 3x3 area at once. item.storage_box.name=Storage Box item.storage_box.tooltip.line1=The true Storage Box item.clay_storage_box.name=Clay Storage Box diff --git a/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang b/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang index 6d8c5d6..f0904d6 100644 --- a/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang +++ b/src/main/resources/assets/clayiumadditions/lang/ja_JP.lang @@ -28,6 +28,8 @@ item.clay_mining_hammer.tooltip.line1=粘土鉱石類をシルクタッチで回 item.clay_mining_hammer.tooltip.line2=__DETAIL__ item.clay_mining_hammer.tooltip.line3=対象:粘土鉱石、高密度粘土鉱石、高密度粘土鉱石大 item.clay_mining_hammer.tooltip.line4=(深層粘土鉱石 3 種) +item.clay_3x3_hammer.name=粘土範囲ハンマー +item.clay_3x3_hammer.tooltip.line1=3x3 範囲を一度に採掘できる item.storage_box.name=ストレージボックス item.storage_box.tooltip.line1=本物のストレージボックス item.clay_storage_box.name=粘土ストレージボックス @@ -39,6 +41,9 @@ 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=砂, 松明, ネザーラック, ソウルサンド +item.itemGadget.Speed0.name=粘土ガジェット [移動速度 I] +item.itemGadget.Speed1.name=粘土ガジェット [移動速度 II] +item.itemGadget.Speed2.name=粘土ガジェット [移動速度 III] tile.blockAutoSimpleWaterWheel.name=簡易自動粘土水車 tile.blockAutoBasicWaterWheel.name=基本自動粘土水車 @@ -54,9 +59,6 @@ tile.blockDeepslateClayOre.1.name=深層高密度粘土鉱石 tile.blockDeepslateClayOre.2.name=深層高密度粘土鉱石大 tile.blockRawClayOre.1.name=工業用粘土の原石ブロック tile.blockRawClayOre.2.name=発展工業用粘土の原石ブロック -item.itemGadget.Speed0.name=粘土ガジェット [移動速度 I] -item.itemGadget.Speed1.name=粘土ガジェット [移動速度 II] -item.itemGadget.Speed2.name=粘土ガジェット [移動速度 III] tile.blockBasicLimitBuffer.name=制限バッファー tile.blockAdvancedLimitBuffer.name=発展制限バッファー diff --git a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang index 9ecbc75..6b837c5 100644 --- a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang +++ b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang @@ -28,6 +28,8 @@ item.clay_mining_hammer.tooltip.line1=Can mine Clay Ores as Silk Touch. item.clay_mining_hammer.tooltip.line2=__DETAIL__ item.clay_mining_hammer.tooltip.line3=Apply for:Clay Ore, Dense Clay Ore, Large Dense Clay Ore item.clay_mining_hammer.tooltip.line4=(3 Deepslate Clay Ores) +item.clay_3x3_hammer.name=Clay Range Hammer +item.clay_3x3_hammer.tooltip.line1=Can mine 3x3 area at once. item.storage_box.name=Storage Box item.storage_box.tooltip.line1=The true Storage Box item.clay_storage_box.name=Clay Storage Box diff --git a/src/main/resources/assets/clayiumadditions/textures/items/3x3hammer.png b/src/main/resources/assets/clayiumadditions/textures/items/3x3hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b25e920d075ea77188abb74eea6a45dcdb4f23 GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G|^0G|+7b4!=jj#(2XFHOs?ud3|@3diioQ2|nHB|(0{|3QFZ^Zq6Kfg+p* z9+AZi415Pcm~qF%?6*Kc$r9IylHmNblJdl&REB`W%)AmkKi3ciQ$0gHL&Gi(v2#F0 zJ5nP&(>y)37&w3&Rt70XRt82O%L|C5p=^-zH5i$};!HrcAtMumAdrp%;>>myuy_uT z4FWgI7#UsweF>w{ZDn8pN={&BU;(N%Ffuk^TmUf_WGCwah*{HsY!F}qn#=@N8Dwbz zWI=Tq8W@0NBQ@(boPSes1;`BXba4#P2oCLQ|*S&PsBKO*-K4cVhU8uG0k?uT4{5Z^;k6|60G|58L@Y aN5kY_Zec#xDZEM@WS6I_pUXO@geCx1v2@V@ literal 0 HcmV?d00001 From f80fcc62147cd193babee67821f89d6e1f85efca Mon Sep 17 00:00:00 2001 From: nao7016 Date: Tue, 13 Jan 2026 17:21:08 +0900 Subject: [PATCH 3/5] [WIP] Added NightVision Gadget --- .../ClayiumAdditions/common/CAItems.java | 3 ++ .../item/gadget/GadgetNightVision.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetNightVision.java diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index bc12506..df4c2c8 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -6,6 +6,7 @@ import com.nao7016.ClayiumAdditions.item.*; import com.nao7016.ClayiumAdditions.item.ItemClayBowl; +import com.nao7016.ClayiumAdditions.item.gadget.GadgetNightVision; import com.nao7016.ClayiumAdditions.item.gadget.GadgetSpeed; import com.nao7016.ClayiumAdditions.item.storagebox.itemClayStorageBox; import com.nao7016.ClayiumAdditions.item.storagebox.itemMiningStorageBox; @@ -42,8 +43,10 @@ public static void registerItems() { addGadget.addItemList("Speed0", 96, "gadget_speed0", 7); addGadget.addItemList("Speed1", 97, "gadget_speed1", 9); addGadget.addItemList("Speed2", 98, "gadget_speed2", 11); + // addGadget.addItemList("NightVision", 112, "gadget_nightvision", 7); register(addGadget, "itemGadget"); ItemGadgetHolder.addGadget(new GadgetSpeed()); + ItemGadgetHolder.addGadget(new GadgetNightVision()); if (Config.cfgSplitEnergeticClay) { clayEnergy = register(new ItemClayEnergy(), "clay_energy"); } diff --git a/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetNightVision.java b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetNightVision.java new file mode 100644 index 0000000..309cc19 --- /dev/null +++ b/src/main/java/com/nao7016/ClayiumAdditions/item/gadget/GadgetNightVision.java @@ -0,0 +1,29 @@ +package com.nao7016.ClayiumAdditions.item.gadget; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; + +public class GadgetNightVision extends GadgetAddOrdinal { + + private int previousIndex = -1; + + public GadgetNightVision() { + super(new String[] { "NightVision" }); + } + + @Override + public void update(int itemIndex, Entity entity, boolean isRemote) { + if (itemIndex == previousIndex) return; + previousIndex = itemIndex; + + if (itemIndex >= 0 && entity instanceof EntityPlayer && !isRemote) { + EntityPlayer player = (EntityPlayer) entity; + player.addPotionEffect(new PotionEffect(Potion.nightVision.getId(), Integer.MAX_VALUE, 0, false)); + } else if (entity instanceof EntityPlayer && !isRemote) { + EntityPlayer player = (EntityPlayer) entity; + player.removePotionEffect(Potion.nightVision.getId()); + } + } +} From 33128ef72d026bccce17227c26319ab60504f55e Mon Sep 17 00:00:00 2001 From: nao7016 Date: Tue, 13 Jan 2026 17:33:49 +0900 Subject: [PATCH 4/5] version 0.2.1 --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index c659e31..d3b7daf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,4 +9,4 @@ java { targetCompatibility = JavaVersion.VERSION_1_8 } -version = "0.2.0.2" +version = "0.2.1" From f5dc326395fe2bb8aa02a495875b20e94d3127e7 Mon Sep 17 00:00:00 2001 From: nao7016 Date: Tue, 13 Jan 2026 18:06:06 +0900 Subject: [PATCH 5/5] spotless --- .../java/com/nao7016/ClayiumAdditions/common/CAItems.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index df4c2c8..8e9a182 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -4,8 +4,14 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; -import com.nao7016.ClayiumAdditions.item.*; +import com.nao7016.ClayiumAdditions.item.Item3x3Hammer; +import com.nao7016.ClayiumAdditions.item.ItemAddGadget; 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.gadget.GadgetNightVision; import com.nao7016.ClayiumAdditions.item.gadget.GadgetSpeed; import com.nao7016.ClayiumAdditions.item.storagebox.itemClayStorageBox;