如何在合成后将物品退给玩家?
如何制作一个在合成中使用的工具?(例:比如使用铁斧可以和原木合成消耗铁斧耐久(铁斧不消失)然后合成出6个木板)我看魔改能实现但mod不知道要怎么写
上次有dalao说用ItemCraftedEvent事件,但我不是很懂,大概有这么几个点:
一个有多个配方的物品是要用craftMatrix判断是用哪个配方吗?是的话,怎么用呢?
如何把工具合成后留在工作台里(例:原版水桶,格雷扳手)
如何实现在工具耐久比物品少时阻止shift超出数量合成(例:格雷锤子)
如何减少物品耐久
最好是能把上例中的内容用代码实现一下。。。感谢各位大佬,如果嫌金粒不够还可以加。。。
如何制作一个在合成中使用的工具?(例:比如使用铁斧可以和原木合成消耗铁斧耐久(铁斧不消失)然后合成出6个木板)我看魔改能实现但mod不知道要怎么写
上次有dalao说用ItemCraftedEvent事件,但我不是很懂,大概有这么几个点:
一个有多个配方的物品是要用craftMatrix判断是用哪个配方吗?是的话,怎么用呢?
如何把工具合成后留在工作台里(例:原版水桶,格雷扳手)
如何实现在工具耐久比物品少时阻止shift超出数量合成(例:格雷锤子)
如何减少物品耐久
最好是能把上例中的内容用代码实现一下。。。感谢各位大佬,如果嫌金粒不够还可以加。。。
魔改加上这个就可以了[1.7.10][ssp/smp][MineTweaker RecipeMaker——可视化合成表编辑器][完全汉化]
http://www.mcbbs.net/thread-524260-1-1.html
但要i2里电锯的话就需要自己手动写了比如:val chainsaw = <IC2:itemToolChainsaw>.anyDamage();
recipes.addShapeless(<minecraft:planks:4> * 4, [<minecraft:log2>, chainsaw.onlyIC2ChargeAtLeast(100).transformIC2Discharge(100)]);
http://www.mcbbs.net/thread-524260-1-1.html
但要i2里电锯的话就需要自己手动写了比如:val chainsaw = <IC2:itemToolChainsaw>.anyDamage();
recipes.addShapeless(<minecraft:planks:4> * 4, [<minecraft:log2>, chainsaw.onlyIC2ChargeAtLeast(100).transformIC2Discharge(100)]);
aptxliuyipeng 发表于 2016-10-11 19:58
魔改加上这个就可以了[1.7.10][ssp/smp][MineTweaker RecipeMaker——可视化合成表编辑器][完全汉化]
http: ...
不好意思,我是在自己写mod,不是魔改
返还物品可以这么做
Items.apple.setContainerItem(Items.sugar);
这样用苹果合成时就会返回糖
Items.apple.setContainerItem(Items.sugar);
这样用苹果合成时就会返回糖
天蝎_心殇 发表于 2016-10-11 21:17
返还物品可以这么做
Items.apple.setContainerItem(Items.sugar);
这样用苹果合成时就会返回糖 ...
哦。。我试一下
天蝎_心殇 发表于 2016-10-11 21:17
返还物品可以这么做
Items.apple.setContainerItem(Items.sugar);
这样用苹果合成时就会返回糖 ...
那么能不能返回一个对应的工具的-1耐久版本呢?
SHP241 发表于 2016-10-11 22:00
那么能不能返回一个对应的工具的-1耐久版本呢?
试一下这个原理就是复制一份itemStack,然后-1耐久
- public boolean doesContainerItemLeaveCraftingGrid(ItemStack itemStack)
- {
- return false;
- }
- public boolean getShareTag()
- {
- return true;
- }
- public boolean hasContainerItem(ItemStack itemStack)
- {
- return true;
- }
- public ItemStack getContainerItem(ItemStack itemStack)
- {
- ItemStack stack = itemStack.copy();
- stack.setItemDamage(stack.getItemDamage() + 1);
- stack.stackSize = 1;
- return stack;
- }
SHP241 发表于 2016-10-13 10:00
那么应该是最后一个问题?
怎么样设置不同耐久的物品都能参与合成?
这个只要在限定物品的后面限定耐久就好,int最大是32767
给个例子,这样用铁剑和石头合成时,会获得苹果
铁剑就是你的物品,如果你写了上一楼给的代码,那么就会达到你想要的效果
- GameRegistry.addShapelessRecipe(new ItemStack(Items.apple, 1),
- new Object[]{ new ItemStack(Blocks.stone, 1), new ItemStack(Items.iron_sword, 1, 32767), });