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" diff --git a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java index 894f9d4..8e9a182 100644 --- a/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java +++ b/src/main/java/com/nao7016/ClayiumAdditions/common/CAItems.java @@ -4,12 +4,16 @@ 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.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; import com.nao7016.ClayiumAdditions.item.storagebox.itemMiningStorageBox; import com.nao7016.ClayiumAdditions.item.storagebox.itemStorageBox; @@ -17,6 +21,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 { @@ -26,9 +31,11 @@ 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; + public static ItemAddGadget addGadget; private static Item register(Item item, String name) { GameRegistry.registerItem(item, name); @@ -36,17 +43,27 @@ 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); + // 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"); } 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 +72,8 @@ public static void registerItems() { } } if (Config.cfgMiningHammer) { - clayMiningHammer = register(new itemClayMiningHammer(), "clay_mining_hammer"); + 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/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/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/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/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()); + } + } +} 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..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,8 +152,8 @@ private static void registerHammer() { } } - private static void registerCESplitted() { - if (Config.cfgSplittedEnergeticClay) { + private static void registerCESplit() { + 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/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 378d10e..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 @@ -39,6 +41,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..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=基本自動粘土水車 diff --git a/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang b/src/main/resources/assets/clayiumadditions/lang/zh_CN.lang index 5a8b2ff..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 @@ -39,6 +41,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/3x3hammer.png b/src/main/resources/assets/clayiumadditions/textures/items/3x3hammer.png new file mode 100644 index 0000000..f2b25e9 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/3x3hammer.png differ 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 0000000..d25da81 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_blank.png differ 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 0000000..dcf1e51 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0.png differ 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 0000000..f6ce025 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed0_2.png differ 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 0000000..14c9afb Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1.png differ 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 0000000..47de6bc Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed1_2.png differ 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 0000000..2f53bd2 Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2.png differ 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 0000000..cb05e6a Binary files /dev/null and b/src/main/resources/assets/clayiumadditions/textures/items/gadget_speed2_2.png differ