diff --git a/README.md b/README.md index be501a1..b581dea 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -#ChinaCraft [![Build Status](https://travis-ci.org/UnknownStudio/ChinaCraft.svg?branch=master)](https://travis-ci.org/UnknownStudio/ChinaCraft) +# ChinaCraft [![Build Status](https://travis-ci.org/UnknownStudio/ChinaCraft.svg?branch=master)](https://travis-ci.org/UnknownStudio/ChinaCraft) diff --git a/build.gradle b/build.gradle index ffbf103..4a795fd 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ apply plugin: 'forge' def buildnumber = System.getenv("BUILD_NUMBER") == null ? null : System.getenv("BUILD_NUMBER") -version = minecraft_version + "-" + mod_version + ( buildnumber == null ? "" : "." + buildnumber + "-SanpShot") +version = minecraft_version + "-" + mod_version + ( buildnumber == null ? "" : "." + buildnumber + "-SANPSHOT") group = mod_group // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = mod_id diff --git a/gradle.properties b/gradle.properties index 7c3a33e..3b59893 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,10 @@ # Basic Properties mod_id = ChinaCraft +<<<<<<< HEAD mod_version = 0.3.202 +======= +mod_version = 0.4.206 +>>>>>>> dev mod_group = unstudio.chinacraft # Minecraft & Forge diff --git a/src/main/java/unstudio/chinacraft/api/EntityMethod.java b/src/main/java/unstudio/chinacraft/api/EntityMethod.java index 2dd6d05..8d57439 100644 --- a/src/main/java/unstudio/chinacraft/api/EntityMethod.java +++ b/src/main/java/unstudio/chinacraft/api/EntityMethod.java @@ -43,7 +43,7 @@ public static List findNearbyPlayers(Entity player, double x, double AxisAlignedBB.getBoundingBox(x - d0, y - d1, z - d0, x + d0, y + d1, z + d0)); } - public static List findNear(EntityPlayer player, Class find, double d0, double d1) { + public static List findNear(Entity player, Class find, double d0, double d1) { double x = player.posX; double y = player.posY; double z = player.posZ; diff --git a/src/main/java/unstudio/chinacraft/block/CCBlockWall.java b/src/main/java/unstudio/chinacraft/block/CCBlockWall.java new file mode 100644 index 0000000..9792b3d --- /dev/null +++ b/src/main/java/unstudio/chinacraft/block/CCBlockWall.java @@ -0,0 +1,34 @@ +package unstudio.chinacraft.block; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockWall; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import unstudio.chinacraft.common.ChinaCraft; + +import java.util.List; + +/** + * Created by trychen on 17/5/7. + */ +public class CCBlockWall extends BlockWall{ + public Block block; + + public CCBlockWall(Block b) { + super(b); + this.block = b; + this.setCreativeTab(ChinaCraft.tabCore); + } + + @Override + public IIcon getIcon(int p_149691_1_, int p_149691_2_) { + return block.getIcon(p_149691_1_, p_149691_2_); + } + + @Override + public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { + p_149666_3_.add(new ItemStack(p_149666_1_, 1, 0)); + } +} diff --git a/src/main/java/unstudio/chinacraft/block/CCGrowablePlant.java b/src/main/java/unstudio/chinacraft/block/CCGrowablePlant.java index 4fd6587..086d49e 100644 --- a/src/main/java/unstudio/chinacraft/block/CCGrowablePlant.java +++ b/src/main/java/unstudio/chinacraft/block/CCGrowablePlant.java @@ -80,12 +80,12 @@ protected Item func_149866_i() { @Override protected Item func_149865_P() { - return dropItem; + return baseItem; } @Override public Item getItemDropped(int par1, Random par2Random, int par3) { - return par1 >= 5 ? baseItem : null; + return par1 == 7 ? dropItem : baseItem; } @Override diff --git a/src/main/java/unstudio/chinacraft/block/decoration/BlockWoodenWindow.java b/src/main/java/unstudio/chinacraft/block/decoration/CCWindow.java similarity index 81% rename from src/main/java/unstudio/chinacraft/block/decoration/BlockWoodenWindow.java rename to src/main/java/unstudio/chinacraft/block/decoration/CCWindow.java index 8326c43..de172ba 100644 --- a/src/main/java/unstudio/chinacraft/block/decoration/BlockWoodenWindow.java +++ b/src/main/java/unstudio/chinacraft/block/decoration/CCWindow.java @@ -9,11 +9,11 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockWoodenWindow extends BlockPane { +public class CCWindow extends BlockPane { - public BlockWoodenWindow(String arg1, String arg2) { + public CCWindow(String name, String arg1, String arg2) { super(arg1, arg2, Material.wood, true); - setBlockName(StatCollector.translateToLocal("wooden_window")); + setBlockName(StatCollector.translateToLocal(name)); setHardness(0.3F); setStepSound(soundTypeWood); setCreativeTab(ChinaCraft.tabCore); diff --git a/src/main/java/unstudio/chinacraft/block/especial/BlockBuhrimill.java b/src/main/java/unstudio/chinacraft/block/especial/BlockBuhrimill.java index c9e61b8..fbbc4c5 100644 --- a/src/main/java/unstudio/chinacraft/block/especial/BlockBuhrimill.java +++ b/src/main/java/unstudio/chinacraft/block/especial/BlockBuhrimill.java @@ -158,9 +158,7 @@ public IIcon getIcon(int p_149691_1_, int p_149691_2_) { } @Override - public List addWailaBodyInfo(ItemStack stack, List tipList, IWailaDataAccessor accessor, - IWailaConfigHandler configHandler) { - TileEntity tile = accessor.getTileEntity(); + public List addWailaBodyInfo(ItemStack stack, List tipList, TileEntity tile) { if (tile instanceof TileBuhrimill) { TileBuhrimill tileBuhrimill = (TileBuhrimill) tile; int maxSchedule = tileBuhrimill.getMaxSchedule(); diff --git a/src/main/java/unstudio/chinacraft/block/generation/plant/BlockBambooShoot.java b/src/main/java/unstudio/chinacraft/block/generation/plant/BlockBambooShoot.java index 4e21eef..2d1bf32 100644 --- a/src/main/java/unstudio/chinacraft/block/generation/plant/BlockBambooShoot.java +++ b/src/main/java/unstudio/chinacraft/block/generation/plant/BlockBambooShoot.java @@ -20,7 +20,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class BlockBambooShoot extends BlockBase implements IPlantable, IWorldGenerator { +public class BlockBambooShoot extends BlockBase implements IPlantable{ public BlockBambooShoot() { super(Material.plants); float f = 0.375F; @@ -162,17 +162,4 @@ public Block getPlant(IBlockAccess world, int x, int y, int z) { public int getPlantMetadata(IBlockAccess world, int x, int y, int z) { return world.getBlockMetadata(x, y, z); } - - @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, - IChunkProvider chunkProvider) { - int l6 = chunkX * 16 + random.nextInt(16); - int i11 = random.nextInt(128); - int l14 = chunkZ * 16 + random.nextInt(16); - int id = world.getBiomeGenForCoords(l6, l14).biomeID; - if ((id == 3 || id == 4 || id == 18 || id == 20 || id == 34 || id == 27 || id == 28 || id == 29) - && random.nextInt(16) == 0) { - new WorldGenFlowers(ChinaCraft.blockBambooShoot).generate(world, random, l6, i11, l14); - } - } } diff --git a/src/main/java/unstudio/chinacraft/client/model/armor/ModelCassock.java b/src/main/java/unstudio/chinacraft/client/model/armor/ModelCassock.java new file mode 100644 index 0000000..ca34215 --- /dev/null +++ b/src/main/java/unstudio/chinacraft/client/model/armor/ModelCassock.java @@ -0,0 +1,80 @@ +package unstudio.chinacraft.client.model.armor; + +import net.minecraft.client.model.ModelBiped; +import net.minecraft.client.model.ModelRenderer; + +public class ModelCassock extends ModelBiped { + private final float scale = 1.005f; + + ModelRenderer armorRightLeg; + ModelRenderer armorLeftLeg; + ModelRenderer armorInterBody; + ModelRenderer armorRightArm; +// ModelRenderer armorLeftArm; + ModelRenderer armorOuterBody; + ModelRenderer armorOuterLeftArm; + ModelRenderer armorOuterRightLeg; + ModelRenderer armorOuterLeftLeg; + + public ModelCassock() { + super(0.0f, 0, 256, 128); + textureWidth = 256; + textureHeight = 128; + + armorRightLeg = new ModelRendererScale(this, 0, 16, scale); + armorRightLeg.addBox(-2F, 0F, -2F, 4, 12, 4); + armorRightLeg.setTextureSize(256, 128); + armorRightLeg.mirror = true; + + armorLeftLeg = new ModelRendererScale(this, 0, 16, scale); + armorLeftLeg.addBox(-2F, 0F, -2F, 4, 12, 4); + armorLeftLeg.setTextureSize(256, 128); + armorLeftLeg.mirror = true; + + armorInterBody = new ModelRendererScale(this, 16, 16, 1.009f); + armorInterBody.addBox(-4F, 0F, -2F, 8, 12, 4); + armorInterBody.setTextureSize(256, 128); + armorInterBody.mirror = true; + + armorRightArm = new ModelRendererScale(this, 40, 16, scale); + armorRightArm.addBox(-3F, -2.5F, -2F, 4, 11, 4); + armorRightArm.setTextureSize(256, 128); + armorRightArm.mirror = true; +// +// armorLeftArm = new ModelRenderer(this, 40, 16); +// armorLeftArm.addBox(0F, 0F, -2F, 4, 11, 4); +// armorLeftArm.setTextureSize(256, 128); +// armorLeftArm.mirror = true; + + armorOuterBody = new ModelRendererScale(this, 0, 32, 1.01f); + armorOuterBody.addBox(-4.5F, -0.5F, -2.5F, 9, 14, 5); + armorOuterBody.setTextureSize(256, 128); + armorOuterBody.mirror = true; + + armorOuterLeftArm = new ModelRendererScale(this, 36, 32, 1.08f); + armorOuterLeftArm.addBox(-2.5F, -0.5F, -2.5F, 5, 11, 5); + armorOuterLeftArm.setRotationPoint(0.75F, -1.625F, 0F); + armorOuterLeftArm.setTextureSize(256, 128); + armorOuterLeftArm.mirror = true; + + armorOuterLeftLeg = new ModelRendererScale(this, 6, 45, scale); + armorOuterLeftLeg.addBox(-2.5F, 0F, -2.5F, 5, 10, 5); + armorOuterLeftLeg.setTextureSize(256, 128); + armorOuterLeftLeg.mirror = true; + + armorOuterRightLeg = new ModelRendererScale(this, 0, 45, scale); + armorOuterRightLeg.addBox(-2.5F, 0F, -2.5F, 5, 10, 5); + armorOuterRightLeg.setTextureSize(256, 128); + armorOuterRightLeg.mirror = true; + + //bipedLeftArm.addChild(armorLeftArm); + bipedLeftArm.addChild(armorOuterLeftArm); + bipedBody.addChild(armorInterBody); + bipedBody.addChild(armorOuterBody); + bipedLeftLeg.addChild(armorLeftLeg); + bipedLeftLeg.addChild(armorOuterLeftLeg); + bipedRightLeg.addChild(armorRightLeg); + bipedRightLeg.addChild(armorOuterRightLeg); + bipedRightArm.addChild(armorRightArm); + } +} \ No newline at end of file diff --git a/src/main/java/unstudio/chinacraft/client/model/armor/ModelChinaCrown.java b/src/main/java/unstudio/chinacraft/client/model/armor/ModelChinaCrown.java index 1f0b082..4bcf859 100644 --- a/src/main/java/unstudio/chinacraft/client/model/armor/ModelChinaCrown.java +++ b/src/main/java/unstudio/chinacraft/client/model/armor/ModelChinaCrown.java @@ -1,9 +1,12 @@ package unstudio.chinacraft.client.model.armor; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; +@SideOnly(Side.CLIENT) public class ModelChinaCrown extends ModelBiped { ModelRenderer Shape1; ModelRenderer Shape2; @@ -442,13 +445,13 @@ public ModelChinaCrown(float expand) { public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { super.render(entity, f, f1, f2, f3, f4, f5); setRotationAngles(f, f1, f2, f3, f4, f5, entity); - // Shape1.render(f5); - // Shape2.render(f5); - // Shape3.render(f5); - // Shape4.render(f5); - // Shape5.render(f5); - // Shape6.render(f5); - // Shape7.render(f5); + // armorRightLeg.render(f5); + // armorBody.render(f5); + // armorLeftArm.render(f5); + // armorOuterBody.render(f5); + // armorLeftOuterArm.render(f5); + // armorLeftLeg.render(f5); + // armorRightArm.render(f5); // Shape8.render(f5); // Shape9.render(f5); // Shape10.render(f5); diff --git a/src/main/java/unstudio/chinacraft/client/model/armor/ModelNightClothes.java b/src/main/java/unstudio/chinacraft/client/model/armor/ModelNightClothes.java index 1160398..f8ef326 100644 --- a/src/main/java/unstudio/chinacraft/client/model/armor/ModelNightClothes.java +++ b/src/main/java/unstudio/chinacraft/client/model/armor/ModelNightClothes.java @@ -1,9 +1,12 @@ package unstudio.chinacraft.client.model.armor; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; +@SideOnly(Side.CLIENT) public class ModelNightClothes extends ModelBiped { ModelRenderer Shape1; ModelRenderer Shape2; diff --git a/src/main/java/unstudio/chinacraft/client/model/armor/ModelRendererScale.java b/src/main/java/unstudio/chinacraft/client/model/armor/ModelRendererScale.java new file mode 100644 index 0000000..8878b4e --- /dev/null +++ b/src/main/java/unstudio/chinacraft/client/model/armor/ModelRendererScale.java @@ -0,0 +1,54 @@ +package unstudio.chinacraft.client.model.armor; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import org.lwjgl.opengl.GL11; + +/** + * Created by trychen on 17/4/1. + */ +public class ModelRendererScale extends ModelRenderer { + private float scale; + public ModelRendererScale(ModelBase p_i1172_1_, String p_i1172_2_) { + super(p_i1172_1_, p_i1172_2_); + scale = 1f; + } + public ModelRendererScale(ModelBase p_i1172_1_, String p_i1172_2_, float scale) { + super(p_i1172_1_, p_i1172_2_); + this.scale = scale; + } + + public ModelRendererScale(ModelBase p_i1173_1_) { + super(p_i1173_1_); + this.scale = 1f; + } + + public ModelRendererScale(ModelBase p_i1173_1_, float scale) { + super(p_i1173_1_); + this.scale = scale; + } + + public ModelRendererScale(ModelBase p_i1174_1_, int p_i1174_2_, int p_i1174_3_) { + super(p_i1174_1_, p_i1174_2_, p_i1174_3_); + this.scale = 1f; + } + + public ModelRendererScale(ModelBase p_i1174_1_, int p_i1174_2_, int p_i1174_3_, float scale) { + super(p_i1174_1_, p_i1174_2_, p_i1174_3_); + this.scale = scale; + } + + public void setScale(float scale) { + this.scale = scale; + } + + public float getScale() { + return scale; + } + + @Override + public void render(float p_78785_1_) { + GL11.glScalef(scale, scale, scale); + super.render(p_78785_1_); + } +} diff --git a/src/main/java/unstudio/chinacraft/client/waila/WailaCompatibility.java b/src/main/java/unstudio/chinacraft/client/waila/WailaCompatibility.java index af20382..379d0a9 100644 --- a/src/main/java/unstudio/chinacraft/client/waila/WailaCompatibility.java +++ b/src/main/java/unstudio/chinacraft/client/waila/WailaCompatibility.java @@ -52,7 +52,7 @@ public List getWailaBody(ItemStack stack, List tipList, IWailaDa IWailaConfigHandler configHandler) { Block block = accessor.getBlock(); if (block instanceof CCWailaInfoProvider) { - return ((CCWailaInfoProvider) block).addWailaBodyInfo(stack, tipList, accessor, configHandler); + return ((CCWailaInfoProvider) block).addWailaBodyInfo(stack, tipList, accessor.getTileEntity()); } return tipList; } @@ -68,7 +68,7 @@ public List getWailaTail(ItemStack stack, List tipList, IWailaDa * 凡是需要在Waila窗体中添加信息的方块都需实现此接口 */ public interface CCWailaInfoProvider { - List addWailaBodyInfo(ItemStack stack, List tipList, IWailaDataAccessor accessor, IWailaConfigHandler configHandler); + List addWailaBodyInfo(ItemStack stack, List tipList, TileEntity accessor); } } diff --git a/src/main/java/unstudio/chinacraft/common/ChinaCraft.java b/src/main/java/unstudio/chinacraft/common/ChinaCraft.java index 11cafc5..2ab9ae0 100644 --- a/src/main/java/unstudio/chinacraft/common/ChinaCraft.java +++ b/src/main/java/unstudio/chinacraft/common/ChinaCraft.java @@ -15,13 +15,14 @@ import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.*; -import net.minecraft.util.StatCollector; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.util.EnumHelper; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import unstudio.chinacraft.block.BlockBase; +import unstudio.chinacraft.block.CCBlockWall; import unstudio.chinacraft.block.CCFlower; import unstudio.chinacraft.block.CCGrowablePlant; import unstudio.chinacraft.block.decoration.*; @@ -41,6 +42,7 @@ import unstudio.chinacraft.item.combat.*; import unstudio.chinacraft.item.jade.Jade; import unstudio.chinacraft.item.jade.JadePinkSystem; +import unstudio.chinacraft.util.annotation.register.CorpPlant; import unstudio.chinacraft.util.remote.Network; import unstudio.chinacraft.util.remote.MinecraftModVersionChecker; import unstudio.chinacraft.util.remote.VersionChecker; @@ -57,7 +59,7 @@ public class ChinaCraft implements ICollection { public static final String MODID = "chinacraft"; public static final String NAME = "ChinaCraft"; - public static final String VERSION = "0.3.200"; + public static final String VERSION = "0.4.206"; public static final int PROJECT_ID = 1; public static SimpleNetworkWrapper Network; @@ -71,6 +73,7 @@ public class ChinaCraft implements ICollection { @SidedProxy(clientSide = "unstudio.chinacraft.common.ClientProxy", serverSide = "unstudio.chinacraft.common.CommonProxy") public static CommonProxy proxy; + @Instance("chinacraft") public static ChinaCraft instance; @@ -81,12 +84,14 @@ public class ChinaCraft implements ICollection { public final static Random rand = new Random(); // Material public static final Item.ToolMaterial BRONZE = EnumHelper.addToolMaterial("BRONZE", 2, 200, 5.2F, 1.8F, 14); - public static final Item.ToolMaterial HAMMERSTONE = EnumHelper.addToolMaterial("HAMMERSIONE", 1, 240, 4.0F, 2.0F, 5); // 石锤 - public static final Item.ToolMaterial HAMMERIRON = EnumHelper.addToolMaterial("HAMMERIRON", 2, 475, 6.0F, 3.0F, 14); // 铁锤 - public static final Item.ToolMaterial HAMMERDIANMOND = EnumHelper.addToolMaterial("HAMMERDIAMOND", 3, 2096, 8.0F, 4.0F, + + public static final Item.ToolMaterial HAMMERSTONE = EnumHelper.addToolMaterial("CC_HAMMER_SIONE", 1, 240, 4.0F, 2.0F, 5); // 石锤 + public static final Item.ToolMaterial HAMMERIRON = EnumHelper.addToolMaterial("CC_HAMMER_IRON", 2, 475, 6.0F, 3.0F, 14); // 铁锤 + public static final Item.ToolMaterial HAMMERDIANMOND = EnumHelper.addToolMaterial("CC_HAMMER_DIAMOND", 3, 2096, 8.0F, 4.0F, 10); // 钻石锤 - public static final Item.ToolMaterial YANGLONG = EnumHelper.addToolMaterial("yanlong", 3, 2568, 8.0F, 6.0F, 10); // BLGiantSword - public static final Item.ToolMaterial BROAD_BRONZE = EnumHelper.addToolMaterial("BROAD_BRONZE", 2, 230, 6.0F, 2.5F, 1); + public static final Item.ToolMaterial YANGLONG = EnumHelper.addToolMaterial("CC_YANG_LONG", 3, 2568, 8.0F, 6.0F, 10); // BLGiantSword + public static final Item.ToolMaterial BROAD_BRONZE = EnumHelper.addToolMaterial("CC_BROAD_BRONZE", 2, 230, 6.0F, 2.5F, 1); + public static final Item.ToolMaterial MACE = EnumHelper.addToolMaterial("CC_MACE", 2, 450, 2.0F, 2F, 4); public static final CreativeTabs tabCore = new CreativeTabs("core") { @Override @@ -159,6 +164,8 @@ public Item getTabIconItem() { public static final Block marbleSlab = new BlockCCSlab(false, Material.rock).setHarvestLevelReturnBlock("pickaxe", 1).setCreativeTab(ChinaCraft.tabCore).setHardness(2.0F).setResistance(10.0F).setStepSound(Block.soundTypePiston).setBlockName("marble_slab").setBlockTextureName("chinacraft:smooth_marble"); // 大理石半砖 @SlabRegister(name = "MarbleDoubleSlab", first = "marbleSlab", second = "marbleDoubleSlab") public static final Block marbleDoubleSlab = new BlockCCSlab(true, Material.rock).setBlockSlab(ChinaCraft.marbleSlab).setHarvestLevelReturnBlock("pickaxe", 1).setHardness(2.0F).setResistance(10.0F).setStepSound(Block.soundTypePiston).setBlockName("marble_slab").setBlockTextureName("chinacraft:smooth_marble"); // 大理石半砖 + @Register("MarbleWall") + public static final Block marbleWall = new CCBlockWall(smoothMarble).setBlockName("marble_wall"); // 大理石墙 // @Register("TraditionalPainting") public static final CCItemPainting traditionalPainting = new CCItemPainting("traditional_painting"); @@ -180,38 +187,64 @@ public Item getTabIconItem() { public static final Block bambooFenceGate = new BlockCCFenceGate(bambooPlank).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("bamboo_fence_gate").setCreativeTab(ChinaCraft.tabCore);//竹制栅栏门 @Register("BambooFence") public static final Block bambooFence = new BlockCCFence("chinacraft:bamboo_plank",Material.wood).setGate(bambooFenceGate).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("bamboo_fence").setCreativeTab(ChinaCraft.tabCore);//竹制栅栏 + @Register("PeeledBambooPlank") + public static final Block peeledBambooPlank = new BlockBase(Material.wood).setBlockTextureName("chinacraft:peeled_bamboo_plank").setBlockName("peeled_bamboo_plank") + .setCreativeTab(ChinaCraft.tabCore).setStepSound(Block.soundTypeWood); // 竹板 + @SlabRegister(name = "PeeledBambooSlab",first = "peeledBambooSlab",second = "peeledBambooDoubleSlab") + public static final Block peeledBambooSlab = new BlockCCSlab(false,Material.wood).setHardness(2.0F).setResistance(5.0F).setBlockName("peeled_bamboo_slab").setStepSound(Block.soundTypeWood).setBlockTextureName("chinacraft:peeled_bamboo_plank").setCreativeTab(ChinaCraft.tabCore);//竹制半砖 + @SlabRegister(name = "PeeledBambooDoubleSlab",first = "peeledBambooSlab",second = "peeledBambooDoubleSlab") + public static final Block peeledBambooDoubleSlab = new BlockCCSlab(true,Material.wood).setBlockSlab(ChinaCraft.peeledBambooSlab).setHardness(2.0F).setResistance(5.0F).setBlockName("peeled_bamboo_slab").setStepSound(Block.soundTypeWood).setBlockTextureName("chinacraft:peeled_bamboo_plank");//竹制半砖 + @Register("PeeledBambooStair") + public static final Block peeledBambooStair = new BlockCCStair(ChinaCraft.peeledBambooPlank,0).setHardness(2.0F).setResistance(5.0F).setBlockName("peeled_bamboo_stair").setCreativeTab(ChinaCraft.tabCore);//竹制楼梯 + @Register("PeeledBambooFenceGate") + public static final Block peeledBambooFenceGate = new BlockCCFenceGate(peeledBambooPlank).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("peeled_bamboo_fence_gate").setCreativeTab(ChinaCraft.tabCore);//竹制栅栏门 + @Register("PeeledBambooFence") + public static final Block peeledBambooFence = new BlockCCFence("chinacraft:peeled_bamboo_plank",Material.wood).setGate(peeledBambooFenceGate).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setBlockName("peeled_bamboo_fence").setCreativeTab(ChinaCraft.tabCore);//竹制栅栏 + + @Register("PeedledBambooWindow1") + public static final CCWindow peeledBambooWindow1 = new CCWindow("bamboo_window","chinacraft:peeled_bamboo_window_1", "chinacraft:peeled_bamboo_window_top"); + @Register("PeedledBambooWindow2") + public static final CCWindow peeledBambooWindow2 = new CCWindow("bamboo_window","chinacraft:peeled_bamboo_window_2", "chinacraft:peeled_bamboo_window_top"); + @Register("PeedledBambooWindow3") + public static final CCWindow peeledBambooWindow3 = new CCWindow("bamboo_window", "chinacraft:peeled_bamboo_window_3", "chinacraft:peeled_bamboo_window_top"); @Register("BlackBrickBlock") public static final Block blackbrickBlock = new BlockBase(Material.rock).setHarvestLevelReturnBlock("pickaxe", 0).setHardness(2.0F).setResistance(10.0F).setBlockName("blackbrick_block").setStepSound(Block.soundTypeStone).setBlockTextureName("chinacraft:blackbrick_block").setCreativeTab(ChinaCraft.tabCore);//青砖块 + @Register("BlackBrickMossyBlock") + public static final Block blackbrickMossyBlock = new BlockBase(Material.rock).setHarvestLevelReturnBlock("pickaxe", 0).setHardness(2.0F).setResistance(10.0F).setBlockName("blackbrick_mossy_block").setStepSound(Block.soundTypeStone).setBlockTextureName("chinacraft:blackbrick_block_mossy").setCreativeTab(ChinaCraft.tabCore);//青砖块 + @Register("BlackBrickBlackerBlock") + public static final Block blackbrickBlackerBlock = new BlockBase(Material.rock).setHarvestLevelReturnBlock("pickaxe", 0).setHardness(2.0F).setResistance(12.0F).setBlockName("blackbrick_blacker_block").setStepSound(Block.soundTypeStone).setBlockTextureName("chinacraft:blackbrick_blacker_block").setCreativeTab(ChinaCraft.tabCore);//青砖块 @SlabRegister(name = "BlackBrickSlab",first = "blackbrickSlab",second = "blackbrickDoubleSlab") public static final Block blackbrickSlab = new BlockCCSlab(false,Material.rock).setHarvestLevelReturnBlock("pickaxe", 0).setHardness(2.0F).setResistance(10.0F).setBlockName("blackbrick_slab").setStepSound(Block.soundTypeStone).setBlockTextureName("chinacraft:blackbrick_block").setCreativeTab(ChinaCraft.tabCore);//青砖半砖 @SlabRegister(name = "BlackBrickDoubleSlab",first = "blackbrickSlab",second = "blackbrickDoubleSlab") public static final Block blackbrickDoubleSlab = new BlockCCSlab(true,Material.rock).setHarvestLevelReturnBlock("pickaxe", 0).setBlockSlab(ChinaCraft.blackbrickSlab).setHardness(2.0F).setResistance(10.0F).setBlockName("blackbrick_slab").setStepSound(Block.soundTypeStone).setBlockTextureName("chinacraft:blackbrick_block");//青砖半砖 @Register("BlackBrickStair") public static final Block blackbrickStair = new BlockCCStair(ChinaCraft.blackbrickBlock,0).setHarvestLevelReturnBlock("pickaxe", 0).setHardness(2.0F).setResistance(10.0F).setBlockName("blackbrick_stair").setCreativeTab(ChinaCraft.tabCore); + @Register("BlackBrickWall") + public static final Block blackbrickWall = new CCBlockWall(blackbrickBlock).setBlockName("blackbrick_wall"); - @Register("MulberryLog") + @Register(value = "MulberryLog",ore = "logWood") public static final Block mulberryLog = new BlockCCLog("chinacraft:mulberry_log_top", "chinacraft:mulberry_log").setCreativeTab(ChinaCraft.tabCore).setBlockName("mulberry_log"); // 桑树原木 - @Register("MulberryLeaf") + @Register(value = "MulberryLeaf",ore = "treeLeaves") public static final Block mulberryLeaf = new BlockCCLeaves(ChinaCraft.mulberrySapling).setCreativeTab(ChinaCraft.tabFarming).setBlockName("mulberry_leaf").setBlockTextureName("chinacraft:mulberry_leaf"); // 桑树树叶 - @Register("MulberrySapling") + @Register(value = "MulberrySapling",ore = "treeSapling") public static final Block mulberrySapling = new BlockCCSapling(WorldGenMulberryTree.class).setBlockTextureName("chinacraft:mulberry_sapling").setBlockName("mulberry_sapling").setCreativeTab(ChinaCraft.tabFarming);//桑树树苗 - @Register("MulberryWood") + @Register(value = "MulberryWood",ore = "plankWood") public static final Block mulberryWood = new BlockBase(Material.wood).setBlockName("mulberry_wood").setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood).setCreativeTab(ChinaCraft.tabCore).setBlockTextureName("chinacraft:mulberry_wood"); // 桑树木板 @Register("WoodenWindow1") - public static final BlockWoodenWindow woodenWindow1 = new BlockWoodenWindow("chinacraft:wooden_window_1", "chinacraft:wooden_window_top"); // 木窗框1 + public static final CCWindow woodenWindow1 = new CCWindow("wooden_window", "chinacraft:wooden_window_1", "chinacraft:wooden_window_top"); // 木窗框1 @Register("WoodenWindow2") - public static final BlockWoodenWindow woodenWindow2 = new BlockWoodenWindow("chinacraft:wooden_window_2", "chinacraft:wooden_window_top"); // 木窗框2 + public static final CCWindow woodenWindow2 = new CCWindow("wooden_window", "chinacraft:wooden_window_2", "chinacraft:wooden_window_top"); // 木窗框2 @Register("WoodenWindow3") - public static final BlockWoodenWindow woodenWindow3 = new BlockWoodenWindow("chinacraft:wooden_window_3", "chinacraft:wooden_window_top"); // 木窗框3 + public static final CCWindow woodenWindow3 = new CCWindow("wooden_window", "chinacraft:wooden_window_3", "chinacraft:wooden_window_top"); // 木窗框3 @Register("WoodenWindow4") - public static final BlockWoodenWindow woodenWindow4 = new BlockWoodenWindow("chinacraft:wooden_window_4", "chinacraft:wooden_window_top"); // 木窗框3 + public static final CCWindow woodenWindow4 = new CCWindow("wooden_window", "chinacraft:wooden_window_4", "chinacraft:wooden_window_top"); // 木窗框3 @Register("WoodenWindowDragon") - public static final BlockWoodenWindow woodenWindowdragon = new BlockWoodenWindow("chinacraft:wooden_window_dragon", "chinacraft:wooden_window_top"); // 木窗框Logo + public static final CCWindow woodenWindowdragon = new CCWindow("wooden_window", "chinacraft:wooden_window_dragon", "chinacraft:wooden_window_top"); // 木窗框Logo @Register("WoodenWindowFu") - public static final BlockWoodenWindow woodenWindowfu = new BlockWoodenWindow("chinacraft:wooden_window_fu", "chinacraft:wooden_window_top"); // 木窗框:福 + public static final CCWindow woodenWindowfu = new CCWindow("wooden_window", "chinacraft:wooden_window_fu", "chinacraft:wooden_window_top"); // 木窗框:福 @Register("Azalea") public static final CCFlower azalea = new CCFlower("azalea"); @@ -255,26 +288,29 @@ public Item getTabIconItem() { @Register("SericultureFrame") public static final BlockSericultureFrame sericultureFrame = new BlockSericultureFrame(); // 养蚕架 - - @Register("RiceGrow") - public static final CCGrowablePlant riceGrow = new CCGrowablePlant("rice", 5, ChinaCraft.rices, ChinaCraft.lcker); // 水稻作物 @Register("Rices") - public static final CCCropPlantItem rices = (CCCropPlantItem) new CCCropPlantItem(ChinaCraft.riceGrow) - .setUnlocalizedName("rices"); // 米 + @CorpPlant("riceGrow") + public static final CCCropPlantItem rices = (CCCropPlantItem) new CCCropPlantItem().setUnlocalizedName("rices"); // 米 @Register("Lckers") public static final Item lcker = new Item().setUnlocalizedName("lcker").setCreativeTab(ChinaCraft.tabFarming); // 米穗 + @Register("RiceGrow") + public static final CCGrowablePlant riceGrow = new CCGrowablePlant("rice", 5, ChinaCraft.rices, ChinaCraft.lcker); // 水稻作物 @Register("SoyPod") public static final Item soyPod = new Item().setUnlocalizedName("soy_pod").setCreativeTab(ChinaCraft.tabFarming); // 大豆荚 @Register("SoyGrow") public static final CCGrowablePlant soyGrow = new CCGrowablePlant("soy", 5, ChinaCraft.soyPod, ChinaCraft.soyPod); // 大豆作物 @Register("Soy") - public static final CCCropPlantItem soy = (CCCropPlantItem) new CCCropPlantItem(ChinaCraft.soyGrow).setUnlocalizedName("soy"); // 大豆 + @CorpPlant("soyGrow") + public static final CCCropPlantItem soy = (CCCropPlantItem) new CCCropPlantItem().setUnlocalizedName("soy"); // 大豆 + @Register("GlutinousRice") + @CorpPlant("blockGlutinousRice") + public static final CCCropPlantItem glutinousRice = (CCCropPlantItem) new CCCropPlantItem().setUnlocalizedName("glutinous_rice"); // 糯米 @Register("BlockGlutinousRice") public static final CCGrowablePlant blockGlutinousRice = new CCGrowablePlant("glutinous_rice", 7, ChinaCraft.glutinousRice, ChinaCraft.glutinousRice);// 糯米作物 - @Register("GlutinousRice") - public static final CCCropPlantItem glutinousRice = (CCCropPlantItem) new CCCropPlantItem(ChinaCraft.blockGlutinousRice).setUnlocalizedName("glutinous_rice"); // 糯米 @Register("ItemBamboo") public static final Item itemBamboo = new ItemBase().setTextureName("chinacraft:bamboo").setCreativeTab(ChinaCraft.tabFarming).setUnlocalizedName("bamboo"); // 竹子 + @Register("PeeledBamboo") + public static final Item peeledBamboo = new ItemBase().setTextureName("chinacraft:peeled_bamboo").setCreativeTab(ChinaCraft.tabFarming).setUnlocalizedName("peeled_bamboo"); // 竹子 @Register("ItemMulberryLeaf") public static final Item itemMulberryLeaf = new Item().setUnlocalizedName("mulberry_leaf").setCreativeTab(ChinaCraft.tabFarming); // 桑叶 @Register("BlackDogBlood") @@ -313,9 +349,15 @@ public Item getTabIconItem() { @Register("YanLungGiantknife") public static final BLGiantSword blGiantSword = new BLGiantSword(ChinaCraft.YANGLONG); // 炎龙巨刀 @Register("JiuQuTang") - public static final JiuQu_tang jiuqu_tang = new JiuQu_tang();// 九曲镋 + public static final CCItemJiuQuTang jiuquTang = new CCItemJiuQuTang();// 九曲镋 @Register("Mace") - public static final Mace mace = new Mace(); + public static final CCItemMace mace = new CCItemMace(); + @Register("BuddhistMonksKnife") + public static final CCBuddhistMonksKnife buddhistMonksKnife = new CCBuddhistMonksKnife(Item.ToolMaterial.WOOD); + @Register("CrashBuddhistMonksKnife") + public static final CCBuddhistMonksKnife crashBuddhistMonksKnife = (CCBuddhistMonksKnife) new CCBuddhistMonksKnife(Item.ToolMaterial.IRON).setUnlocalizedName("crash_buddhist_monks_knife").setMaxDamage(450); + @Register("JointStaff") + public static final CCJointStaff jointStaff = new CCJointStaff(); // @Register("SuperBow") public static final ItemSuperBow superBow = new ItemSuperBow(); @Register("StoneHammer") @@ -335,6 +377,9 @@ public Item getTabIconItem() { new ModelArmor(ItemArmor.ArmorMaterial.CLOTH, "night_clothes_body", "nightclothes", 1, 1, 1), new ModelArmor(ItemArmor.ArmorMaterial.CLOTH, "night_clothes_leg", "nightclothes", 1, 2, 1), new ModelArmor(ItemArmor.ArmorMaterial.CLOTH, "night_clothes_shoe", "nightclothes", 1, 3, 1)}; + @Register("Cassock") + public static final ModelArmorCassock cassock = new ModelArmorCassock(); + @Register("BronzeHelmet") public static ItemArmor bronzeHelmet;// 青铜头盔 @Register("BronzeChestplate") @@ -379,7 +424,7 @@ public Item getTabIconItem() { @Register("JadeGreen") public static final Jade jadeGreenItem = new Jade("jade_green"); @Register("JadeGreen2") - public static final Item jadeGreen2Item = new Jade("jade_green2").setMaxDamage(8); + public static final Item jadeGreen2Item = new Jade("jade_green2").setMaxDamage(56); @Register("JadePink") public static final Jade jadePinkItem = new Jade("jade_pink"); @Register("JadePurple") @@ -465,6 +510,13 @@ public Item getTabIconItem() { @Register("Debug") public static final ItemDebug debug = new ItemDebug(); // 调试物品 + static { + HAMMERSTONE.setRepairItem(new ItemStack(Blocks.stone)); + HAMMERIRON.setRepairItem(new ItemStack(Items.iron_ingot)); + HAMMERDIANMOND.setRepairItem(new ItemStack(Items.diamond)); + BRONZE.setRepairItem(new ItemStack(ChinaCraft.bronzeIngot)); + } + public static Configuration getMainConfig() { return ConfigLoader.getMainConfig(); } diff --git a/src/main/java/unstudio/chinacraft/common/ClientProxy.java b/src/main/java/unstudio/chinacraft/common/ClientProxy.java index edb31f7..415abeb 100644 --- a/src/main/java/unstudio/chinacraft/common/ClientProxy.java +++ b/src/main/java/unstudio/chinacraft/common/ClientProxy.java @@ -60,8 +60,11 @@ public void init(FMLInitializationEvent event) { ChinaCraft.bronzeBroadSwordPink.setTextureName("chinacraft:bronze_bigsword_pink"); ChinaCraft.bronzeBroadSwordPurple.setTextureName("chinacraft:bronze_bigsword_purple"); ChinaCraft.blGiantSword.setTextureName("chinacraft:blgiantsword"); - ChinaCraft.jiuqu_tang.setTextureName("chinacraft:jiuqu_tang"); + ChinaCraft.jiuquTang.setTextureName("chinacraft:jiuqu_tang"); ChinaCraft.mace.setTextureName("chinacraft:mace"); + ChinaCraft.buddhistMonksKnife.setTextureName("chinacraft:buddhist_monks_knife"); + ChinaCraft.crashBuddhistMonksKnife.setTextureName("chinacraft:crash_buddhist_monks_knife"); + ChinaCraft.jointStaff.setTextureName("chinacraft:joint_staff"); ChinaCraft.tinIngot.setTextureName("chinacraft:tin_ingot"); ChinaCraft.silverIngot.setTextureName("chinacraft:silver_ingot"); ChinaCraft.rices.setTextureName("chinacraft:barley_rice"); diff --git a/src/main/java/unstudio/chinacraft/common/CommonProxy.java b/src/main/java/unstudio/chinacraft/common/CommonProxy.java index dc2b4a3..bfac45b 100644 --- a/src/main/java/unstudio/chinacraft/common/CommonProxy.java +++ b/src/main/java/unstudio/chinacraft/common/CommonProxy.java @@ -1,9 +1,11 @@ package unstudio.chinacraft.common; +import cpw.mods.fml.common.IFuelHandler; import net.minecraft.block.BlockDispenser; import net.minecraft.dispenser.BehaviorProjectileDispense; import net.minecraft.dispenser.IPosition; import net.minecraft.entity.IProjectile; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -72,14 +74,8 @@ public void init(FMLInitializationEvent event) { ListenerRegister.init(); //注册生成器 -// GameRegistry.registerWorldGenerator(ChinaCraft.copperOre, 3); -// GameRegistry.registerWorldGenerator(ChinaCraft.tinOre, 3); -// GameRegistry.registerWorldGenerator(ChinaCraft.jadeOre, 3); new WorldGenListener(); - GameRegistry.registerWorldGenerator(ChinaCraft.blockMarble, 127); - GameRegistry.registerWorldGenerator(new WorldGenCCFlower(), 1); GameRegistry.registerWorldGenerator(new WorldGenMulberryTree(true), 1); - GameRegistry.registerWorldGenerator(ChinaCraft.blockBambooShoot, 1); //注册TileEntity GameRegistry.registerTileEntity(TileJadeBench.class, "tileEntityCCJadeWorkingTable"); // 玉石工作台TileEntity @@ -134,9 +130,26 @@ protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_ } catch (InstantiationException e) { e.printStackTrace(); } + + initBlockFlammbility(); } public void postInit(FMLPostInitializationEvent event) { } + + private void initBlockFlammbility(){ + Blocks.fire.setFireInfo(ChinaCraft.bambooPlank,5,20); + Blocks.fire.setFireInfo(ChinaCraft.bambooSlab,5,20); + Blocks.fire.setFireInfo(ChinaCraft.bambooDoubleSlab,5,20); + Blocks.fire.setFireInfo(ChinaCraft.bambooStair,5,20); + Blocks.fire.setFireInfo(ChinaCraft.bamboo,5,5); + Blocks.fire.setFireInfo(ChinaCraft.blockBambooShoot,5,10); + Blocks.fire.setFireInfo(ChinaCraft.bambooFence,5,20); + Blocks.fire.setFireInfo(ChinaCraft.bambooFenceGate,5,20); + Blocks.fire.setFireInfo(ChinaCraft.mulberryLog,5,5); + Blocks.fire.setFireInfo(ChinaCraft.mulberryWood,5,20); + Blocks.fire.setFireInfo(ChinaCraft.mulberryLeaf,30,60); + Blocks.fire.setFireInfo(ChinaCraft.mulberrySapling,10,30); + } } diff --git a/src/main/java/unstudio/chinacraft/common/Recipes.java b/src/main/java/unstudio/chinacraft/common/Recipes.java index 78d073f..2c51db3 100644 --- a/src/main/java/unstudio/chinacraft/common/Recipes.java +++ b/src/main/java/unstudio/chinacraft/common/Recipes.java @@ -1,13 +1,14 @@ package unstudio.chinacraft.common; +import net.minecraft.block.BlockColored; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; -import unstudio.chinacraft.recipes.CCShapedIgnoreDamageRecipe; import unstudio.chinacraft.recipes.JadeBenchRecipes; import unstudio.chinacraft.recipes.BuhrimillRecipe; @@ -46,13 +47,34 @@ public static void init() { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ChinaCraft.bomb), Items.gunpowder, Items.iron_ingot)); // 夜行衣 GameRegistry.addRecipe(new ItemStack(ChinaCraft.nightClothes[0]), - new Object[]{"AAA", "ABA", " ", 'A', Items.leather, 'B', Items.dye}); + "AAA", + "A A", + " ", + 'A', new ItemStack(ChinaCraft.itemSilk, 1, 15)); GameRegistry.addRecipe(new ItemStack(ChinaCraft.nightClothes[1]), - new Object[]{"ABA", "AAA", "AAA", 'A', Items.leather, 'B', Items.dye}); + "A A", + "AAA", + "AAA", + 'A', new ItemStack(ChinaCraft.itemSilk, 1, 15)); GameRegistry.addRecipe(new ItemStack(ChinaCraft.nightClothes[2]), - new Object[]{"AAA", "ABA", "A A", 'A', Items.leather, 'B', Items.dye}); + "AAA", + "A A", + "A A", + 'A', new ItemStack(ChinaCraft.itemSilk, 1, 15)); GameRegistry.addRecipe(new ItemStack(ChinaCraft.nightClothes[3]), - new Object[]{" ", "ABA", "A A", 'A', Items.leather, 'B', Items.dye}); + " ", + "A A", + "A A", + 'A', new ItemStack(ChinaCraft.itemSilk, 1, 15)); + + // 袈裟 + GameRegistry.addRecipe(new ItemStack(ChinaCraft.cassock), + "Y Y", + "YGR", + "YRR", + 'Y', new ItemStack(ChinaCraft.itemSilk, 1, 4), + 'G', Items.golden_apple, + 'R', new ItemStack(ChinaCraft.itemSilk, 1, 14)); // Copper GameRegistry.addSmelting(ChinaCraft.copperOre, new ItemStack(ChinaCraft.copperIngot, 1), 1.2f); @@ -77,10 +99,13 @@ public static void init() { new Object[]{"## ", "## ", " ", '#', ChinaCraft.blockMarble}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.marbleSlab, 6), new Object[]{" ", " ", "###", '#', ChinaCraft.blockMarble}); - GameRegistry.addRecipe(new ItemStack(ChinaCraft.marbleStair, 4), - new Object[]{"# ", "## ", "###", '#', ChinaCraft.blockMarble}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.marbleStair, 4), new Object[]{" #", " ##", "###", '#', ChinaCraft.blockMarble}); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.marbleWall), + "###", + "###", + '#', ChinaCraft.smoothMarble + ); //青砖 for (int i = 1; i <= 8; i++) { @@ -93,38 +118,78 @@ public static void init() { new Object[]{"## ", "## ", " ", '#', ChinaCraft.blackbrick}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.blackbrickSlab, 6), new Object[]{" ", " ", "###", '#', ChinaCraft.blackbrick}); - GameRegistry.addRecipe(new ItemStack(ChinaCraft.blackbrickStair, 4), - new Object[]{"# ", "## ", "###", '#', ChinaCraft.blackbrick}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.blackbrickStair, 4), new Object[]{" #", " ##", "###", '#', ChinaCraft.blackbrick}); + GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.blackbrickMossyBlock), ChinaCraft.blackbrickBlock, Item.getItemFromBlock(Blocks.mossy_cobblestone)); + GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.blackbrickBlackerBlock), ChinaCraft.blackbrickBlock, Items.clay_ball); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.blackbrickWall), + "###", + "###", + '#', ChinaCraft.blackbrickBlock + ); // 木窗格 - GameRegistry.addRecipe(CCShapedIgnoreDamageRecipe.createRecipe(new ItemStack(ChinaCraft.woodenWindowdragon, 1), - new Object[]{"HHH", "B#A", "HHH", 'H', Item.getItemFromBlock(Blocks.log), '#', ChinaCraft.artKnife, - 'A', ChinaCraft.woodenWindow4, 'B', ChinaCraft.woodenWindow2})); - GameRegistry.addRecipe(CCShapedIgnoreDamageRecipe.createRecipe(new ItemStack(ChinaCraft.woodenWindow4, 4), - new Object[]{" # ", "#A#", " # ", 'A', ChinaCraft.artKnife, '#', Items.stick})); - GameRegistry.addRecipe(CCShapedIgnoreDamageRecipe.createRecipe(new ItemStack(ChinaCraft.woodenWindow3, 4), new Object[]{"B#B", "#A#", "B#B", 'A', - ChinaCraft.artKnife, '#', Items.stick, 'B', Item.getItemFromBlock(Blocks.log)})); - GameRegistry.addRecipe(CCShapedIgnoreDamageRecipe.createRecipe(new ItemStack(ChinaCraft.woodenWindow2, 4), - new Object[]{"###", "#A#", "###", 'A', ChinaCraft.artKnife, '#', Items.stick})); - GameRegistry.addRecipe(CCShapedIgnoreDamageRecipe.createRecipe(new ItemStack(ChinaCraft.woodenWindow1, 4), new Object[]{" A ", "A#A", " A ", 'A', - Item.getItemFromBlock(Blocks.planks), '#', ChinaCraft.artKnife})); - - GameRegistry.addRecipe(new ItemStack(ChinaCraft.lanternScaldfish,1,2), "WYW", "WTW", "WYW", 'W', new ItemStack(Blocks.wool, 1, 14), 'Y', new ItemStack(Blocks.wool, 1, 4), 'T', Blocks.torch); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindowdragon, 1), + "HHH", "B#A", "HHH", 'H', Item.getItemFromBlock(Blocks.log), '#', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE), + 'A', ChinaCraft.woodenWindow4, 'B', ChinaCraft.woodenWindow2); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindowfu, 1), + "HHH", "B#B", "HHH", 'H', Item.getItemFromBlock(Blocks.log), '#',new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE), 'B', ChinaCraft.woodenWindow2); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindow4, 4), + " # ", "#A#", " # ", 'A', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE), '#', Items.stick); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindow3, 4), "B#B", "#A#", "B#B", 'A', + new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE), '#', Items.stick, 'B', Item.getItemFromBlock(Blocks.log)); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindow2, 4), + new Object[]{"###", "#A#", "###", 'A', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE), '#', Items.stick}); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.woodenWindow1, 4), " A ", "A#A", " A ", 'A', + Item.getItemFromBlock(Blocks.planks), '#', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE)); + + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooWindow1, 1), + "HHH", + " # ", + "HHH", + 'H', ChinaCraft.peeledBamboo, + '#', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE)); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooWindow2, 1), + "HHH", + "H#H", + "HHH", + 'H', ChinaCraft.peeledBamboo, + '#', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE)); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooWindow3, 1), + " H ", + "H#H", + " H ", + 'H', ChinaCraft.peeledBamboo, + '#', new ItemStack(ChinaCraft.artKnife,1, OreDictionary.WILDCARD_VALUE)); + + GameRegistry.addRecipe(new ItemStack(ChinaCraft.lanternScaldfish, 1, 2), "WYW", "WTW", "WYW", 'W', new ItemStack(Blocks.wool, 1, 14), 'Y', new ItemStack(Blocks.wool, 1, 4), 'T', Blocks.torch); GameRegistry.addRecipe(new ItemStack(ChinaCraft.itemDing), " J ", "MOM", "MCM", 'C', Blocks.coal_block, 'J', ChinaCraft.jadeKnife, 'O', Blocks.obsidian, 'M', Blocks.mossy_cobblestone); // 竹子 - GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.bambooPlank), ChinaCraft.itemBamboo, ChinaCraft.itemBamboo, ChinaCraft.itemBamboo, ChinaCraft.itemBamboo); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooPlank, 1), + "##", + "##", + '#', ChinaCraft.itemBamboo); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooSlab, 6), " ", " ", "###", '#', ChinaCraft.bambooPlank); - GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooStair, 4), - new Object[]{"# ", "## ", "###", '#', ChinaCraft.bambooPlank}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooStair, 4), new Object[]{" #", " ##", "###", '#', ChinaCraft.bambooPlank}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooFence, 2), new Object[]{"###", "###", " ", '#', ChinaCraft.itemBamboo}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bambooFenceGate, 1), - new Object[]{"#$#", "#$#", " ", '#', ChinaCraft.itemBamboo,'$',ChinaCraft.bambooPlank}); + new Object[]{"#$#", "#$#", " ", '#', ChinaCraft.itemBamboo, '$', ChinaCraft.bambooPlank}); + + GameRegistry.addSmelting(ChinaCraft.itemBamboo,new ItemStack(ChinaCraft.peeledBamboo),0f); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooPlank, 1), + "##", + "##", + '#', ChinaCraft.peeledBamboo); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooSlab, 6), " ", " ", "###", '#', ChinaCraft.peeledBambooPlank); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooStair, 4), + new Object[]{" #", " ##", "###", '#', ChinaCraft.peeledBambooPlank}); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooFence, 2), + new Object[]{"###", "###", " ", '#', ChinaCraft.peeledBamboo}); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.peeledBambooFenceGate, 1), + new Object[]{"#$#", "#$#", " ", '#', ChinaCraft.peeledBamboo, '$', ChinaCraft.peeledBambooPlank}); // mulberry GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.mulberryWood, 4), @@ -138,8 +203,10 @@ public static void init() { GameRegistry.addRecipe(new ItemStack(ChinaCraft.sericultureFrame, 1), new Object[]{"@#@", "@#@", "@#@", '#', Item.getItemFromBlock(Blocks.wooden_slab), '@', Items.stick}); GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.silkYarn, 4), ChinaCraft.silkwormChrysalis); - GameRegistry.addRecipe(new ItemStack(ChinaCraft.itemSilk, 1, 15), + GameRegistry.addRecipe(new ItemStack(ChinaCraft.itemSilk, 1, 0), new Object[]{"@@ ", "@@ ", " ", '@', ChinaCraft.silkYarn}); + for (int i = 0; i < 16; ++i) + GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.itemSilk, 1, BlockColored.func_150031_c(i)), new Object[]{new ItemStack(Items.dye, 1, i), new ItemStack(ChinaCraft.itemSilk, 1, 0)}); // CookingBench GameRegistry.addRecipe(new ItemStack(ChinaCraft.cooking_bench_off, 1), @@ -169,7 +236,7 @@ public static void init() { // Item.getItemFromBlock(Blocks.stone)}); // 九曲镋刀 - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.jiuqu_tang, 1), new Object[]{"#T#", "###", + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.jiuquTang, 1), new Object[]{"#T#", "###", " X ", '#', ChinaCraft.bronzeIngot, 'X', Items.stick, 'T', ChinaCraft.tinIngot})); // 青铜 @@ -180,16 +247,19 @@ public static void init() { ChinaCraft.bronzeBlock); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bronzeSword, 1), new Object[]{" # ", " # ", " X ", '#', ChinaCraft.bronzeIngot, 'X', Items.stick}); - GameRegistry.addRecipe(new ItemStack(ChinaCraft.mace, 1), new Object[]{" #O", " X#", "X ", '#', Items.iron_ingot, - 'X', Items.stick, 'O', Item.getItemFromBlock(Blocks.obsidian)}); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.mace, 1), + " DO", + "XBD", + "XX ", + 'D', Items.diamond, + 'X', Items.stick, + 'O', Item.getItemFromBlock(Blocks.obsidian), + 'B', ChinaCraft.bronzeIngot); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.bronzeBroadSword, 1), new Object[]{" ##", " X#", "X ", '#', ChinaCraft.bronzeIngot, 'X', Items.stick})); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.bronzeBroadSword, 1), new Object[]{" ##", " X#", "X ", '#', ChinaCraft.bronzeIngot, 'X', Items.stick})); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.blGiantSword, 1), - new Object[]{"#B#", "EDE", "CAC", '#', Item.getItemFromBlock(Blocks.obsidian), 'A', Items.stick, 'B', - Items.lava_bucket.setContainerItem(Items.bucket), 'C', Items.iron_ingot, 'D', - Item.getItemFromBlock(Blocks.soul_sand), 'E', ChinaCraft.bronzeBlock})); + GameRegistry.addRecipe(new ItemStack(ChinaCraft.bronzePickaxe, 1), new Object[]{"###", " X ", " X ", '#', ChinaCraft.bronzeIngot, 'X', Items.stick}); GameRegistry.addRecipe(new ItemStack(ChinaCraft.bronzeAxe, 1), @@ -214,13 +284,14 @@ public static void init() { new Object[]{"###", "#X#", " X ", '#', Item.getItemFromBlock(Blocks.cobblestone), 'X', Items.stick})); // 冕冠 - GameRegistry - .addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.chinaCrown, 1), - new Object[]{"TET", "#X#", "S#S", '#', Item.getItemFromBlock(Blocks.log), 'X', - Items.nether_star.setContainerItem(Items.nether_star), - 'T', ChinaCraft.tinIngot, 'E', Item.getItemFromBlock(Blocks.dragon_egg) - .setContainerItem(Item.getItemFromBlock(Blocks.dragon_egg)), - 'S', Items.stick})); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.chinaCrown, 1), + "T#T", + "#X#", + "S#S", + '#', Items.gold_ingot, + 'X', Items.nether_star, + 'T', new ItemStack(ChinaCraft.itemSilk, 1, 12), + 'S', new ItemStack(ChinaCraft.itemSilk, 1, 14))); // TinOre GameRegistry.addSmelting(ChinaCraft.tinOre, new ItemStack(ChinaCraft.tinIngot), 0.8f); @@ -273,13 +344,39 @@ public static void init() { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.jadeKnife, 1), new Object[]{" X ", "X#X", '#', Items.stick, 'X', Items.iron_ingot})); - //飞刀 + // 飞刀 GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.flyingCutter, 2), new Object[]{" I", "S ", "F ", 'S', Items.stick, 'I', Items.iron_ingot, 'F', Items.feather})); - //蝉杖 + // 蝉杖 GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.buddhistCane, 1), "IAI", "BSB", " S ", 'I', Items.gold_ingot, 'B', ChinaCraft.tinIngot, 'A', Items.ghast_tear, 'S', Items.stick)); + // 戒刀 + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.buddhistMonksKnife), + " P ", + "PDP", + " A ", + 'P', ChinaCraft.peeledBambooPlank, + 'A', ChinaCraft.artKnife, + 'D', Items.diamond + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.crashBuddhistMonksKnife), + " P ", + "TDT", + " A ", + 'P', ChinaCraft.peeledBambooPlank, + 'A', ChinaCraft.artKnife, + 'D', Items.diamond, + 'T', ChinaCraft.silverIngot + )); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ChinaCraft.jointStaff), + " II", + "ISI", + "II ", + 'S', Items.stick, + 'I', Items.iron_ingot + )); + // 大麦 GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.barleyRice), new ItemStack(Items.wheat)); @@ -340,6 +437,5 @@ public static void init() { ChinaCraft.spiritualMagicFigures, Items.iron_ingot, Items.iron_ingot, Items.iron_ingot}); GameRegistry.addShapelessRecipe(new ItemStack(ChinaCraft.smfSuper), new Object[]{ChinaCraft.blackDogBlood, ChinaCraft.spiritualMagicFigures}); - } } diff --git a/src/main/java/unstudio/chinacraft/common/network/KeyMessage.java b/src/main/java/unstudio/chinacraft/common/network/KeyMessage.java index ae425b4..bd379c7 100644 --- a/src/main/java/unstudio/chinacraft/common/network/KeyMessage.java +++ b/src/main/java/unstudio/chinacraft/common/network/KeyMessage.java @@ -7,6 +7,8 @@ * Created by trychen on 16/7/28. */ public class KeyMessage implements IMessage{ + public static final int KEY_DOUBLE_JUMP = 0; + public static final int KEY_ATTACK = 1; public int key; public KeyMessage(int key) { diff --git a/src/main/java/unstudio/chinacraft/common/network/KeyMessageHandler.java b/src/main/java/unstudio/chinacraft/common/network/KeyMessageHandler.java index 3d19c7f..a6bf7e6 100644 --- a/src/main/java/unstudio/chinacraft/common/network/KeyMessageHandler.java +++ b/src/main/java/unstudio/chinacraft/common/network/KeyMessageHandler.java @@ -4,8 +4,16 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import cpw.mods.fml.relauncher.Side; +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.monster.EntityMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import unstudio.chinacraft.api.EntityMethod; +import unstudio.chinacraft.common.ChinaCraft; /** * Created by trychen on 16/7/28. @@ -15,7 +23,7 @@ public class KeyMessageHandler implements IMessageHandler public IMessage onMessage(KeyMessage message, MessageContext ctx) { EntityPlayer player = ctx.getServerHandler().playerEntity; switch(message.key){ - case 0: + case KeyMessage.KEY_DOUBLE_JUMP: NBTTagCompound tCompound = player.getEntityData(); if(tCompound.hasKey("chinacraft.nightClothesHasJumped")) { if (player.motionY < 0.4 && tCompound.getInteger("chinacraft.nightClothesHasJumped") < 2) { @@ -27,6 +35,24 @@ public IMessage onMessage(KeyMessage message, MessageContext ctx) { } } break; + case KeyMessage.KEY_ATTACK: + if (!player.canAttackWithItem() || player.isUsingItem() || player.isBlocking() || player.getHeldItem() == null || player.getHeldItem().getItem() != ChinaCraft.jointStaff) break; + DamageSource damageSource = DamageSource.causeMobDamage(player).setMagicDamage(); + int powerLevel = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, player.getHeldItem()); + int fireLevel = EnchantmentHelper.getEnchantmentLevel(Enchantment.fireAspect.effectId, player.getHeldItem()); + int unbreakingLevel = EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, player.getHeldItem()); + int damage = 1; + for (EntityLiving entityLiving : EntityMethod.findNear(player, EntityLiving.class, 2, 2)) { + if (player.equals(entityLiving)) continue; + if (!entityLiving.isImmuneToFire()) + entityLiving.setFire(3 * fireLevel); + entityLiving.attackEntityFrom(damageSource, 3 + 1.5f*powerLevel); + damage++; + } + if (unbreakingLevel <= 0 || player.worldObj.rand.nextInt(unbreakingLevel) == 0){ + player.getHeldItem().damageItem(damage ,player); + } + break; } return null; } diff --git a/src/main/java/unstudio/chinacraft/entity/fx/EntitySweepAttackFX.java b/src/main/java/unstudio/chinacraft/entity/fx/EntitySweepAttackFX.java new file mode 100644 index 0000000..09c8934 --- /dev/null +++ b/src/main/java/unstudio/chinacraft/entity/fx/EntitySweepAttackFX.java @@ -0,0 +1,97 @@ +package unstudio.chinacraft.entity.fx; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import org.lwjgl.opengl.GL11; + +@SideOnly(Side.CLIENT) +public class EntitySweepAttackFX extends EntityFX +{ + private static final ResourceLocation SWEEP_TEXTURE = new ResourceLocation("chinacraft:textures/entity/sweep.png"); + private int life; + private int lifeTime; + /** The Rendering Engine. */ + private TextureManager theRenderEngine; + private float size; + + public EntitySweepAttackFX(TextureManager p_i1213_1_, World p_i1213_2_, double p_i1213_3_, double p_i1213_5_, double p_i1213_7_, double p_i1213_9_, double p_i1213_11_, double p_i1213_13_) + { + super(p_i1213_2_, p_i1213_3_, p_i1213_5_, p_i1213_7_, 0, 0, 0); + this.theRenderEngine = p_i1213_1_; + this.lifeTime = 4; + float f = this.rand.nextFloat() * 0.6F + 0.4F; + this.particleRed = f; + this.particleGreen = f; + this.particleBlue = f; + this.size = 1.0F - (float)p_i1213_9_ * 0.5F; + + } + + public void renderParticle(Tessellator p_70539_1_, float partialTicks, float rotationX, float rotationZ, float rotationYZ, float rotationXY, float rotationXZ) + { + int i = (int)(((float)this.life + partialTicks) * 3.0F / (float)this.lifeTime); + + if (i <= 7) + { + this.theRenderEngine.bindTexture(SWEEP_TEXTURE); + float f = (float)(i % 4) / 4.0F; + float f1 = f + 0.24975F; + float f2 = (float)(i / 2) / 2.0F; + float f3 = f2 + 0.4995F; + float f4 = 1.0F * this.size; + float f5 = (float)(this.prevPosX + (this.posX - this.prevPosX) * (double)partialTicks - interpPosX); + float f6 = (float)(this.prevPosY + (this.posY - this.prevPosY) * (double)partialTicks - interpPosY); + float f7 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * (double)partialTicks - interpPosZ); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + RenderHelper.disableStandardItemLighting(); + p_70539_1_.startDrawingQuads(); + p_70539_1_.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, 1.0F); + p_70539_1_.setBrightness(240); + +// worldRendererIn.pos((double)(f5 - rotationX * f4 - rotationXY * f4), (double)(f - rotationZ * f4 * 0.5F), (double)(f1 - rotationYZ * f4 - rotationXZ * f4)).tex((double)f1, (double)f3).color(this.particleRed, this.particleGreen, this.particleBlue, 1.0F).lightmap(0, 240).normal(0.0F, 1.0F, 0.0F).endVertex(); +// worldRendererIn.pos((double)(f5 - rotationX * f4 + rotationXY * f4), (double)(f + rotationZ * f4 * 0.5F), (double)(f1 - rotationYZ * f4 + rotationXZ * f4)).tex((double)f1, (double)f2).color(this.particleRed, this.particleGreen, this.particleBlue, 1.0F).lightmap(0, 240).normal(0.0F, 1.0F, 0.0F).endVertex(); +// worldRendererIn.pos((double)(f5 + rotationX * f4 + rotationXY * f4), (double)(f + rotationZ * f4 * 0.5F), (double)(f1 + rotationYZ * f4 + rotationXZ * f4)).tex((double)f, (double)f2).color(this.particleRed, this.particleGreen, this.particleBlue, 1.0F).lightmap(0, 240).normal(0.0F, 1.0F, 0.0F).endVertex(); +// worldRendererIn.pos((double)(f5 + rotationX * f4 - rotationXY * f4), (double)(f - rotationZ * f4 * 0.5F), (double)(f1 + rotationYZ * f4 - rotationXZ * f4)).tex((double)f, (double)f3).color(this.particleRed, this.particleGreen, this.particleBlue, 1.0F).lightmap(0, 240).normal(0.0F, 1.0F, 0.0F).endVertex(); + p_70539_1_.addVertexWithUV((double)(f5 - rotationX * f4 - rotationXY * f4), (double)(f6 - rotationZ * f4 * 0.5f), (double)(f7 - rotationYZ * f4 - rotationXZ * f4), (double)f1, (double)f3); + p_70539_1_.addVertexWithUV((double)(f5 - rotationX * f4 + rotationXY * f4), (double)(f6 + rotationZ * f4 * 0.5f), (double)(f7 - rotationYZ * f4 + rotationXZ * f4), (double)f1, (double)f2); + p_70539_1_.addVertexWithUV((double)(f5 + rotationX * f4 + rotationXY * f4), (double)(f6 + rotationZ * f4 * 0.5f), (double)(f7 + rotationYZ * f4 + rotationXZ * f4), (double)f, (double)f2); + p_70539_1_.addVertexWithUV((double)(f5 + rotationX * f4 - rotationXY * f4), (double)(f6 - rotationZ * f4 * 0.5f), (double)(f7 + rotationYZ * f4 - rotationXZ * f4), (double)f, (double)f3); + p_70539_1_.draw(); + GL11.glPolygonOffset(0.0F, 0.0F); + GL11.glEnable(GL11.GL_LIGHTING); + } + } + + public int getBrightnessForRender(float p_70070_1_) + { + return 61680; + } + + /** + * Called to update the entity's position/logic. + */ + public void onUpdate() + { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + ++this.life; + + if (this.life == this.lifeTime) + { + this.setDead(); + } + } + + public int getFXLayer() + { + return 3; + } +} \ No newline at end of file diff --git a/src/main/java/unstudio/chinacraft/entity/fx/FxHelper.java b/src/main/java/unstudio/chinacraft/entity/fx/FxHelper.java index 0e7171b..e5972c3 100644 --- a/src/main/java/unstudio/chinacraft/entity/fx/FxHelper.java +++ b/src/main/java/unstudio/chinacraft/entity/fx/FxHelper.java @@ -1,15 +1,47 @@ package unstudio.chinacraft.entity.fx; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraft.world.WorldServer; /** * Created by trychen on 15/11/18. */ +@SideOnly(Side.CLIENT) public class FxHelper { public static void spawnEffects(World worldObj, double xCoord, double yCoord, double zCoord) { spawnEffects("mobSpellAmbient", worldObj, xCoord, yCoord, zCoord); } + public static void spawnEffectsOnHead(String type, Entity entity) { + for (int i = 0; i < 5; i++) { + double motionX = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionY = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionZ = entity.worldObj.rand.nextGaussian() * 0.02D; + entity.worldObj.spawnParticle(type, entity.posX, entity.posY + 1, entity.posZ, motionX,motionY,motionZ); + } + } + public static void spawnEffectsOnFoot(String type, Entity entity) { + for (int i = 0; i < 5; i++) { + double motionX = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionY = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionZ = entity.worldObj.rand.nextGaussian() * 0.02D; + entity.worldObj.spawnParticle(type, entity.posX, entity.posY - 1, entity.posZ, motionX,motionY,motionZ); + } + } + public static void spawnOneEffectsOnFoot(String type, Entity entity) { + double motionX = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionY = entity.worldObj.rand.nextGaussian() * 0.02D; + double motionZ = entity.worldObj.rand.nextGaussian() * 0.02D; + entity.worldObj.spawnParticle(type, entity.posX, entity.posY - 2, entity.posZ, 0,0,0); +// entity.worldObj.spawnParticle(type, entity.posX, entity.posY - 2, entity.posZ, motionX,motionY,motionZ); + } + public static void spawnEffects(String kind, World worldObj, double xCoord, double yCoord, double zCoord) { worldObj.spawnParticle(kind, xCoord + worldObj.rand.nextFloat(), yCoord + 1.1, zCoord + worldObj.rand.nextFloat(), 0, 0, 0); @@ -23,4 +55,21 @@ public static void spawnEffects(String kind, World worldObj, double xCoord, doub zCoord + worldObj.rand.nextFloat(), 0, 0, 0); worldObj.spawnParticle(kind, xCoord + 0.5, yCoord + 1.1, zCoord + 0.5, 0, 0, 0); } + + public static void generateSweepAttackParticles(Entity entity) { + double d0 = (double)(-MathHelper.sin(entity.rotationYaw * 0.017453292F)); + double d1 = (double)MathHelper.cos(entity.rotationYaw * 0.017453292F); + + + EntityFX head = new EntitySweepAttackFX(Minecraft.getMinecraft().getTextureManager(), + entity.worldObj, + entity.posX + d0, + entity.posY - (double)entity.height * 0.3f, + entity.posZ + d1, + d0, + 0, + d1); + + Minecraft.getMinecraft().effectRenderer.addEffect(head); + } } diff --git a/src/main/java/unstudio/chinacraft/event/ListenerRegister.java b/src/main/java/unstudio/chinacraft/event/ListenerRegister.java index 15f03c5..164e45c 100644 --- a/src/main/java/unstudio/chinacraft/event/ListenerRegister.java +++ b/src/main/java/unstudio/chinacraft/event/ListenerRegister.java @@ -28,6 +28,6 @@ public static void registerListener(Object listener) { } public static List> getListeners(){ - return AnnotationClassGetter.getClasses("unstudio.chinacraft.event"); + return AnnotationClassGetter.getClasses("unstudio.chinacraft.event"); } } diff --git a/src/main/java/unstudio/chinacraft/event/combat/ListenerArmor.java b/src/main/java/unstudio/chinacraft/event/combat/ListenerArmor.java index 7f3b6a4..396a6ac 100644 --- a/src/main/java/unstudio/chinacraft/event/combat/ListenerArmor.java +++ b/src/main/java/unstudio/chinacraft/event/combat/ListenerArmor.java @@ -6,13 +6,16 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityClientPlayerMP; import net.minecraft.client.gui.GuiChat; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; +import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.event.entity.living.LivingEvent; @@ -25,6 +28,8 @@ import cpw.mods.fml.common.gameevent.TickEvent; import unstudio.chinacraft.common.config.FeatureConfig; import unstudio.chinacraft.common.network.KeyMessage; +import unstudio.chinacraft.entity.fx.FxHelper; +import unstudio.chinacraft.item.combat.ModelArmorCassock; public class ListenerArmor { /** @@ -48,47 +53,27 @@ public void wearingNightClothes(TickEvent.PlayerTickEvent event) { tCompound.setByte("chinacraft.wearingWholeNightClothes",(byte)0); } - @SubscribeEvent - public void attack(LivingHurtEvent event){ - if (event.source.getEntity() == null) return; - if (event.entity instanceof EntityPlayer){ - if (!ChinaCraftApi.isWearingWholeNightClothes((EntityPlayer) event.entityLiving)) return; - EntityLivingBase source = (EntityLivingBase) event.source.getEntity(); - EntityLivingBase destination = event.entityLiving; - - double diffX = destination.posX - source.posX; - double diffZ; - for (diffZ = destination.posZ - source.posZ; diffX * diffX + diffZ * diffZ < 1.0E-4D; diffZ = (Math.random() - Math.random()) * 0.01D) - { - diffX = (Math.random() - Math.random()) * 0.01D; - } - EntityMethod.repel(event.entityLiving, diffX, diffZ); - } - } + + @SideOnly(Side.CLIENT) + private static Minecraft mc = Minecraft.getMinecraft(); @SideOnly(Side.CLIENT) @SubscribeEvent public void preRenderPlayer(RenderPlayerEvent.Pre event) { - if (event.entityPlayer.isSneaking()) { - if (event.entityPlayer.worldObj.getWorldTime() < 13500 || event.entityPlayer.worldObj.getWorldTime() > 22300) return; - if (!ChinaCraftApi.isWearingWholeNightClothes(event.entityPlayer)) return; + if (mc.thePlayer.isSneaking()) { + if (mc.thePlayer.worldObj.getWorldTime() < 13500 || mc.thePlayer.worldObj.getWorldTime() > 22300) return; + if (!ChinaCraftApi.isWearingWholeNightClothes(mc.thePlayer)) return; event.setCanceled(true); } } + @SideOnly(Side.CLIENT) @SubscribeEvent - public void wearingChinaCrown(LivingHurtEvent event) { - if (event.entityLiving instanceof EntityPlayer){ - EntityPlayer p = (EntityPlayer) event.entityLiving; - if (p.inventory.armorInventory[3] != null&&p.inventory.armorInventory[3].getItem().equals(ChinaCraft.chinaCrown)){ - if (p.worldObj.rand.nextInt(2)==1){ - double percent = (p.worldObj.rand.nextInt(5)+3)/10.0; - if (event.source.getSourceOfDamage()!=null&&event.source.getSourceOfDamage() instanceof EntityLiving){ - event.source.getSourceOfDamage().attackEntityFrom(DamageSource.causePlayerDamage(p), (float) (event.ammount * (1 - percent))); - event.ammount = (float) (event.ammount * percent); - } - } - } + public void preRenderPlayer(RenderHandEvent event) { + if (mc.thePlayer.isSneaking()) { + if (mc.thePlayer.worldObj.getWorldTime() < 13500 || mc.thePlayer.worldObj.getWorldTime() > 22300) return; + if (!ChinaCraftApi.isWearingWholeNightClothes(mc.thePlayer)) return; + event.setCanceled(true); } } @@ -104,7 +89,7 @@ public void key(InputEvent.KeyInputEvent event){ if (FMLClientHandler.instance().getClient().gameSettings.keyBindJump.getIsKeyPressed()) { //是否按下了跳跃键 if(FeatureConfig.enableDoubleJump) { if (player.motionY < 0.04 && player.isAirBorne) { - ChinaCraft.Network.sendToServer(new KeyMessage(0));//向服务器发送消息 + ChinaCraft.Network.sendToServer(new KeyMessage(KeyMessage.KEY_DOUBLE_JUMP));//向服务器发送消息 } } } @@ -137,4 +122,60 @@ public void fall(LivingFallEvent e){ e.setCanceled(true); } } + + @SubscribeEvent(priority = EventPriority.HIGH) + public void hurt(LivingHurtEvent event){ + if (!(event.entity instanceof EntityPlayer)) return; + EntityPlayer entityPlayer = (EntityPlayer) event.entity; + + if (!ChinaCraftApi.isWearingWholeNightClothes(entityPlayer)){ + hurtNightClothes(event); + } + if (entityPlayer.inventory.armorInventory[2] != null && entityPlayer.inventory.armorInventory[2].getItem().equals(ChinaCraft.cassock)){ + hurtCassock(event, entityPlayer); + } + if (entityPlayer.inventory.armorInventory[3] != null&& entityPlayer.inventory.armorInventory[3].getItem().equals(ChinaCraft.chinaCrown)){ + hurtChinaCrown(event); + } + } + + @SubscribeEvent(priority = EventPriority.HIGH) + public void attack(LivingHurtEvent event){ + if (event.source.getEntity() == null || !(event.source.getEntity() instanceof EntityPlayer)) return; + EntityPlayer entityPlayer = (EntityPlayer) event.source.getEntity(); + if (entityPlayer.inventory.armorInventory[3] != null && entityPlayer.inventory.armorInventory[3].getItem() == ChinaCraft.chinaCrown){ + attackWithChinaCrown(event); + } + } + + private void attackWithChinaCrown(LivingHurtEvent event) { + event.ammount *= 2; + } + + private void hurtChinaCrown(LivingHurtEvent event) { + event.ammount *= 3; + } + + private void hurtCassock(LivingHurtEvent event, EntityPlayer entityPlayer){ + if (entityPlayer.getHealth() - event.ammount <= 0){ + entityPlayer.setHealth(entityPlayer.getMaxHealth() / 2); + FxHelper.spawnEffects("blockcrack_" + ModelArmorCassock.getItemId(), entityPlayer.worldObj, entityPlayer.posX - 0.5, + entityPlayer.posY, entityPlayer.posZ - 0.5); + entityPlayer.inventory.armorInventory[2] = null; + } + } + + private void hurtNightClothes(LivingHurtEvent event){ + if (event.source.getEntity() == null && !(event.source.getEntity() instanceof EntityLivingBase)) return; + EntityLivingBase source = (EntityLivingBase) event.source.getEntity(); + EntityLivingBase destination = event.entityLiving; + + double diffX = destination.posX - source.posX; + double diffZ; + for (diffZ = destination.posZ - source.posZ; diffX * diffX + diffZ * diffZ < 1.0E-4D; diffZ = (Math.random() - Math.random()) * 0.01D) + { + diffX = (Math.random() - Math.random()) * 0.01D; + } + EntityMethod.repel(event.entityLiving, diffX, diffZ); + } } diff --git a/src/main/java/unstudio/chinacraft/event/combat/ListenerSword.java b/src/main/java/unstudio/chinacraft/event/combat/ListenerSword.java new file mode 100644 index 0000000..3730ace --- /dev/null +++ b/src/main/java/unstudio/chinacraft/event/combat/ListenerSword.java @@ -0,0 +1,99 @@ +package unstudio.chinacraft.event.combat; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiChat; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraftforge.event.entity.living.LivingHurtEvent; +import unstudio.chinacraft.api.EntityMethod; +import unstudio.chinacraft.common.ChinaCraft; +import unstudio.chinacraft.common.network.KeyMessage; +import unstudio.chinacraft.entity.fx.FxHelper; + +/** + * Created by trychen on 17/4/2. + */ +public class ListenerSword { + @SubscribeEvent + public void mace(LivingHurtEvent event) { + if (event.source.isFireDamage() || event.source.isProjectile() || !(event.source.getSourceOfDamage() instanceof EntityPlayer) && !event.source.damageType.equals("player") || event.source.getSourceOfDamage() == null) + return; + EntityPlayer player = (EntityPlayer) event.source.getSourceOfDamage(); + if (player.onGround && player.getHeldItem() != null && player.getHeldItem().getItem() == ChinaCraft.mace && player.worldObj.rand.nextInt(3) == 0) { + player.onCriticalHit(event.entity); + event.ammount *= 2.5; + player.getHeldItem().damageItem(2, player); + } + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void key(InputEvent.MouseInputEvent event){ + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + if (FMLClientHandler.instance().isGUIOpen(GuiChat.class)) return; + if (player.getHeldItem() == null || player.getHeldItem().getItem() != ChinaCraft.jointStaff) return; + if (!player.canAttackWithItem() || player.isUsingItem() || player.isBlocking()) return; + + if (FMLClientHandler.instance().getClient().gameSettings.keyBindAttack.getIsKeyPressed()) { + ChinaCraft.Network.sendToServer(new KeyMessage(KeyMessage.KEY_ATTACK));//向服务器发送消息 + +// DamageSource damageSource = DamageSource.causeMobDamage(player).setMagicDamage(); +// for (EntityLiving entityLiving : EntityMethod.findNear(player, EntityLiving.class, 2, 2)) { +// if (player.equals(entityLiving)) continue; +// entityLiving.attackEntityFrom(damageSource, 3); +// } + + //Spawns a particle. Args particleName, x, y, z, velX, velY, velZ + FxHelper.generateSweepAttackParticles(player); +// player.worldObj.spawnParticle("explode"); + } + } + + @SubscribeEvent + public void monksKnife(LivingHurtEvent event) { + if (event.source.getSourceOfDamage() instanceof EntityLivingBase) { + EntityLivingBase source = (EntityLivingBase) event.source.getSourceOfDamage(); + if (source.getHeldItem() != null && (source.getHeldItem().getItem() == ChinaCraft.buddhistMonksKnife || source.getHeldItem().getItem() == ChinaCraft.crashBuddhistMonksKnife)) { + boolean isCrash = source.getHeldItem().getItem() == ChinaCraft.crashBuddhistMonksKnife; + int damaged = 0; + int maxDamage = 0; + int totalReduction = 0; + int countReduction = 0; + for (ItemStack itemStack : event.entityLiving.getLastActiveItems()) { + if (itemStack != null && itemStack.getItem() instanceof ItemArmor) { + int damage = source.worldObj.rand.nextInt(5); + itemStack.damageItem(damage, event.entityLiving); + damaged += itemStack.getItemDamage(); + maxDamage += itemStack.getMaxDamage(); + totalReduction += ((ItemArmor) itemStack.getItem()).getArmorMaterial().getDamageReductionAmount(((ItemArmor) itemStack.getItem()).armorType); + countReduction++; + } + } + if (maxDamage > 0) { + float rate = (float) (maxDamage - damaged) / (float) maxDamage; + event.ammount *= 1 + rate; + if (countReduction > 0) { + event.ammount -= totalReduction / (countReduction * 2); + } + if (isCrash) event.ammount *= 1.4; + } else { + if (isCrash) { + event.ammount = 5.0f; + } else { + event.ammount = 3.0f; + } + } + } else if (source.getHeldItem() != null && source.getHeldItem().getItem() == ChinaCraft.jointStaff && !event.source.isMagicDamage()) + event.setCanceled(true); + } + } +} diff --git a/src/main/java/unstudio/chinacraft/event/jade/ListenerGreenJade.java b/src/main/java/unstudio/chinacraft/event/jade/ListenerGreenJade.java index cc89cc0..dec2a62 100644 --- a/src/main/java/unstudio/chinacraft/event/jade/ListenerGreenJade.java +++ b/src/main/java/unstudio/chinacraft/event/jade/ListenerGreenJade.java @@ -15,19 +15,6 @@ import cpw.mods.fml.common.gameevent.TickEvent; public class ListenerGreenJade { - @SubscribeEvent - public void PlayerTick(TickEvent.PlayerTickEvent e) { - if (e.player.getHeldItem() != null) { - if (e.player.getHeldItem().getItem().equals(ChinaCraft.bronzeBroadSwordGreen)) { - if (e.player.isAirBorne && e.player.isSneaking()) { - e.player.motionY -= 0.2; - e.player.motionX *= 1.02D; - e.player.motionZ *= 1.02D; - } - } - } - } - @SubscribeEvent public void DoubleJump(LivingEvent.LivingJumpEvent event) { if (event.entity instanceof EntityPlayer) { @@ -46,9 +33,8 @@ public void DoubleJump(LivingEvent.LivingJumpEvent event) { } } - for (int time = 0; time < 9; time++) { - if (entityPlayer.inventory.mainInventory[time] != null) { - if (entityPlayer.inventory.mainInventory[time].getItem().equals(ChinaCraft.jadeGreenItem)) { + if (entityPlayer.inventory.mainInventory[8] != null) { + if (entityPlayer.inventory.mainInventory[8].getItem().equals(ChinaCraft.jadeGreenItem)) { entityPlayer.motionY += 0.2; FxHelper.spawnEffects(entityPlayer.worldObj, event.entity.posX - 0.5, event.entity.posY - 2, event.entity.posZ - 0.5); @@ -56,7 +42,6 @@ public void DoubleJump(LivingEvent.LivingJumpEvent event) { } } - } } } @@ -95,7 +80,6 @@ public void missFall(LivingFallEvent event) { event.setCanceled(true); } } else if (entityPlayer.getHeldItem().getItem().equals(ChinaCraft.blGiantSword) && event.distance > 3.0f) { - entityPlayer.worldObj.spawnParticle("largeexplode", event.entity.posX - 0.5 + entityPlayer.worldObj.rand.nextFloat(), event.entity.posY - 2 + 1.1, event.entity.posZ - 0.5, 0, 0, 0); @@ -108,15 +92,13 @@ public void missFall(LivingFallEvent event) { } } if (event.distance > 2.0f) { - for (int time = 0; time < 9; time++) { - if (entityPlayer.inventory.mainInventory[time] != null) { - if (entityPlayer.inventory.mainInventory[time].getItem().equals(ChinaCraft.jadeGreenItem)) { - if (event.distance < 5.0f) { - event.setCanceled(true); - } else if (event.distance > 5.0f && event.distance < 12.0f) { - entityPlayer.attackEntityFrom(DamageSource.fall, 1.0f); - event.setCanceled(true); - } + if (entityPlayer.inventory.mainInventory[8] != null) { + if (entityPlayer.inventory.mainInventory[8].getItem().equals(ChinaCraft.jadeGreenItem)) { + if (event.distance < 5.0f) { + event.setCanceled(true); + } else if (event.distance > 5.0f && event.distance < 12.0f) { + entityPlayer.attackEntityFrom(DamageSource.fall, 1.0f); + event.setCanceled(true); } } } diff --git a/src/main/java/unstudio/chinacraft/event/jade/ListenerJade.java b/src/main/java/unstudio/chinacraft/event/jade/ListenerJade.java index 2b00c3f..3f89a5f 100644 --- a/src/main/java/unstudio/chinacraft/event/jade/ListenerJade.java +++ b/src/main/java/unstudio/chinacraft/event/jade/ListenerJade.java @@ -1,20 +1,23 @@ package unstudio.chinacraft.event.jade; +import cpw.mods.fml.common.eventhandler.EventPriority; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHurtEvent; import unstudio.chinacraft.common.ChinaCraft; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import unstudio.chinacraft.entity.fx.FxHelper; -/** - * Created by trychen on 15/11/18. - */ public class ListenerJade { @SubscribeEvent public void useitem(PlayerUseJadeEvent.ItemRightClick event) { - if (event.itemStack.getItem() == ChinaCraft.jadeGreen2Item) { + if (event.itemStack.getItem() == ChinaCraft.jadePurpleItem) { + /** + * Purple Jade, 回5f血 + */ if (event.itemStack.getItemDamage() == 0) { event.entityPlayer.heal(5); event.itemStack.setItemDamage(event.itemStack.getMaxDamage() - 1); @@ -22,62 +25,77 @@ public void useitem(PlayerUseJadeEvent.ItemRightClick event) { } } - @SubscribeEvent - public void AttackEntityEvent(LivingHurtEvent event) { + @SubscribeEvent(priority = EventPriority.HIGH) + public void attackEvent(LivingHurtEvent event) { + if (event.source.getEntity() != null && !event.source.isProjectile() && event.source.damageType.equals("player") && event.source.getEntity() instanceof EntityPlayer){ + EntityPlayer entityPlayer = (EntityPlayer) event.source.getEntity(); + ItemStack heldItemStack = entityPlayer.getHeldItem(); + if (heldItemStack!= null && heldItemStack.getItem().equals(ChinaCraft.bronzeBroadSwordGreen2)) { + if (event.entity.worldObj.rand.nextInt(6) == 3) { + /** + * Green2 Sword, 一定几率吸血 + */ + entityPlayer.heal(event.ammount); + heldItemStack.damageItem(4, entityPlayer); + } + } + } + } + + @SubscribeEvent(priority = EventPriority.HIGH) + public void hurtEvent(LivingHurtEvent event) { if (event.entity instanceof EntityPlayer) { EntityPlayer entityPlayer = (EntityPlayer) event.entity; - if (event.entity.worldObj.rand.nextInt(6) == 3) { - if (entityPlayer.getHeldItem() != null - && entityPlayer.getHeldItem().getItem().equals(ChinaCraft.bronzeBroadSwordPink)) { - event.ammount = 0.0f; - event.setCanceled(true); + + if (entityPlayer.inventory.mainInventory[8] != null) { + ItemStack itemStack = entityPlayer.inventory.mainInventory[8]; + if (itemStack.getItem() == ChinaCraft.jadePinkItem) { + /** + * Pink Jade, 反弹1.3倍致命一击 + */ + PlayerUseJadeEvent.Hurt e = new PlayerUseJadeEvent.Hurt(event, entityPlayer, itemStack); + if (MinecraftForge.EVENT_BUS.post(e)) return; + if (itemStack.getItemDamage() == 0) { + event.ammount = 0.0f; + event.setCanceled(true); + } return; - } else { - for (int time = 0; time < 9; time++) { - if (entityPlayer.inventory.mainInventory[time] != null) { - if (entityPlayer.inventory.mainInventory[time].getItem().equals(ChinaCraft.jadePinkItem)) { - event.ammount = 0.0f; - event.setCanceled(true); - return; - } + } else if (itemStack.getItem() == ChinaCraft.jadeGreen2Item) { + /** + * Green2 Jade, 几率性反弹1.3倍致命一击 + */ + PlayerUseJadeEvent.Hurt e = new PlayerUseJadeEvent.Hurt(event, entityPlayer, itemStack); + if (MinecraftForge.EVENT_BUS.post(e)) return; + if (entityPlayer.worldObj.rand.nextInt(4) == 3 && event.source.getEntity() != null) { + event.source.getEntity().attackEntityFrom(DamageSource.causePlayerDamage(entityPlayer), event.ammount * 1.3f); + itemStack.damageItem(1, entityPlayer); + if(!e.entity.worldObj.isRemote) { +// e.entity.worldObj.spawnParticle("magicCrit", e.entity.worldObj, e.entity.posX - 0.5, e.entity.posY + 1, e.entity.posZ - 0.5); + FxHelper.spawnEffectsOnHead("magicCrit", e.entity); } } - } - } - if (!event.source.isMagicDamage()&&!event.source.isUnblockable()) { - for (int time = 0; time < 9; time++) { - if (entityPlayer.inventory.mainInventory[time] != null) { - if (entityPlayer.inventory.mainInventory[time].getItem().equals(ChinaCraft.jadeGreen2Item)) { - ItemStack itemStack = entityPlayer.inventory.mainInventory[time]; - if (itemStack.getItemDamage() != 0) { - PlayerUseJadeEvent.MainInventory e = new PlayerUseJadeEvent.MainInventory(entityPlayer, - itemStack); - if (MinecraftForge.EVENT_BUS.post(e)) - return; - if (itemStack.getItemDamage() >= 2) - itemStack.setItemDamage(itemStack.getItemDamage() - 2); - else { - itemStack.setItemDamage(itemStack.getItemDamage() - 1); - } - } else if ((entityPlayer.getHealth() - event.ammount) < 0){ //如果是致命一击就自动回血 - entityPlayer.heal(5); - itemStack.setItemDamage(itemStack.getMaxDamage() - 1); - } - break; - } + } else if (itemStack.getItem() == ChinaCraft.jadePurpleItem) { + /** + * Purple Jade, 回复CD + */ + PlayerUseJadeEvent.Hurt e = new PlayerUseJadeEvent.Hurt(event, entityPlayer, itemStack); + if (itemStack.getItemDamage() != 0) { + itemStack.setItemDamage(itemStack.getItemDamage() - 1); } } - } else { - if (entityPlayer.getHeldItem() != null - && entityPlayer.getHeldItem().getItem().equals(ChinaCraft.bronzeBroadSwordGreen2)) { - for (int time = 0; time < 9; time++) { - if (entityPlayer.inventory.mainInventory[time] != null) { - if (entityPlayer.inventory.mainInventory[time].getItem().equals(ChinaCraft.jadePinkItem)) { - entityPlayer.inventory.mainInventory[time] - .setItemDamage(entityPlayer.inventory.mainInventory[time].getItemDamage() - 1); - break; - } - } + } + + if (entityPlayer.getHeldItem() != null) { + ItemStack heldItemStack = entityPlayer.getHeldItem(); + if (heldItemStack.getItem().equals(ChinaCraft.bronzeBroadSwordPink)) { + /** + * Pink Sword, 一定几率miss伤害 + */ + if (event.entity.worldObj.rand.nextInt(6) == 3) { + event.ammount = 0.0f; + event.setCanceled(true); + entityPlayer.getHeldItem().damageItem(5, event.entityLiving); + return; } } } diff --git a/src/main/java/unstudio/chinacraft/event/jade/PlayerUseJadeEvent.java b/src/main/java/unstudio/chinacraft/event/jade/PlayerUseJadeEvent.java index 858d638..33e7219 100644 --- a/src/main/java/unstudio/chinacraft/event/jade/PlayerUseJadeEvent.java +++ b/src/main/java/unstudio/chinacraft/event/jade/PlayerUseJadeEvent.java @@ -2,6 +2,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import cpw.mods.fml.common.eventhandler.Cancelable; @@ -26,10 +27,12 @@ public ItemRightClick(EntityPlayer player, ItemStack itemStack) { } @Cancelable - public static class MainInventory extends PlayerUseJadeEvent { + public static class Hurt extends PlayerUseJadeEvent { + public LivingHurtEvent hurtEvent; - public MainInventory(EntityPlayer player, ItemStack itemStack) { - super(player, itemStack); + public Hurt(LivingHurtEvent event, EntityPlayer entityPlayer, ItemStack itemStack) { + super(entityPlayer, itemStack); + this.hurtEvent = event; } } } diff --git a/src/main/java/unstudio/chinacraft/inventory/ContainerJadeBench.java b/src/main/java/unstudio/chinacraft/inventory/ContainerJadeBench.java index c5d704a..bd7cee2 100644 --- a/src/main/java/unstudio/chinacraft/inventory/ContainerJadeBench.java +++ b/src/main/java/unstudio/chinacraft/inventory/ContainerJadeBench.java @@ -72,4 +72,22 @@ else if (par2 >= 30 && par2 < 39) { } return var3; } + + @Override + public void onContainerClosed(EntityPlayer p_75134_1_) { + super.onContainerClosed(p_75134_1_); + + if (!this.tile.getWorldObj().isRemote) + { + for (int i = 0; i < 9; ++i) + { + ItemStack itemstack = this.tile.getStackInSlotOnClosing(i); + + if (itemstack != null) + { + p_75134_1_.dropPlayerItemWithRandomChoice(itemstack, false); + } + } + } + } } diff --git a/src/main/java/unstudio/chinacraft/item/CCCropPlantItem.java b/src/main/java/unstudio/chinacraft/item/CCCropPlantItem.java index c853458..5da4f95 100644 --- a/src/main/java/unstudio/chinacraft/item/CCCropPlantItem.java +++ b/src/main/java/unstudio/chinacraft/item/CCCropPlantItem.java @@ -16,6 +16,16 @@ public class CCCropPlantItem extends Item implements IPlantable { private Block bb; + public CCCropPlantItem() { + this.setCreativeTab(ChinaCraft.tabFarming); + } + + /** + * this constructor is no safe, the block may no init. so it may crash because bb is null. + * safe method is use {@link unstudio.chinacraft.util.annotation.register.CorpPlant} + * @param b + */ + @Deprecated public CCCropPlantItem(Block b) { this.setCreativeTab(ChinaCraft.tabFarming); this.bb = b; @@ -56,4 +66,8 @@ public int getPlantMetadata(IBlockAccess world, int x, int y, int z) { return 0; } + public CCCropPlantItem setPlantBlock(Block bb) { + this.bb = bb; + return this; + } } diff --git a/src/main/java/unstudio/chinacraft/item/ItemArtKnife.java b/src/main/java/unstudio/chinacraft/item/ItemArtKnife.java index db3e0eb..dcf1814 100644 --- a/src/main/java/unstudio/chinacraft/item/ItemArtKnife.java +++ b/src/main/java/unstudio/chinacraft/item/ItemArtKnife.java @@ -13,7 +13,7 @@ public class ItemArtKnife extends Item { public ItemArtKnife() { setUnlocalizedName("art_knife"); setMaxStackSize(1); - setMaxDamage(6); + setMaxDamage(64); setHasSubtypes(false); setCreativeTab(ChinaCraft.tabTool); } diff --git a/src/main/java/unstudio/chinacraft/item/ItemFirecracker.java b/src/main/java/unstudio/chinacraft/item/ItemFirecracker.java index 485c4f6..86ebf71 100644 --- a/src/main/java/unstudio/chinacraft/item/ItemFirecracker.java +++ b/src/main/java/unstudio/chinacraft/item/ItemFirecracker.java @@ -25,7 +25,11 @@ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer pla if (!world.isRemote) { if (player.isSneaking()){ for (int i = 0; i < stack.stackSize; i++) { - world.spawnEntityInWorld(new EntityThrownFirecracker(world, player)); + EntityThrownFirecracker entityThrownFirecracker = new EntityThrownFirecracker(world, player); + entityThrownFirecracker.motionX *= world.rand.nextGaussian(); + entityThrownFirecracker.motionY += 0.3; + entityThrownFirecracker.motionZ *= world.rand.nextGaussian(); + world.spawnEntityInWorld(entityThrownFirecracker); } } else world.spawnEntityInWorld(new EntityThrownFirecracker(world, player)); } diff --git a/src/main/java/unstudio/chinacraft/item/ItemSilk.java b/src/main/java/unstudio/chinacraft/item/ItemSilk.java index 06264a3..346e797 100644 --- a/src/main/java/unstudio/chinacraft/item/ItemSilk.java +++ b/src/main/java/unstudio/chinacraft/item/ItemSilk.java @@ -15,8 +15,8 @@ public class ItemSilk extends Item { - public static final String[] silk_name = new String[] { "black", "red", "green", "brown", "blue", "purple", "cyan", - "silver", "gray", "pink", "lime", "yellow", "lightBlue", "magenta", "orange", "white" }; + public static final String[] silk_name = new String[] { "white", "orange", "magenta", "lightBlue", "yellow", "lime", "pink", + "gray", "silver", "cyan", "purple", "blue", "brown", "green", "red", "black" }; private IIcon[] silk_icon; public ItemSilk() { diff --git a/src/main/java/unstudio/chinacraft/item/combat/CCBuddhistMonksKnife.java b/src/main/java/unstudio/chinacraft/item/combat/CCBuddhistMonksKnife.java new file mode 100644 index 0000000..b11a183 --- /dev/null +++ b/src/main/java/unstudio/chinacraft/item/combat/CCBuddhistMonksKnife.java @@ -0,0 +1,44 @@ +package unstudio.chinacraft.item.combat; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import unstudio.chinacraft.client.render.item.SpecialItemRender; +import unstudio.chinacraft.common.ChinaCraft; +import unstudio.chinacraft.util.ItemLoreHelper; +import unstudio.chinacraft.util.annotation.register.ISpecialEquippedRender; + +import java.util.List; + +/** + * Created by trychen on 17/5/28. + */ +public class CCBuddhistMonksKnife extends ItemSword implements ISpecialEquippedRender { + public CCBuddhistMonksKnife(ToolMaterial toolMaterial) { + super(toolMaterial); + setUnlocalizedName("buddhist_monks_knife"); + setMaxDamage(200); + setCreativeTab(ChinaCraft.tabTool); + } + + public int getDamage(){ + return (int) func_150931_i(); + } + + @Override + public void doRender() { + + } + + @Override + public SpecialItemRender.RenderType getSpecialRenderType() { + return SpecialItemRender.RenderType.huge; + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) { + ItemLoreHelper.shiftLoreWithStat(p_77624_3_,getUnlocalizedName()); + } +} \ No newline at end of file diff --git a/src/main/java/unstudio/chinacraft/item/combat/JiuQu_tang.java b/src/main/java/unstudio/chinacraft/item/combat/CCItemJiuQuTang.java similarity index 85% rename from src/main/java/unstudio/chinacraft/item/combat/JiuQu_tang.java rename to src/main/java/unstudio/chinacraft/item/combat/CCItemJiuQuTang.java index 7985b50..87f466c 100644 --- a/src/main/java/unstudio/chinacraft/item/combat/JiuQu_tang.java +++ b/src/main/java/unstudio/chinacraft/item/combat/CCItemJiuQuTang.java @@ -9,9 +9,9 @@ /** * Created by Huangshize . */ -public class JiuQu_tang extends ItemSword implements ISpecialEquippedRender{ +public class CCItemJiuQuTang extends ItemSword implements ISpecialEquippedRender{ - public JiuQu_tang() { + public CCItemJiuQuTang() { super(ToolMaterial.IRON); setUnlocalizedName("jiuqu_tang"); setMaxStackSize(1); diff --git a/src/main/java/unstudio/chinacraft/item/combat/Mace.java b/src/main/java/unstudio/chinacraft/item/combat/CCItemMace.java similarity index 54% rename from src/main/java/unstudio/chinacraft/item/combat/Mace.java rename to src/main/java/unstudio/chinacraft/item/combat/CCItemMace.java index 108a835..ced7d15 100644 --- a/src/main/java/unstudio/chinacraft/item/combat/Mace.java +++ b/src/main/java/unstudio/chinacraft/item/combat/CCItemMace.java @@ -2,8 +2,12 @@ import java.util.List; +import com.google.common.collect.Multimap; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.potion.PotionEffect; @@ -11,21 +15,21 @@ import unstudio.chinacraft.client.render.item.SpecialItemRender; import unstudio.chinacraft.common.ChinaCraft; +import unstudio.chinacraft.entity.fx.FxHelper; import unstudio.chinacraft.util.annotation.register.ISpecialEquippedRender; -public class Mace extends ItemSword implements ISpecialEquippedRender{ - public Mace() { - super(ToolMaterial.IRON); +public class CCItemMace extends ItemSword implements ISpecialEquippedRender{ + public CCItemMace() { + super(ChinaCraft.MACE); setCreativeTab(ChinaCraft.tabTool); setUnlocalizedName("mace"); } @Override - public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase target, EntityLivingBase p_77644_3_) { - p_77644_1_.damageItem(1, p_77644_3_); - target.addPotionEffect(new PotionEffect(4, 8)); - target.addPotionEffect(new PotionEffect(2, 8)); - return true; + public boolean getIsRepairable(ItemStack p_82789_1_, ItemStack p_82789_2_) { + ItemStack mat = new ItemStack(Blocks.obsidian, 1, net.minecraftforge.oredict.OreDictionary.WILDCARD_VALUE); + if (mat != null && net.minecraftforge.oredict.OreDictionary.itemMatches(mat, p_82789_2_, false)) return true; + return super.getIsRepairable(p_82789_1_, p_82789_2_); } @Override @@ -33,6 +37,11 @@ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p p_77624_3_.add(StatCollector.translateToLocal("item.mace.lore")); } + @Override + public boolean hitEntity(ItemStack p_77644_1_, EntityLivingBase p_77644_2_, EntityLivingBase p_77644_3_) { + return super.hitEntity(p_77644_1_, p_77644_2_, p_77644_3_); + } + @Override public void doRender() { diff --git a/src/main/java/unstudio/chinacraft/item/combat/CCJointStaff.java b/src/main/java/unstudio/chinacraft/item/combat/CCJointStaff.java new file mode 100644 index 0000000..f72407c --- /dev/null +++ b/src/main/java/unstudio/chinacraft/item/combat/CCJointStaff.java @@ -0,0 +1,40 @@ +package unstudio.chinacraft.item.combat; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemSword; +import net.minecraft.world.World; +import unstudio.chinacraft.client.render.item.SpecialItemRender; +import unstudio.chinacraft.common.ChinaCraft; +import unstudio.chinacraft.util.ItemLoreHelper; +import unstudio.chinacraft.util.annotation.register.ISpecialEquippedRender; + +import java.util.List; + +/** + * Created by trychen on 17/5/28. + */ +public class CCJointStaff extends ItemSword implements ISpecialEquippedRender{ + public CCJointStaff() { + super(ToolMaterial.IRON); + setCreativeTab(ChinaCraft.tabTool); + setUnlocalizedName("joint_staff"); + } + + @SideOnly(Side.CLIENT) + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List p_77624_3_, boolean p_77624_4_) { + ItemLoreHelper.shiftLoreWithStat(p_77624_3_,getUnlocalizedName()); + } + + @Override + public void doRender() { + + } + + @Override + public SpecialItemRender.RenderType getSpecialRenderType() { + return SpecialItemRender.RenderType.staff; + } +} diff --git a/src/main/java/unstudio/chinacraft/item/combat/ModelArmor.java b/src/main/java/unstudio/chinacraft/item/combat/ModelArmor.java index 3cf2944..736d5fb 100644 --- a/src/main/java/unstudio/chinacraft/item/combat/ModelArmor.java +++ b/src/main/java/unstudio/chinacraft/item/combat/ModelArmor.java @@ -20,8 +20,11 @@ public class ModelArmor extends ItemArmor { @SideOnly(Side.CLIENT) protected IIcon itemIcon; - private String textureName = ""; + @SideOnly(Side.CLIENT) private ModelBiped armorModel; + + private String textureName; + private int textureType; public ModelArmor(ArmorMaterial armorMaterial, String name, String textureName, int textureType, int type, @@ -89,6 +92,7 @@ public IIcon getIcon(ItemStack stack, int pass) { } @Override + @SideOnly(Side.CLIENT) public String getArmorTexture(ItemStack stack, Entity entity, int slot, String layer) { if (textureType == 0) { return String.format("chinacraft:textures/models/armor/%s.png", textureName); @@ -96,6 +100,7 @@ public String getArmorTexture(ItemStack stack, Entity entity, int slot, String l return String.format("chinacraft:textures/models/armor/%s_layer_%d.png", textureName, slot == 2 ? 2 : 1); } + @SideOnly(Side.CLIENT) public void setArmorModel(ModelBiped armorModel) { this.armorModel = armorModel; } diff --git a/src/main/java/unstudio/chinacraft/item/combat/ModelArmorCassock.java b/src/main/java/unstudio/chinacraft/item/combat/ModelArmorCassock.java new file mode 100644 index 0000000..b72221f --- /dev/null +++ b/src/main/java/unstudio/chinacraft/item/combat/ModelArmorCassock.java @@ -0,0 +1,77 @@ +package unstudio.chinacraft.item.combat; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import unstudio.chinacraft.client.model.armor.ModelCassock; +import unstudio.chinacraft.common.ChinaCraft; + +/** + * Created by trychen on 17/3/25. + */ +public class ModelArmorCassock extends ModelArmor { + @SideOnly(Side.CLIENT) + private Object armorModel; + + private static Integer itemId; + + public ModelArmorCassock() { + super(ArmorMaterial.CLOTH, "cassock", "cassock", 1, 1, 1); + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + if (armorModel == null) armorModel = new ModelCassock(); + ModelCassock model = (ModelCassock) armorModel; + model = new ModelCassock(); + model.bipedBody.showModel = true; + model.bipedRightArm.showModel = true; + model.bipedLeftArm.showModel = true; + model.bipedRightLeg.showModel = true; + model.bipedLeftLeg.showModel = true; + + model.isSneak = entityLiving.isSneaking(); + model.isRiding = entityLiving.isRiding(); + model.isChild = entityLiving.isChild(); + + model.heldItemRight = 0; + model.aimedBow = false; + + EntityPlayer player = (EntityPlayer) entityLiving; + + ItemStack held_item = player.getEquipmentInSlot(0); + + if (held_item != null) { + model.heldItemRight = 1; + if (player.getItemInUseCount() > 0) { + EnumAction enumaction = held_item.getItemUseAction(); + if (enumaction == EnumAction.bow) { + model.aimedBow = true; + } else if (enumaction == EnumAction.block) { + model.heldItemRight = 3; + } + } + } + return model; + } + + @Override + @SideOnly(Side.CLIENT) + public String getArmorTexture(ItemStack stack, Entity entity, int slot, String layer) { + return "chinacraft:textures/models/armor/cassock.png"; + } + + public static int getItemId() { + if (itemId == null) { + itemId = Item.getIdFromItem(ChinaCraft.cassock); + } + return itemId; + } +} diff --git a/src/main/java/unstudio/chinacraft/recipes/CCShapedIgnoreDamageRecipe.java b/src/main/java/unstudio/chinacraft/recipes/CCShapedIgnoreDamageRecipe.java deleted file mode 100644 index fa86b33..0000000 --- a/src/main/java/unstudio/chinacraft/recipes/CCShapedIgnoreDamageRecipe.java +++ /dev/null @@ -1,205 +0,0 @@ -package unstudio.chinacraft.recipes; - -import net.minecraft.block.Block; -import net.minecraft.inventory.InventoryCrafting; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.crafting.IRecipe; -import net.minecraft.item.crafting.ShapedRecipes; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -import java.util.HashMap; - -/** - * Created by AAA on 2016/2/15. - */ -public class CCShapedIgnoreDamageRecipe extends ShapedRecipes { - private boolean field_92101_f; - - public CCShapedIgnoreDamageRecipe(int p_i1917_1_, int p_i1917_2_, ItemStack[] p_i1917_3_, ItemStack p_i1917_4_) - { - super(p_i1917_1_, p_i1917_2_, p_i1917_3_, p_i1917_4_); - } - /** - * Used to check if a recipe matches current crafting inventory - */ - public boolean matches(InventoryCrafting p_77569_1_, World p_77569_2_) - { - for (int i = 0; i <= 3 - this.recipeWidth; ++i) - { - for (int j = 0; j <= 3 - this.recipeHeight; ++j) - { - if (this.checkMatch(p_77569_1_, i, j, true)) - { - return true; - } - - if (this.checkMatch(p_77569_1_, i, j, false)) - { - return true; - } - } - } - return false; - } - - /** - * Checks if the region of a crafting inventory is match for the recipe. - */ - - private boolean checkMatch(InventoryCrafting p_77573_1_, int p_77573_2_, int p_77573_3_, boolean p_77573_4_) - { - for (int k = 0; k < 3; ++k) - { - for (int l = 0; l < 3; ++l) - { - int i1 = k - p_77573_2_; - int j1 = l - p_77573_3_; - ItemStack itemstack = null; - - if (i1 >= 0 && j1 >= 0 && i1 < this.recipeWidth && j1 < this.recipeHeight) - { - if (p_77573_4_) - { - itemstack = this.recipeItems[this.recipeWidth - i1 - 1 + j1 * this.recipeWidth]; - } - else - { - itemstack = this.recipeItems[i1 + j1 * this.recipeWidth]; - } - } - - ItemStack itemstack1 = p_77573_1_.getStackInRowAndColumn(k, l); - - if (itemstack1 != null || itemstack != null) - { - if (itemstack1 == null && itemstack != null || itemstack1 != null && itemstack == null) - { - return false; - } - - if (itemstack.getItem() != itemstack1.getItem()) - { - return false; - } - - //if (itemstack.getItemDamage() != 32767 && itemstack.getItemDamage() != itemstack1.getItemDamage()){return false;} - //去掉了关于物品损害值的判断以方便损害物品合成 - } - } - } - - return true; - } - - /** - * Returns an Item that is the result of this recipe - */ - public ItemStack getCraftingResult(InventoryCrafting p_77572_1_) - { - ItemStack itemstack = this.getRecipeOutput().copy(); - - if (this.field_92101_f) - { - for (int i = 0; i < p_77572_1_.getSizeInventory(); ++i) - { - ItemStack itemstack1 = p_77572_1_.getStackInSlot(i); - - if (itemstack1 != null && itemstack1.hasTagCompound()) - { - itemstack.setTagCompound((NBTTagCompound)itemstack1.stackTagCompound.copy()); - } - } - } - - return itemstack; - } - - /** - * Returns the size of the recipe area - */ - public int getRecipeSize() - { - return this.recipeWidth * this.recipeHeight; - } - - public CCShapedIgnoreDamageRecipe func_92100_c() - { - this.field_92101_f = true; - return this; - } - - public static CCShapedIgnoreDamageRecipe createRecipe(ItemStack p_92103_1_, Object ... p_92103_2_) - { - StringBuilder sb = new StringBuilder(); - int i = 0; - int j = 0; - int k = 0; - - if (p_92103_2_[i] instanceof String[]) - { - String[] astring = (String[]) p_92103_2_[i++]; - - for (int l = 0; l < astring.length; ++l) - { - String s1 = astring[l]; - ++k; - j = s1.length(); - sb.append(s1); - } - } - else - { - while (p_92103_2_[i] instanceof String) - { - String s2 = (String)p_92103_2_[i++]; - ++k; - j = s2.length(); - sb.append(s2); - } - } - - HashMap hashmap; - - for (hashmap = new HashMap(); i < p_92103_2_.length; i += 2) - { - Character character = (Character)p_92103_2_[i]; - ItemStack itemstack1 = null; - - if (p_92103_2_[i + 1] instanceof Item) - { - itemstack1 = new ItemStack((Item)p_92103_2_[i + 1]); - } - else if (p_92103_2_[i + 1] instanceof Block) - { - itemstack1 = new ItemStack((Block)p_92103_2_[i + 1], 1, 32767); - } - else if (p_92103_2_[i + 1] instanceof ItemStack) - { - itemstack1 = (ItemStack)p_92103_2_[i + 1]; - } - - hashmap.put(character, itemstack1); - } - - ItemStack[] aitemstack = new ItemStack[j * k]; - - for (int i1 = 0; i1 < j * k; ++i1) - { - char c0 = sb.toString().charAt(i1); - - if (hashmap.containsKey(Character.valueOf(c0))) - { - aitemstack[i1] = ((ItemStack)hashmap.get(Character.valueOf(c0))).copy(); - } - else - { - aitemstack[i1] = null; - } - } - - CCShapedIgnoreDamageRecipe shapedrecipes = new CCShapedIgnoreDamageRecipe(j, k, aitemstack, p_92103_1_); - return shapedrecipes; - } -} diff --git a/src/main/java/unstudio/chinacraft/tileentity/TileJadeBench.java b/src/main/java/unstudio/chinacraft/tileentity/TileJadeBench.java index 76dae3c..63ed98d 100644 --- a/src/main/java/unstudio/chinacraft/tileentity/TileJadeBench.java +++ b/src/main/java/unstudio/chinacraft/tileentity/TileJadeBench.java @@ -4,23 +4,19 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import unstudio.chinacraft.common.ChinaCraft; -import unstudio.chinacraft.item.combat.BronzeBroadSword; import unstudio.chinacraft.item.combat.Hammer; -import unstudio.chinacraft.item.jade.Jade; import unstudio.chinacraft.recipes.JadeBenchRecipes; import unstudio.chinacraft.recipes.JadeBenchRecipes.JadeBenchModifyRecipe; import unstudio.chinacraft.recipes.JadeBenchRecipes.JadeBenchOreRecipe; -import unstudio.chinacraft.util.ItemStackHelper; public class TileJadeBench extends TileEntity implements IInventory { - private ItemStack stack[] = new ItemStack[3]; + private ItemStack[] stack = new ItemStack[3]; @Override public int getSizeInventory() { diff --git a/src/main/java/unstudio/chinacraft/util/ItemLoreHelper.java b/src/main/java/unstudio/chinacraft/util/ItemLoreHelper.java index 9692a82..0fa461d 100644 --- a/src/main/java/unstudio/chinacraft/util/ItemLoreHelper.java +++ b/src/main/java/unstudio/chinacraft/util/ItemLoreHelper.java @@ -43,20 +43,19 @@ public static void shiftLoreWithStat(List lores, String itemName){ } } - if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) - if (StatCollector.canTranslate(itemName + ".hidelore")){ + if (Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT)) { + if (StatCollector.canTranslate(itemName + ".hidelore")) { lores.add(""); lores.add(EnumChatFormatting.WHITE + StatCollector.translateToLocal(itemName + ".hidelore")); - } - else { + } else { int i = 1; - while (StatCollector.canTranslate(itemName + ".hidelore." + i)){ - if (i==1) lores.add(""); + while (StatCollector.canTranslate(itemName + ".hidelore." + i)) { + if (i == 1) lores.add(""); lores.add(EnumChatFormatting.WHITE + StatCollector.translateToLocal(itemName + ".hidelore." + i)); i++; } } - else { + } else if (StatCollector.canTranslate(itemName + ".hidelore") || StatCollector.canTranslate(itemName + ".hidelore.1")){ lores.add(""); lores.add(StatCollector.translateToLocal("gui.inventory.shiftfordetail")); } diff --git a/src/main/java/unstudio/chinacraft/util/annotation/ItemBlockRegister.java b/src/main/java/unstudio/chinacraft/util/annotation/ItemBlockRegister.java index f380747..d39c386 100644 --- a/src/main/java/unstudio/chinacraft/util/annotation/ItemBlockRegister.java +++ b/src/main/java/unstudio/chinacraft/util/annotation/ItemBlockRegister.java @@ -2,12 +2,15 @@ import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; +import net.minecraft.block.BlockCrops; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraftforge.oredict.OreDictionary; import unstudio.chinacraft.common.ChinaCraft; import unstudio.chinacraft.common.Recipes; +import unstudio.chinacraft.item.CCCropPlantItem; import unstudio.chinacraft.item.ItemCCSlab; +import unstudio.chinacraft.util.annotation.register.CorpPlant; import unstudio.chinacraft.util.annotation.register.ICollection; import unstudio.chinacraft.util.annotation.register.Register; import unstudio.chinacraft.util.annotation.register.SlabRegister; @@ -88,6 +91,27 @@ public static void register(Class c) { } if (ore != null&&!ore.isEmpty()) OreDictionary.registerOre(ore, (Block) o); } else if (o instanceof Item) { + + if (f.isAnnotationPresent(CorpPlant.class)){ + if (o instanceof CCCropPlantItem) { + CorpPlant ann = f.getAnnotation(CorpPlant.class); + try { + Object obj = c.getField(ann.value()).get(null); + if (obj instanceof Block) { + ((CCCropPlantItem) o).setPlantBlock((Block) obj); + } else { + new IllegalArgumentException(f.getName() + "'s @CorpPlant.value() refers to an none-block field").printStackTrace(); + } + } catch (NoSuchFieldException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } else { + new IllegalArgumentException(f.getName() + " is not a CCCropPlantItem").printStackTrace(); + } + } + //以物品的形式注册 GameRegistry.registerItem((Item) o, name); if (ore != null&&!ore.isEmpty()) OreDictionary.registerOre(ore, (Item) o); diff --git a/src/main/java/unstudio/chinacraft/util/annotation/register/CorpPlant.java b/src/main/java/unstudio/chinacraft/util/annotation/register/CorpPlant.java new file mode 100644 index 0000000..5df68cd --- /dev/null +++ b/src/main/java/unstudio/chinacraft/util/annotation/register/CorpPlant.java @@ -0,0 +1,13 @@ +package unstudio.chinacraft.util.annotation.register; + +import java.lang.annotation.*; + +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface CorpPlant { + /** + * BlockCrops的名字,要求在同一个类中,且public static + */ + String value(); +} diff --git a/src/main/java/unstudio/chinacraft/world/gen/WorldGenBambooShoot.java b/src/main/java/unstudio/chinacraft/world/gen/WorldGenBambooShoot.java new file mode 100644 index 0000000..4286470 --- /dev/null +++ b/src/main/java/unstudio/chinacraft/world/gen/WorldGenBambooShoot.java @@ -0,0 +1,29 @@ +package unstudio.chinacraft.world.gen; + +import net.minecraft.world.World; +import net.minecraft.world.gen.feature.WorldGenFlowers; +import net.minecraft.world.gen.feature.WorldGenerator; +import unstudio.chinacraft.common.ChinaCraft; + +import java.util.Random; + +/** + * Created by Mouse on 2017/4/2. + */ +public class WorldGenBambooShoot extends WorldGenerator{ + @Override + public boolean generate(World world, Random random, int x, int y, int z) { + int x1 = x + random.nextInt(16); + int z1 = z + random.nextInt(16); + int y1 = world.getHeightValue(x1,z1)+1; + int id = world.getBiomeGenForCoords(x1, z1).biomeID; + if ((id == 3 || id == 4 || id == 18 || id == 20 || id == 34 || id == 27 || id == 28 || id == 29) + && random.nextInt(16) == 0) try { + new WorldGenFlowers(ChinaCraft.blockBambooShoot).generate(world, random, x1, y1, z1); + } catch (RuntimeException e) { + //TODO: unknown exception + e.printStackTrace(); + } + return true; + } +} diff --git a/src/main/java/unstudio/chinacraft/world/gen/WorldGenCCFlower.java b/src/main/java/unstudio/chinacraft/world/gen/WorldGenCCFlower.java index b9339c2..958a106 100644 --- a/src/main/java/unstudio/chinacraft/world/gen/WorldGenCCFlower.java +++ b/src/main/java/unstudio/chinacraft/world/gen/WorldGenCCFlower.java @@ -4,42 +4,40 @@ import net.minecraft.block.Block; import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.feature.WorldGenerator; import unstudio.chinacraft.common.ChinaCraft; -import cpw.mods.fml.common.IWorldGenerator; -public class WorldGenCCFlower implements IWorldGenerator { +public class WorldGenCCFlower extends WorldGenerator{ - private void Gen(Random random, int chunkX, int chunkZ, World world, Block block) { - int x = chunkX * 16 + random.nextInt(8) - random.nextInt(8); - int z = chunkZ * 16 + random.nextInt(8) - random.nextInt(8); - int y = world.getHeightValue(x, z) + random.nextInt(4) - random.nextInt(4); + private void gen(Random random, int blockX, int blockZ, World world, Block block) { + int x = blockX + random.nextInt(16); + int z = blockZ + random.nextInt(16); + int y = world.getHeightValue(x, z) +1; if (world.isAirBlock(x, y, z) && block.canBlockStay(world, x, y, z)) world.setBlock(x, y, z, block, 0, 3); } @Override - public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, - IChunkProvider chunkProvider) { + public boolean generate(World world, Random random, int x, int y, int z) { + if (world.provider.dimensionId != 0) return true; + for (int i = 0; i <= 15; i++) { - if (random.nextBoolean()) - if (world.provider.dimensionId == 0) { - int j = random.nextInt(3); - switch (j) { - case 0: - Gen(random, chunkX, chunkZ, world, ChinaCraft.peony); - break; - case 1: - Gen(random, chunkX, chunkZ, world, ChinaCraft.azalea); - break; - case 2: - Gen(random, chunkX, chunkZ, world, ChinaCraft.chrysanthemum); - break; - } + int j = random.nextInt(3); + switch (j) { + case 0: + gen(random, x, z, world, ChinaCraft.peony); + break; + case 1: + gen(random, x, z, world, ChinaCraft.azalea); break; - } + case 2: + gen(random, x, z, world, ChinaCraft.chrysanthemum); + break; + + } } + return true; } } diff --git a/src/main/java/unstudio/chinacraft/world/gen/WorldGenListener.java b/src/main/java/unstudio/chinacraft/world/gen/WorldGenListener.java index a64ec4e..bcbe0bd 100644 --- a/src/main/java/unstudio/chinacraft/world/gen/WorldGenListener.java +++ b/src/main/java/unstudio/chinacraft/world/gen/WorldGenListener.java @@ -14,7 +14,9 @@ public class WorldGenListener{ private final WorldGenCCOre WORLD_GEN_TIN_ORE = new WorldGenCCOre(new int[]{0},10,64,0,8, ChinaCraft.tinOre); private final WorldGenCCOre WORLD_GEN_SILVER_ORE = new WorldGenCCOre(new int[]{0},4,32,0,8, ChinaCraft.silverOre); private final WorldGenCCOre WORLD_GEN_JADE_ORE = new WorldGenCCOre(new int[]{0},4,64,32,4, ChinaCraft.jadeOre); - //private final WorldGenCCOre WORLD_GEN_MARBLE_ORE = new WorldGenCCOre(new int[]{0},4,32,0,8, ChinaCraft.blockMarble); + private final WorldGenCCOre WORLD_GEN_MARBLE_ORE = new WorldGenCCOre(new int[]{0},1,128,32,48, ChinaCraft.blockMarble); + private final WorldGenCCFlower WORLD_GEN_CC_FLOWER = new WorldGenCCFlower(); + private final WorldGenBambooShoot WORLD_GEN_BAMBOO_SHOOT = new WorldGenBambooShoot(); public WorldGenListener() { @@ -27,6 +29,8 @@ public void onOreGenPost(OreGenEvent.Post event){ WORLD_GEN_TIN_ORE.generate(event.world,event.rand,event.worldX,0,event.worldZ); WORLD_GEN_SILVER_ORE.generate(event.world,event.rand,event.worldX,0,event.worldZ); WORLD_GEN_JADE_ORE.generate(event.world,event.rand,event.worldX,0,event.worldZ); - //WORLD_GEN_MARBLE_ORE.generate(event.world,event.rand,event.worldX,0,event.worldZ); + WORLD_GEN_MARBLE_ORE.generate(event.world,event.rand,event.worldX,0,event.worldZ); + WORLD_GEN_CC_FLOWER.generate(event.world,event.rand,event.worldX,0,event.worldZ); + WORLD_GEN_BAMBOO_SHOOT.generate(event.world,event.rand,event.worldX,0,event.worldZ); } } diff --git a/src/main/resources/assets/chinacraft/lang/en_US.lang b/src/main/resources/assets/chinacraft/lang/en_US.lang index c57a849..c8cdff9 100644 --- a/src/main/resources/assets/chinacraft/lang/en_US.lang +++ b/src/main/resources/assets/chinacraft/lang/en_US.lang @@ -1,33 +1,45 @@ -tile.bronze_block.name=Bronze Block +tile.bronze_block.name=Block of Bronze item.bronze_ingot.name=Bronze Ingot -item.copper_tin_mixed_powder.name=Copper & Tin Mixed Powder +item.copper_tin_mixed_powder.name=Copper-Tin Mixture item.bronze_sword.name=Bronze Sword -item.bronze_bigsword.name=Bronze Big Sword -item.bronze_bigsword_green.name=Bronze Big Sword - §2Fei Cui Jade -item.bronze_bigsword_green2.name=Bronze Big Sword - §aJasper -item.bronze_bigsword_pink.name=Bronze Big Sword - §dRoss quartz -item.bronze_bigsword_purple.name=Bronze Big Sword - §5Purple Jade -item.yanlung_giantknife.name=BL Giant Sword -item.yanlung_giantknife.lore=If the entity is attacked, the entity will burn +item.bronze_bigsword.name=Big Bronze Sword +item.bronze_bigsword_green.name=Big Bronze Sword - §2Jade +item.bronze_bigsword_green2.name=Big Bronze Sword - §aJasper +item.bronze_bigsword_pink.name=Big Bronze Sword - §dRoss quartz +item.bronze_bigsword_purple.name=Big Bronze Sword - §5Purple Jade +item.yanlung_giantknife.name=Giant Sword of Blazing Dragon +item.yanlung_giantknife.lore=Burn target upon being attacked item.jiuqu_tang.name=Jiu Qu Sword item.mace.name=Mace -item.mace.lore=Make the aggressor dizziness +item.mace.lore=Chance to cause crit +item.buddhist_monks_knife.name=Buddhist Monk's Knife +item.buddhist_monks_knife.lore=Cause huge damage while attacking a thick armor +item.crash_buddhist_monks_knife.name=Strong Buddhist Monk's Knife +item.crash_buddhist_monks_knife.lore=Cause huge damage while attacking a thick armor +item.joint_staff.name=Joint Staff +item.joint_staff.lore=Cause range damage item.super_bow.name=Powerful Bow item.bronze_axe.name=Bronze Axe item.bronze_pickaxe.name=Bronze Pickaxe item.bronze_hoe.name=Bronze Hoe item.bronze_shovel.name=Bronze Shovel item.bronze_helmet.name=Bronze Helmet -item.bronze_body.name=Bronze Body -item.bronze_legs.name=Bronze Legs +item.bronze_body.name=Bronze Chestplate +item.bronze_legs.name=Bronze Leggings item.bronze_boots.name=Bronze Boots item.night_clothes_head.name=Night Clothes Helmet item.night_clothes_body.name=Night Clothes Body item.night_clothes_leg.name=Night Clothes Legs item.night_clothes_shoe.name=Night Clothes Boots item.nightclothes.lore=Night is coming, the world is in your control -item.nightclothes.hidelore.1=Wear complete set can make you more light , and you can double jump at air. -item.nightclothes.hidelore.2=And keep pressing SHIFT can you invisible at night +item.nightclothes.hidelore.1=Full suit will give the following effects: +item.nightclothes.hidelore.2=Double-jump while falling +item.nightclothes.hidelore.3=Being invisible while sneaking +item.cassock.name=Cassock +item.cassock.lore=The hope of reborn +item.cassock.hidelore.1=While causing fatal injuries: +item.cassock.hidelore.2=Will heal half of the value of life +item.cassock.hidelore.3=Cassock will be destroyed item.hammer_diamond.name=Diamond Hammer item.hammer_iron.name=Iron Hammer item.hammer_bronze.name=Bronze Hammer @@ -36,44 +48,44 @@ item.jade_knife.name=Jade Cutting Knife item.jade_knife.hidelore=Throwable, damage 1, can't be pick up item.art_knife.name=Art Cutting Knife item.art_knife.hidelore=Use item to the lantern scaldfish, can make it smaller! -item.buddhist_cane.name=Buddhist monk's staff -item.buddhist_cane.lore=The staff which was from Buddhism is filled with life and hop -item.buddhist_cane.hidelore.1=Attack entity to heal it -item.buddhist_cane.hidelore.2=Keeping using this can heal the players around you -item.buddhist_cane.hidelore.3=Break some block such as grass, leaves and so on can repair this -item.spiritual_magic_figures.name=Spiritual Magic Paper -item.spiritual_magic_figures_fire.name=Fire Spiritual Magic Paper -item.spiritual_magic_figures_fire.lore=To Make Entity be Burn -item.spiritual_magic_figures_power.name=Power Spiritual Magic Paper -item.spiritual_magic_figures_poison.name=Poison Spiritual Magic Paper -item.spiritual_magic_figures_night_vision.name=Night Vision Spiritual Magic Paper -item.spiritual_magic_figures_heal.name=Heal Spiritual Magic Paper -item.spiritual_magic_figures_protect.name=Protect Spiritual Magic Paper -item.SMFSuper.name=Mess Figures +item.buddhist_cane.name=Staff of Buddhist Monk +item.buddhist_cane.lore=The Buddhism staff, filling with essence of life +item.buddhist_cane.hidelore.1=Heal target upon attack +item.buddhist_cane.hidelore.2=Can heal surrounding players while being used +item.buddhist_cane.hidelore.3=Can be healed upon breaking grass, leaves or the alike +item.spiritual_magic_figures.name=Spirit Spell +item.spiritual_magic_figures_fire.name=Spirit Spell of Flame +item.spiritual_magic_figures_fire.lore=Let entity burn +item.spiritual_magic_figures_power.name=Spirit Spell of Power +item.spiritual_magic_figures_poison.name=Spirit Spell of Poison +item.spiritual_magic_figures_night_vision.name=Spirit Spell of Night Vision +item.spiritual_magic_figures_heal.name=Spirit Spell of Regeneration +item.spiritual_magic_figures_protect.name=Spirit Spell of Protection +item.SMFSuper.name=Chaotic Spell item.debug.name=Debug -item.xinjiang_nut_cake.name=XinJiang Nut Cake +item.xinjiang_nut_cake.name=Xinjiang Nut Cake item.china_crown.name=Crown -item.chinacrown.lore=Symbol of rights -item.chinacrown.hidelore=Get power potion effect +item.chinacrown.lore=Symbol of the Power +item.chinacrown.hidelore=Under three times the damage and cause double damage tile.xinjiang_nut_cake.name=Xinjiang Nut Cake item.apple_cake.name=Apple Cake tile.apple_cake.name=Apple Cake item.firecracker.name=Firecracker item.firecracker.hidelore=All the firecracker will be thrown if you are sneaking -item.bomb.name=Thrown Bomb +item.bomb.name=Throwable Bomb item.flying_cutter.name=Fly-cutter -item.flying_cutter.lore=A knife, an injured +item.flying_cutter.lore=As sharp as dank item.flying_cutter.hidelore=Throwable, damage 4, can be pick up tile.tin_ore.name=Tin Ore item.tin_ingot.name=Tin Ingot -item.tin_powder.name=Tin Power +item.tin_powder.name=Tin Powder tile.silver_ore.name=Silver Ore item.silver_ingot.name=Silver Ingot tile.silver_block.name=Silver Block item.copper_ingot.name=Copper Ingot -item.copper_powder.name=Copper Power +item.copper_powder.name=Copper Powder tile.copper_ore.name=Copper Ore tile.copper_block.name=Copper Block item.bronze_ingot.name=Bronze Ingot @@ -81,10 +93,11 @@ tile.jade_ore.name=Jade Ore item.jade.lore=Level: tile.bamboo.name=Bamboo -tile.bamboo_plank.name=Bamboo Planks +tile.bamboo_plank.name=Bamboo Plank item.bamboo.name=Bamboo tile.bamboo_shoot.name=Bamboo Shoot item.bamboo_shoot.name=Bamboo Shoot +tile.peeled_bamboo_window.name=Peeled Bamboo Plank tile.azalea.name=Azalea tile.bean_bracket.name=Bean Bracket @@ -93,14 +106,14 @@ tile.chrysanthemum.name=Chrysanthemum tile.glutinous_rice.name=Glutinous Rice item.glutinous_rice.name=Glutinous Rice tile.peony.name=Peony -tile.prunus_mume_branch.name=Prunus Mume Branch -tile.prunus_mume_wood.name=Prunus Mume Sapling +tile.prunus_mume_branch.name=Chinese Plum Branch +tile.prunus_mume_wood.name=Chinese Plum Sapling tile.reed.name=Reed -tile.jasmine_bush.name=Jasmine shrub -tile.prunus_mume_sapling=Prunus Mume Sapling +tile.jasmine_bush.name=Jasmine Shrub +tile.prunus_mume_sapling=Chinese Plum Sapling tile.tea_bush=Tea Bush -tile.wooden_window.name=Wood pane +tile.wooden_window.name=Wood Pane tile.mulberry_log.name=Mulberry Log tile.mulberry_leaf.name=Mulberry Leaf @@ -109,14 +122,18 @@ tile.mulberry_sapling.name=Mulberry Sapling tile.mulberry_wood.name=Mulberry Wood tile.marble.name=Marble +tile.marble_wall.name=Marble Wall tile.smooth_marble.name=Smooth Marble -tile.pillar_marble.name=Pillar Marble +tile.pillar_marble.name=Marble Pillar tile.chiseled_marble.name=Chiseled Marble tile.marble_slab.name=Marble Slab tile.marble_stair.name=Marble Stair tile.firebrick.name=Firebrick item.blackbrick.name=Black Brick tile.blackbrick_block.name=Black Brick +tile.blackbrick_mossy_block.name=Mossy Black Brick +tile.blackbrick_wall.name=Black Brick Wall +tile.blackbrick_blacker_block.name=Blacker Black Brick tile.blackbrick_slab.name=Black Brick Slab tile.blackbrick_stair.name=Black Brick Stair @@ -134,11 +151,12 @@ item.wooden_bucket.name=Wooden Bucket item.wooden_bucket_water.name=Water Wooden Bucket item.wooden_bucket.opps=Opps, the wooden bucket on fire -item.bucket_salt.name=A Bucket of salt +item.bucket_salt.name=Bucket of Salt item.salt_powder.name=Salt -item.doujiang_bucket.name=Soya-bean milk +item.doujiang_bucket.name=Bucket of Soybean Milk item.rices.name=Rices -item.lcker.name=Lcker +tile.rice.name=Rice +item.lcker.name=Rice Ear item.soy.name=Soy item.soy_pod.name=Pod item.cocoa.name=Cocoa Powder @@ -149,6 +167,11 @@ item.flour.name=Flour item.rice_flour.name=Rice Flour item.barley_rice.name=Barley Rice +tile.wooden_bucket.name=Wooden Bucket +item.wooden_bucket.name=Wooden Bucket +item.wooden_bucket_water.name=Wooden Water Bucket +item.wooden_bucket.opps=Oops, it's on fire, oh no it's now ashes... + item.silkworm_chrysalis.name=Silkworm Chrysalis item.silkworm_young.name=Young Silkworm item.silkworm_graine.name=Silkworm Graine @@ -156,18 +179,18 @@ item.silkworm_dead.name=Dead Silkworm item.sericulture_frame.name=Sericulture frame tile.sericulture_frame.name=Sericulture frame gui.sericulture_frame.title=Sericulture frame -gui.sericulture_frame.stopWork.lowLight.info=Need More Light! -gui.sericulture_frame.stopWork.highLight.info=Too Much Light! -gui.sericulture_frame.stopWork.biome.info=Bad Biome! -gui.sericulture_frame.stopWork.outputSlotFull.info=Output Slot is full! -gui.sericulture_frame.outputSlotStucks.info=Output Slot Stucks! -gui.sericulture_frame.noMulberryLeaf.info=No Mulberry Leaf! -gui.sericulture_frame.noRainProtection.info=No Rain Protection! -tooltip.progress.info=Progress: -tooltip.generation.info=Generation: -tooltip.productivity.info=Productivity: -tooltip.speed.info=Speed: -tooltip.fertility.info=Fertility: +gui.sericulture_frame.stopWork.lowLight.info=Need more light! +gui.sericulture_frame.stopWork.highLight.info=Too much light! +gui.sericulture_frame.stopWork.biome.info=Hostile biome! +gui.sericulture_frame.stopWork.outputSlotFull.info=No output space! +gui.sericulture_frame.outputSlotStucks.info=Output is stucked! +gui.sericulture_frame.noMulberryLeaf.info=No mulberry leaf! +gui.sericulture_frame.noRainProtection.info=Need some sort of rain-proof structure! +tooltip.progress.info=Progress: +tooltip.generation.info=Generation: +tooltip.productivity.info=Productivity: +tooltip.speed.info=Speed: +tooltip.fertility.info=Fertility: item.moth.male.name=Male moth item.moth.female.name=Female moth @@ -205,12 +228,12 @@ nei.gui.buhrimill.title=Buhrimill Recipes nei.gui.buhrimill.rotime.info=%.1fround waila.empty.info=None Input waila.invalidInput.info=Invalid Input! -waila.progress.info=Progress: +waila.progress.info=Progress: -gui.jade_bench.title=Jade Work Table -tile.jade_table.name=Jade Work Table +gui.jade_bench.title=Jade Workbench +tile.jade_table.name=Jade Workbench gui.jade_table.info=Jade Information -nei.gui.jadebench.title=Jade Worktable Recipes +nei.gui.jadebench.title=Jade Workbench nei.jadebench.output.info=Outputs: tile.cooking_bench.name=Furnace Platform @@ -220,14 +243,14 @@ tile.blockfirebrick.title=Firebrick item.firebrick.name=Firebrick item.clay_sand_mixture.name=Clay Sand Mixture -item.jade_green.name=§2Fei Cui Jade§r +item.jade_green.name=§2Jade§r item.jade_green2.name=§aJasper§r item.jade_pink.name=§dRoss quartz§r item.jade_purple.name=§5Purple Jade§r -itemGroup.core=Chinese Civilization-Core -itemGroup.tool=Chinese Civilization-Tools -itemGroup.farming=Chinese Civilization-Farming +itemGroup.core=Chinese Civilization - Core +itemGroup.tool=Chinese Civilization - Tools +itemGroup.farming=Chinese Civilization - Farming debug.firstline=Debug Tool: debug.blockinfo=Block Info @@ -254,20 +277,20 @@ record.the_march_of_the_volunteers=March of the Volunteers record.spring_festival_overture=Spring festival Overture splashText.spring.1=Happy Spring Festival! -splashText.spring.2=Best wishes for you and your family. -splashText.spring.3=Happy Spring Festival! +splashText.spring.2=Best wishes to you as well as your family. +splashText.spring.3=Happy Chinese New Year! item.redpacket.name=Red Packet gui.redpacket.title=Red Packet gui.redpacket.wash=Please enter a blessing... -gui.redpacket.sendee=Sendee: +gui.redpacket.sendee=Send to: gui.redpacket.from=From %s's Red Packet gui.redpacket.pack=Pack gui.redpacket.send=Send redpacket.success=Successfully send a Red Packet to %s. -redpacket.not_found_player=Failed: Can't find Player %s! -redpacket.backpack_full=Failed: %s's Backpack is full! -redpacket.received=You received a red Red Packet.! +redpacket.not_found_player=Failed: Can't find player %s! +redpacket.backpack_full=Failed: %s's inventory is full! +redpacket.received=You received a Red Packet.! gui.inventory.shiftfordetail=§7§o @@ -278,4 +301,4 @@ entity.panda.name=Panda VersionChecker.perfix=Found New Version!Click to Download. VersionChecker.version=Latest Version: !new ,Currect Version: !old . -death.attack.continuedLife=%1$s lost his life in order to heal other creature \ No newline at end of file +death.attack.continuedLife=%1$s lost his life in order to heal other creature diff --git a/src/main/resources/assets/chinacraft/lang/zh_CN.lang b/src/main/resources/assets/chinacraft/lang/zh_CN.lang index 40e4d27..e9a8822 100644 --- a/src/main/resources/assets/chinacraft/lang/zh_CN.lang +++ b/src/main/resources/assets/chinacraft/lang/zh_CN.lang @@ -13,7 +13,13 @@ item.yanlung_giantknife.name=炎龙巨刀 item.yanlung_giantknife.lore=被攻击的实体将会被燃烧 item.jiuqu_tang.name=九曲镋 item.mace.name=狼牙棒 -item.mace.lore=使被攻击者眩晕 +item.mace.lore=有很大的几率会造成暴击 +item.buddhist_monks_knife.name=戒刀 +item.buddhist_monks_knife.lore=面对越厚重的盔甲,攻击力越高 +item.crash_buddhist_monks_knife.name=破戒戒刀 +item.crash_buddhist_monks_knife.lore=面对越厚重的盔甲,攻击力越高 +item.joint_staff.name=水磨禅杖 +item.joint_staff.lore=造成范围伤害 item.super_bow.name=强力弓 item.bronze_axe.name=青铜斧 item.bronze_pickaxe.name=青铜稿 @@ -31,6 +37,11 @@ item.nightclothes.lore=窃以无形,行如飞马 item.nightclothes.hidelore.1=穿上全套可以获得以下效果 item.nightclothes.hidelore.2=更加轻盈,在低速下落时可以在空中进行二段跳 item.nightclothes.hidelore.3=夜晚时按住 SHIFT 可以完全隐身(饱食度要大于14) +item.cassock.name=袈裟 +item.cassock.lore=重生的希望 +item.cassock.hidelore.1=造成致命伤害时: +item.cassock.hidelore.2=会回复一半的生命值 +item.cassock.hidelore.3=袈裟会被损坏 item.hammer_diamond.name=钻石锤子 item.hammer_iron.name=铁锤子 item.hammer_bronze.name=青铜锤子 @@ -56,10 +67,9 @@ item.SMFSuper.name=混沌符 item.debug.name=调试 item.china_crown.name=冕冠 -item.chinacrown.lore=权利的象征 -item.chinacrown.hidelore=获得 力量 效果 +item.chinacrown.lore=权力的象征 +item.chinacrown.hidelore=承受三倍的伤害造成双倍伤害 item.xinjiang_nut_cake.name=切糕 -tile.xinjiang_nut_cake.name=切糕 item.apple_cake.name=苹果糕 tile.apple_cake.name=苹果糕 item.firecracker.name=鞭炮 @@ -89,7 +99,9 @@ tile.bamboo_fence_gate.name=竹制栅栏门 tile.bamboo_plank.name=竹板 tile.bamboo_shoot.name=竹笋 item.bamboo.name=竹子 +item.peeled_bamboo.name=已杀青的竹子 item.bamboo_shoot.name=竹笋 +tile.peeled_bamboo_plank.name=已杀青的竹板 tile.azalea.name=映山红 tile.beanBracket.name=作物支架 @@ -106,6 +118,7 @@ tile.prunusMumeSapling=梅花树苗 tile.teaBush=茶树 tile.wooden_window.name=木窗格 +tile.bamboo_window.name=竹窗格 tile.mulberry_log.name=桑树原木 tile.mulberry_leaf.name=桑叶 @@ -114,6 +127,7 @@ tile.mulberry_sapling.name=桑树苗 tile.mulberry_wood.name=桑木板 tile.marble.name=大理石 +tile.marble_wall.name=大理石墙 tile.smooth_marble.name=平滑大理石块 tile.pillar_marble.name=条纹大理石块 tile.chiseled_marble.name=錾制大理石块 @@ -121,7 +135,10 @@ tile.marble_slab.name=大理石半砖 tile.marble_stair.name=大理石楼梯 tile.firebrick.name=耐火砖 item.blackbrick.name=青砖 -tile.blackbrick_block.name=青砖 +tile.blackbrick_block.name=青砖块 +tile.blackbrick_wall.name=青砖墙 +tile.blackbrick_mossy_block.name=苔石青砖 +tile.blackbrick_blacker_block.name=深色青砖块 tile.blackbrick_slab.name=青砖半砖 tile.blackbrick_stair.name=青砖楼梯 @@ -138,6 +155,7 @@ item.bucket_salt.name=盐桶 item.salt_powder.name=盐 item.doujiang_bucket.name=豆浆桶 item.rices.name=大米 +tile.rice.name=大米 item.lcker.name=米穗 item.soy.name=大豆 tile.soy.name=大豆 @@ -153,7 +171,7 @@ item.barley_rice.name=麦仁 tile.wooden_bucket.name=木桶 item.wooden_bucket.name=木桶 item.wooden_bucket_water.name=木水桶 -item.wooden_bucket.opps=Opps , 木桶着火了 , oh , 他烧成了灰烬 +item.wooden_bucket.opps=木桶着火了,等等,它烧成了灰烬 item.silkworm_chrysalis.name=蚕蛹 item.silkworm_young.name=幼蚕 diff --git a/src/main/resources/assets/chinacraft/lang/zh_TW.lang b/src/main/resources/assets/chinacraft/lang/zh_TW.lang index 6f4774f..3b3b2ae 100644 --- a/src/main/resources/assets/chinacraft/lang/zh_TW.lang +++ b/src/main/resources/assets/chinacraft/lang/zh_TW.lang @@ -13,7 +13,13 @@ item.yanlung_giantknife.name=炎龍巨刀 item.yanlung_giantknife.lore=被攻擊的實體將會被燃燒 item.jiuqu_tang.name=九曲钂 item.mace.name=狼牙棒 -item.mace.lore=使被攻擊者眩暈 +item.mace.lore=有很大的幾率會造成暴擊 +item.buddhist_monks_knife.name=戒刀 +item.buddhist_monks_knife.lore=面對越厚重的盔甲,攻擊力越高 +item.crash_buddhist_monks_knife.name=破戒戒刀 +item.crash_buddhist_monks_knife.lore=面對越厚重的盔甲,攻擊力越高 +item.joint_staff.name=水磨禅杖 +item.joint_staff.lore=造成范围伤害 item.super_bow.name=强力弓 item.bronze_axe.name=青銅斧 item.bronze_pickaxe.name=青銅稿 @@ -31,6 +37,11 @@ item.nightclothes.lore=竊以無形,行如飛馬 item.nightclothes.hidelore.1=穿上全套可以獲得以下效果 item.nightclothes.hidelore.2=更加輕盈,在低速下落時可以在空中進行二段跳 item.nightclothes.hidelore.3=夜晚時按住SHIFT可以完全隱身(飽食度要大於14) +item.cassock.name=袈裟 +item.cassock.lore=重生的希望 +item.cassock.hidelore.1=造成致命傷害時: +item.cassock.hidelore.2=會回復一半的生命值 +item.cassock.hidelore.3=袈裟會被損壞 item.hammer_diamond.name=鑽石錘子 item.hammer_iron.name=鐵錘子 item.hammer_bronze.name=青銅錘子 @@ -56,7 +67,7 @@ item.SMFSuper.name=混沌符 item.debug.name=調試 item.china_crown.name=冕冠 item.chinacrown.lore=權利的象徵 -item.chinacrown.hidelore=獲得力量效果 +item.chinacrown.hidelore=承受三倍的傷害造成雙倍傷害 item.xinjiang_nut_cake.name=切糕 tile.xinjiang_nut_cake.name=切糕 item.apple_cake.name=蘋果糕 @@ -79,10 +90,12 @@ item.bronze_ingot.name=青銅錠 tile.jade_ore.name=玉原石 item.jade.lore=等級: tile.bamboo.name=竹子 +item.peeled_bamboo.name=已杀青的竹子 tile.bamboo_plank.name=竹板 tile.bamboo_shoot.name=竹笋 item.bamboo.name=竹子 item.bamboo_shoot.name=竹笋 +tile.peeled_bamboo_window.name=已杀青的竹板 tile.azalea.name=映山紅 tile.beanBracket.name=作物支架 tite.benincasa_pruriens.name=冬瓜 @@ -103,6 +116,7 @@ item.mulberry_leaf.name=桑葉 tile.mulberry_sapling.name=桑樹苗 tile.mulberry_wood.name=桑木板 tile.marble.name=大理石 +tile.marble_wall.name=大理石墙 tile.smooth_marble.name=平滑大理石塊 tile.pillar_marble.name=條紋大理石塊 tile.chiseled_marble.name=鏨制大理石塊 @@ -111,6 +125,9 @@ tile.marble_stair.name=大理石樓梯 tile.firebrick.name=耐火磚 item.blackbrick.name=青磚 tile.blackbrick_block.name=青磚 +tile.blackbrick_wall.name=青磚墙 +tile.blackbrick_mossy_block.name=苔石青磚 +tile.blackbrick_blacker_block.name=深色青磚块 tile.blackbrick_slab.name=青磚半磚 tile.blackbrick_stair.name=青磚樓梯 tile.potterytable.name=陶瓷工作臺 diff --git a/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_blacker_block.png b/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_blacker_block.png new file mode 100644 index 0000000..430dd38 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_blacker_block.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_block_mossy.png b/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_block_mossy.png new file mode 100644 index 0000000..65232c4 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/blackbrick_block_mossy.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_plank.png b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_plank.png new file mode 100755 index 0000000..e53bf4b Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_plank.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_1.png b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_1.png new file mode 100755 index 0000000..f65eb84 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_1.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_2.png b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_2.png new file mode 100755 index 0000000..ef304c3 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_2.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_3.png b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_3.png new file mode 100755 index 0000000..62e14d0 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_3.png differ diff --git a/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_top.png b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_top.png new file mode 100644 index 0000000..09e4d10 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/blocks/peeled_bamboo_window_top.png differ diff --git a/src/main/resources/assets/chinacraft/textures/entity/sweep.png b/src/main/resources/assets/chinacraft/textures/entity/sweep.png new file mode 100644 index 0000000..7ab002d Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/entity/sweep.png differ diff --git "a/src/main/resources/assets/chinacraft/textures/items/\346\210\222\345\210\200.png" b/src/main/resources/assets/chinacraft/textures/items/buddhist_monks_knife.png similarity index 100% rename from "src/main/resources/assets/chinacraft/textures/items/\346\210\222\345\210\200.png" rename to src/main/resources/assets/chinacraft/textures/items/buddhist_monks_knife.png diff --git a/src/main/resources/assets/chinacraft/textures/items/cassock.png b/src/main/resources/assets/chinacraft/textures/items/cassock.png new file mode 100644 index 0000000..1bdc4e2 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/items/cassock.png differ diff --git "a/src/main/resources/assets/chinacraft/textures/items/\347\240\264\346\210\222\346\210\222\345\210\200.png" b/src/main/resources/assets/chinacraft/textures/items/crash_buddhist_monks_knife.png similarity index 100% rename from "src/main/resources/assets/chinacraft/textures/items/\347\240\264\346\210\222\346\210\222\345\210\200.png" rename to src/main/resources/assets/chinacraft/textures/items/crash_buddhist_monks_knife.png diff --git "a/src/main/resources/assets/chinacraft/textures/items/\346\260\264\347\243\250\347\246\205\346\235\226.png" b/src/main/resources/assets/chinacraft/textures/items/joint_staff.png similarity index 100% rename from "src/main/resources/assets/chinacraft/textures/items/\346\260\264\347\243\250\347\246\205\346\235\226.png" rename to src/main/resources/assets/chinacraft/textures/items/joint_staff.png diff --git a/src/main/resources/assets/chinacraft/textures/items/peeled_bamboo.png b/src/main/resources/assets/chinacraft/textures/items/peeled_bamboo.png new file mode 100644 index 0000000..ae06a46 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/items/peeled_bamboo.png differ diff --git a/src/main/resources/assets/chinacraft/textures/models/armor/_cassock.png b/src/main/resources/assets/chinacraft/textures/models/armor/_cassock.png new file mode 100644 index 0000000..4e77277 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/models/armor/_cassock.png differ diff --git a/src/main/resources/assets/chinacraft/textures/models/armor/cassock.png b/src/main/resources/assets/chinacraft/textures/models/armor/cassock.png new file mode 100644 index 0000000..ef5e1c6 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/models/armor/cassock.png differ diff --git a/src/main/resources/assets/chinacraft/textures/models/entity/bomb.png b/src/main/resources/assets/chinacraft/textures/models/entity/bomb.png new file mode 100644 index 0000000..3facd73 Binary files /dev/null and b/src/main/resources/assets/chinacraft/textures/models/entity/bomb.png differ diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index 5adf78b..32ae152 100644 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,11 +3,15 @@ "modid": "chinacraft", "name": "ChinaCraft", "description": "A mod with Chinese features.", +<<<<<<< HEAD "version": "Beta 0.3.202", +======= + "version": "Beta 0.4.206", +>>>>>>> dev "mcversion": "1.7.10", "url": "http://mccraft.cn/project/chinacraft", "updateUrl": "", - "authorList": ["Mouse","Trychen","Huangshize","Mcdarc","Lasm_Gratel"], + "authorList": ["Mouse","Trychen","Huangshize","Mcdarc","Lasm_Gratel", "and so on, more see url.(no order)"], "logoFile": "assets/chinacraft/logo.png", "screenshots": [], "dependencies": []