From b1f9aa0f8ad940308a5f14ccd33f354c0efedcbe Mon Sep 17 00:00:00 2001 From: Mohammad-Ali Minaie Date: Thu, 9 Mar 2017 22:16:25 -0500 Subject: [PATCH] moving forward with method for creating tool and weapon parts --- 1.11/To-Dos | 36 ++- .../java/nmd/primal/forgecraft/ModInfo.java | 2 +- .../nmd/primal/forgecraft/init/ModItems.java | 5 +- .../nmd/primal/forgecraft/items/ItemTest.java | 28 ++ .../forgecraft/items/toolparts/ToolPart.java | 59 ++++ .../forgecraft/items/tools/CustomTool.java | 30 ++ .../renders/items/ModelPickaxe.java | 48 ++++ .../forgecraft/models/item/ItemTest.json | 10 +- crucible_closedv1.cubik | Bin 2802 -> 0 bytes cruciblev1.cubik | Bin 2705 -> 0 bytes Primal => notes.txt | 0 piston_bellows.cubik | Bin 2926 -> 0 bytes piston_bellows.json | 269 ------------------ raw_crucible.png | Bin 725 -> 0 bytes 14 files changed, 202 insertions(+), 285 deletions(-) create mode 100644 1.11/src/main/java/nmd/primal/forgecraft/items/toolparts/ToolPart.java create mode 100644 1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomTool.java create mode 100644 1.11/src/main/java/nmd/primal/forgecraft/renders/items/ModelPickaxe.java delete mode 100644 crucible_closedv1.cubik delete mode 100644 cruciblev1.cubik rename Primal => notes.txt (100%) delete mode 100644 piston_bellows.cubik delete mode 100644 piston_bellows.json delete mode 100644 raw_crucible.png diff --git a/1.11/To-Dos b/1.11/To-Dos index bc87016e..ea26a0df 100644 --- a/1.11/To-Dos +++ b/1.11/To-Dos @@ -1,24 +1,19 @@ To-Dos *** Priority *** -- [x] Stone Anvil - - [x] Stone Anvil Inventory - - [x] Stone Anvil Tile - - [x] Stone Anvil Crafting - - [x] TESR Inventory Rendering for Anvil - -- [x] Iron Chunk Item Model -- [x] Anvil Item Model - -- [x] StoneTongs Iron Chunks - -- [ ] Hammer Crafting -- [x] Iron Chunking +- [ ] Tool Rendering - [ ] Toolhead Recipes - [ ] WeaponHead recipes - [ ] Add forgehammer to oreDict + +Only modifiable bit is the tool head or weapon blade + +The modifier is a product of the tagCompounds are the material type + +the modifiers are transfered to the crafted item via NBT + *** Backlog *** - [ ] Stone Anvil Bounding Box @@ -34,6 +29,21 @@ To-Dos - [ ] Forge Sound? *** Completed *** + +- [x] Stone Anvil + - [x] Stone Anvil Inventory + - [x] Stone Anvil Tile + - [x] Stone Anvil Crafting + - [x] TESR Inventory Rendering for Anvil + +- [x] Iron Chunk Item Model +- [x] Anvil Item Model + +- [x] StoneTongs Iron Chunks + +- [x] Hammer Crafting +- [x] Iron Chunking + - [x] Forge Recipe Handler - [x] Hot Iron Ingot Recipe diff --git a/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java b/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java index ebbe2c97..8e003718 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/ModInfo.java @@ -28,7 +28,7 @@ public class ModInfo { //public static final String UPDATE_JSON = ""; public enum ForgecraftItems { - TEST("test", "ItemTest"), + TEST("test", "itemtest"), BELLOWSHANDLE("bellowshandle", "bellowshandle"), STONETONGS("stonetongs", "stonetongs"), SOFTCRUCIBLE("softcrucible", "softcrucible"), diff --git a/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java b/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java index f26bd493..babff693 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/init/ModItems.java @@ -30,11 +30,11 @@ import nmd.primal.forgecraft.items.blocks.ItemBlockIngotBall; */ public class ModItems { + public static Item test; public static Item pistonbellows; public static Item forgehammer = new ForgeHammer("forgehammer"); public static Item softcrucible; public static Item stonetongs; - //public static Item ironingotballcool; public static Item ironingotballhot; public static Item ironchunkhot; //public static Item forgingmanual; @@ -45,6 +45,7 @@ public class ModItems { softcrucible = new ItemSoftCrucible(); stonetongs = new ItemStoneTongs("stonetongs"); //ironingotballcool = new BaseMultiItem("ironingotcool") {}; + test = new ItemTest(); ironingotballhot = new BaseMultiItem("ironingothot") { public EnumActionResult onItemUse(EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { if(!world.isRemote) { @@ -87,6 +88,7 @@ public class ModItems { GameRegistry.register(forgehammer); GameRegistry.register(ironingotballhot); GameRegistry.register(ironchunkhot); + GameRegistry.register(test); //GameRegistry.register(forgingmanual); } @@ -97,6 +99,7 @@ public class ModItems { registerRender(forgehammer); registerRender(ironingotballhot); registerRender(ironchunkhot); + registerRender(test); //registerRender(forgingmanual); } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/ItemTest.java b/1.11/src/main/java/nmd/primal/forgecraft/items/ItemTest.java index 5bdfcd78..16d94452 100644 --- a/1.11/src/main/java/nmd/primal/forgecraft/items/ItemTest.java +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/ItemTest.java @@ -1,7 +1,19 @@ package nmd.primal.forgecraft.items; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.IItemPropertyGetter; +import net.minecraft.item.ItemFishingRod; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import nmd.primal.forgecraft.ModInfo; +import javax.annotation.Nullable; + /** * Created by kitsu on 11/26/2016. */ @@ -10,6 +22,22 @@ public class ItemTest extends BaseItem { public ItemTest() { setUnlocalizedName(ModInfo.ForgecraftItems.TEST.getUnlocalizedName()); setRegistryName(ModInfo.ForgecraftItems.TEST.getRegistryName()); + + this.addPropertyOverride(new ResourceLocation("test"), new IItemPropertyGetter() + { + @SideOnly(Side.CLIENT) + public float apply(ItemStack stack, @Nullable World worldIn, @Nullable EntityLivingBase entityIn) + { + if (entityIn == null) + { + return 0.0F; + } + else + { + return 1.0F; + } + } + }); } } diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/toolparts/ToolPart.java b/1.11/src/main/java/nmd/primal/forgecraft/items/toolparts/ToolPart.java new file mode 100644 index 00000000..4daa2ec1 --- /dev/null +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/toolparts/ToolPart.java @@ -0,0 +1,59 @@ +package nmd.primal.forgecraft.items.toolparts; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import nmd.primal.forgecraft.ModInfo; + +/** + * Created by mminaie on 3/9/17. + */ +public abstract class ToolPart extends Item { + + public ToolPart(String name) { + this.setUnlocalizedName(name); + this.setRegistryName(name); + this.setCreativeTab(ModInfo.TAB_FORGECRAFT); + this.setMaxStackSize(1); + } + + public static boolean isHidden() + { + return false; + } + + @Override + public void onCreated(ItemStack item, World worldIn, EntityPlayer playerIn) { + + if (!item.hasTagCompound()) { + item.setTagCompound(new NBTTagCompound()); + //this.setDamage(item, 1000); + + item.getTagCompound().setBoolean("silk_touch", false); + item.getTagCompound().setInteger("durability", 50); + item.getTagCompound().setFloat("speed", 1.0F); + item.getTagCompound().setFloat("fortune", 1.0F); + item.getTagCompound().setInteger("modifiers", 0); + this.setMaxDamage(item.getTagCompound().getInteger("durability")); + } + + } + + @Override + public void onUpdate(ItemStack item, World world, Entity player, int itemSlot, boolean isSelected) { + if (!item.hasTagCompound()) { + item.setTagCompound(new NBTTagCompound()); + item.getTagCompound().setBoolean("silk_touch", false); + item.getTagCompound().setInteger("durability", 50); + item.getTagCompound().setFloat("speed", 1.0F); + item.getTagCompound().setFloat("fortune", 1.0F); + item.getTagCompound().setInteger("modifiers", 0); + this.setMaxDamage(item.getTagCompound().getInteger("durability")); + } + } + + +} diff --git a/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomTool.java b/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomTool.java new file mode 100644 index 00000000..8e286605 --- /dev/null +++ b/1.11/src/main/java/nmd/primal/forgecraft/items/tools/CustomTool.java @@ -0,0 +1,30 @@ +package nmd.primal.forgecraft.items.tools; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import nmd.primal.forgecraft.ModInfo; + +/** + * Created by mminaie on 3/9/17. + */ +public abstract class CustomTool extends Item { + + public CustomTool(String name) { + this.setUnlocalizedName(name); + this.setRegistryName(name); + this.setCreativeTab(ModInfo.TAB_FORGECRAFT); + this.setMaxStackSize(1); + this.setNoRepair(); + } + @Override + public boolean isRepairable() + { + return false; + } + + public int getItemEnchantability(ItemStack stack) + { + return 0; + } + +} diff --git a/1.11/src/main/java/nmd/primal/forgecraft/renders/items/ModelPickaxe.java b/1.11/src/main/java/nmd/primal/forgecraft/renders/items/ModelPickaxe.java new file mode 100644 index 00000000..3ea6d441 --- /dev/null +++ b/1.11/src/main/java/nmd/primal/forgecraft/renders/items/ModelPickaxe.java @@ -0,0 +1,48 @@ +package nmd.primal.forgecraft.renders.items; + +import com.google.common.base.Function; +import com.google.common.collect.ImmutableMap; +import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.client.renderer.vertex.VertexFormat; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.IModelCustomData; +import net.minecraftforge.common.model.IModelState; + +import java.util.Collection; + +/** + * Created by mminaie on 3/8/17. + */ +public class ModelPickaxe implements IModel, IModelCustomData { + + public static final IModel MODEL = new ModelPickaxe(); + //private final ResourceLocation resourceHead; + //private final ResourceLocation resourceHandle; + + @Override + public IModel process(ImmutableMap customData) { + return null; + } + + @Override + public Collection getDependencies() { + return null; + } + + @Override + public Collection getTextures() { + return null; + } + + @Override + public IBakedModel bake(IModelState state, VertexFormat format, Function bakedTextureGetter) { + return null; + } + + @Override + public IModelState getDefaultState() { + return null; + } +} diff --git a/1.11/src/main/resources/assets/forgecraft/models/item/ItemTest.json b/1.11/src/main/resources/assets/forgecraft/models/item/ItemTest.json index c8946c5f..8ab79554 100644 --- a/1.11/src/main/resources/assets/forgecraft/models/item/ItemTest.json +++ b/1.11/src/main/resources/assets/forgecraft/models/item/ItemTest.json @@ -2,5 +2,13 @@ "parent": "item/generated", "textures": { "layer0": "forgecraft:items/test" - } + }, + "overrides": [ + { + "predicate": { + "test": 1 + }, + "model": "forgecraft:item/softcrucible" + } + ] } \ No newline at end of file diff --git a/crucible_closedv1.cubik b/crucible_closedv1.cubik deleted file mode 100644 index d04ae1beb9ece58c85d1627d7b8bbf1d94ed82f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2802 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 WTPsfRzr>XTaQ@Gb@W*TcfPVr|k{$s7 diff --git a/cruciblev1.cubik b/cruciblev1.cubik deleted file mode 100644 index 1514fea95f71505f8db7666e382993fd52e0f2e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2705 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 diff --git a/Primal b/notes.txt similarity index 100% rename from Primal rename to notes.txt diff --git a/piston_bellows.cubik b/piston_bellows.cubik deleted file mode 100644 index 35ecf88153254b8712ac6ef1b9cc988ab73b80da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2926 zcma);c{JPU8pjhM)*y*0QCn(hYYRnFRZF4>VwqNIE5B$5K?!QBS|YZh1hrHb+EO!` zmRdWtG(pi`Tc~Z+R;{ICFx1xK>YY3D-#zF4^SsaZocDa+bDsD6ob$1_hVV*&Kp+7S zvPjX2*o~ZhB?JPEdV)ZFASKY{P)~}V5J=(R0tf^KNr93oY7jYB`oVvnKL6EA_j)sB z2!}c*Usg|bK`}nc3@66+!(*v=tF|#V2u#(M+KgpKBXG^+V#5jtG& z;TXL$xEOp%OZ?|LpTrcVdD>put=q$o0s-UARPP4&=bT^k*7VL?tg7d}8t@$<8Ykn! zINkZXA5O{Ed%l+Nuk(GdtXm<$y*@s=F_gN5TRKt7B~e4FPOMwx-o&e}R#(w;-AV3C z0i1V!O+>5QdB2gU(GB0+Czswyx_8Gk%tl?UDAYPVHo8>k(cN59)fqDxnD1-5p*C8+ zT;EtR8*JL+=T0pk$?#d}E%5$PniJb`d^FT*OrKm^N`f&_zQeVbTnJ;1wc{tYe0N=> z54+q#H^oi9=Tu+$K6R%*lK<_PtFqYfvFl5~U1qsm?^M2eg_YkHvHqS_<%B4+DHVS_ z-zc@{(SQ$@XmyyXDi&UAXxx{ou6|GDU*VYnUt4*i5&ZoDeCP6dhHpPpFI$1^)EKx> zip5`$9?90KJRM~Ag|JU|+Rhk0f2TG*L`v(KX|v+9lT)wPzj)$eX5D7xxL1d@#n^pf zm5{~`sDbpfLVU9g*O*>*Q-$llf$*$${ryW%fUaWO+d(ub7W(u3oO@co9qK1+zM}M(w zui#u(w=lQazTHlloLC)uPL#Cys=@VkV^YOl+ZMeEtRTLY&C_Y3SXF6C-4_J3Ec%%7n+X!K+x`&Yv+D3OiCGnnMJrI%+<`HJ?{=D zUzO1u?{_P+6G;a9 z&79Z;q~e4JK#FuzUB8-XvHc*|ICgbkDL^fC>#grm7l2=bVXP8b&nfUc2$6zM6bZu3 z5#$1a?4e~mI4K^>`TI=^AaF5a<-&9^lAVePYo3Oy!enHoe&?Qe z%epfLvq)2)Z%1|;K)b5!PKpF1Mxz`3Ju}$5E9=JH?5Ss%!-Tf(l^RL16f_$Og*;

F)=$ayu%D1tqy>U(D z2D63`5?lO1Dm(7xOK(x=OezKp*$6V#;ic2`6Ub7QC?_ASJ{F)51wEV%uqt2 z&zTQ}AX6Q_KW7=zZARLYTjP|uHvCX-MkflhwRGmSBp|-sj~#C2d8%M14BtpbP7m39 zpl6v$sl*?o$W*2U16P8j3(%6x&~8@2Vop>Kg_d;)zlb@9iG=Xa%`M1Pb`IVHSQ1j# z#3a$F1>$EL;84*%^QmLfN#HKoMO|$vA6OFk;L9-rx)`ZW8a*`937z)&+}%$$ttkg4 zl*$(+;PPgdJl*+>A=iGB;S@Nf^1&yW8$s_UcoGHA3@m7vRojZlx)rFx9<*e%JYTW8 z;?-yAk|dfj;y-eVAw=JXnv#{iLA|rh6<(M(*PZgWK}Y4-;UM~3#|!m*R%SgagkR8+ zEDtQtTW&qyY=$*G;f_2^hGn5=aLnQ7zWpNb6VM@E!Sr+kz{^tV?zVggn;vwoU|y?I z(L7tx$<0Hig%`P!Rk0{UK!vr&oG+$no9@+B#^}Gr1Mt0`qGWB_Zpife&y-jBIjwvWBc>>&8hAq_`>&{) z(#N%7kPua(ocf@)x>hGBZt{C^E*Ys~` z*`IXbE1Ptbx=4f1#YL9&e@ki7q1(B7-Gg`u5_r{wHChrvs2b{2LhH9_$}@IC20+GWB--xB%d-N)Io0pdu#ZT(FW1~ zDPqX*AnC$I|$?$$>(>~qrXh7fpXXp-at{%mObkA)O7=PkY`f6Mc;tyFuQ%?jEily^#Uh!=1y0r-$21?gel*f+KsYqqQ!QLgW`IjLhIa zgA-q!Z~XE()v+OBFsx#$z%+zNY`e?z(FiK|-Hc_Zhp(W*y&T6M!fvrgLbb)qPdkHf zxE)|(s3YgQZSd9l64l>2l!i6eh9wKyl5*S{YW6=Y*&S!tcS|(i{QR|hS$4mFHM8ia zF>KANT6_m)@VAeAUV2)bP;op_d+#K-b^52i8>5AXo zxDAc6y-oq|X@Fks`Xehft>=U9()?;STJpR@$+?b_BWFU8GbZ8()Nlj2>E@cM*00KElL_t(I%Po^Tmg80o zL@)3@q$pWzwg1b3hH@B3bM!g|wra#HJoipZJBK)rZ^K6DyK}1w0l0%7jz9bac18Ey z7^Bj5m|W>)V7>*qIp5w{yz{h96PVtLOhPrM;(U2WbvVgeH5-b9gs|;~hC|ri2EbK?un6nhI3_11pq%qQIfpy{ zmd1o~Bxg#B7Bwc6EJ_W|IvPDXQ`VExHkyDnsKNR4$nrR&o=~*Bpo_EZXRiHlOyF5M zmSET}Lc}7rRS*|uQ{K_}bu|7g ziBXk!bVoBR(&_5h6T%=^hhCjL2#a*oAYWlyoF5@#Bg6yrmX((o6lel9IaDa4am@j9 z7*)Aiz*k|%AVckrn4n*!6CJk2m~$W@R2+E-IzX;aUk<=92vk_rD68S>=@!0?Xn4E2r2{>)c${-dY;tHNxM*X&rIBXg00000NkvXX Hu0mjfq7yZn