OSDN Git Service

誰かEntityAtomGrenadeを登録してくれ...
authormozipi <mozipi@users.sourceforge.jp>
Thu, 3 Jan 2013 06:54:58 +0000 (15:54 +0900)
committermozipi <mozipi@users.sourceforge.jp>
Thu, 3 Jan 2013 06:54:58 +0000 (15:54 +0900)
common/chemicraft/ChemiCraft.java
common/chemicraft/block/BlockChemicalCombinationTable.java
common/chemicraft/container/ContainerChemicalCombinationTable.java
common/chemicraft/gui/GuiChemicalCombinationTable.java
common/chemicraft/render/RenderAtomsGrenade.java [new file with mode: 0644]
common/chemicraft/tileentity/TileEntityChemicalCombinationTable.java
src/chemicraft/client/ClientProxy.java

index faef936..fa5465e 100644 (file)
@@ -14,6 +14,7 @@ import chemicraft.block.BlockToolAndWeaponCraftingTable;
 import chemicraft.debug.CommandDeleteItem;\r
 import chemicraft.debug.CommandGenDebugRoom;\r
 import chemicraft.debug.CommandSetTile;\r
+import chemicraft.entity.EntityAtomGrenade;\r
 import chemicraft.item.ItemAtomGrenade;\r
 import chemicraft.item.ItemAtoms;\r
 import chemicraft.item.ItemCompounds;\r
@@ -36,6 +37,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent;
 import cpw.mods.fml.common.event.FMLServerStartingEvent;\r
 import cpw.mods.fml.common.network.NetworkMod;\r
 import cpw.mods.fml.common.network.NetworkRegistry;\r
+import cpw.mods.fml.common.registry.EntityRegistry;\r
 import cpw.mods.fml.common.registry.GameRegistry;\r
 \r
 /**\r
@@ -267,6 +269,10 @@ public class ChemiCraft {
                //Textureをpreloadします\r
                proxy.registerTextures();\r
 \r
+               //Entityを追加します\r
+               EntityRegistry.registerModEntity(EntityAtomGrenade.class, "EntityAtomGrenade", 1, this, 250, 5, false);\r
+               EntityRegistry.registerGlobalEntityID(EntityAtomGrenade.class, "EntityAtomGrenade", 220);\r
+\r
                //化学作業台類のレシピを追加します\r
                GameRegistry.addRecipe(new ItemStack(this.blockDecompositionTable),\r
                                new Object[]{\r
index bc0a05a..8769f9a 100644 (file)
@@ -1,5 +1,6 @@
 package chemicraft.block;
 
+import cpw.mods.fml.common.network.PacketDispatcher;
 import chemicraft.ChemiCraft;
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 import net.minecraft.src.BlockContainer;
@@ -16,7 +17,7 @@ public class BlockChemicalCombinationTable extends BlockContainer {
        }
 
        @Override
-       public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9){
+       public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) {
                par5EntityPlayer.openGui(ChemiCraft.instance, ChemiCraft.instance.guiChemicalCombinationTableID, par1World, par2, par3, par4);
                return true;
        }
@@ -24,15 +25,31 @@ public class BlockChemicalCombinationTable extends BlockContainer {
 
 
        @Override
-       public String getTextureFile(){
+       public String getTextureFile() {
                return ChemiCraft.instance.blockChemicalCraftingTableTexture;
        }
 
 
 
+       public void onNeighborBlockChange(World par1World, int par2, int par3, int par4, int par5) {
+               if (!par1World.isRemote) {
+                       boolean var7 = par1World.isBlockIndirectlyGettingPowered(par2, par3, par4);
+                       if(var7) {
+                               TileEntityChemicalCombinationTable tileentity;
+                               try {
+                                       tileentity = (TileEntityChemicalCombinationTable) par1World.getBlockTileEntity(par2, par3, par4);
+                               } catch(ClassCastException e) {
+                                       return;
+                               }
+                               tileentity.setProvidePower(true);
+                       }
+               }
+       }
+
+
+
        @Override
-       public int getBlockTextureFromSide(int par1)
-       {
+       public int getBlockTextureFromSide(int par1) {
                if(par1 == 0){
                        return 17;
                }else if(par1 == 1){
index d845741..e671966 100644 (file)
@@ -57,9 +57,9 @@ public class ContainerChemicalCombinationTable extends Container {
                this.invm = this.tileentity.getInvMaterial();
                this.invr = this.tileentity.getInvResult();
 
-               for(int i = 0;i < 4;i++){
-                       for(int j = 0;j < 4;j++){
-                               this.addSlotToContainer(new SlotChemicalCombinationTableMaterial(this.invm, i * 4 + j, i * 18 + 16, j * 18 + 8));
+               for(int i = 0;i < 5;i++){
+                       for(int j = 0;j < 3;j++){
+                               this.addSlotToContainer(new SlotChemicalCombinationTableMaterial(this.invm, i * 3 + j, i * 18 + 16, j * 18 + 15));
                        }
                }
                this.addSlotToContainer(new SlotChemicalCombinationTableResult(invr, 0, 123, 34));
@@ -70,19 +70,21 @@ public class ContainerChemicalCombinationTable extends Container {
                {
                        for (int var4 = 0; var4 < 9; ++var4)
                        {
-                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 85 + var3 * 18));
+                               this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var4 + var3 * 9 + 9, 8 + var4 * 18, 121 + var3 * 18));
                        }
                }
 
                for (var3 = 0; var3 < 9; ++var3)
                {
-                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 143));
+                       this.addSlotToContainer(new Slot(par1EntityPlayer.inventory, var3, 8 + var3 * 18, 179));
                }
 
                this.invm.setEventHandler(this);
                this.onCraftMatrixChanged(invm);
        }
 
+
+
        @Override
        public void onCraftMatrixChanged(IInventory par1IInventory){
                this.invr.setInventorySlotContents(0, ChemiCraftAPI.getInstance().getCraftingManager().getChemicalCombinationResult(this.tileentity.getAtomsList(), this.tileentity.getAtomsAmountList()));
index 6fac8dc..b6d2114 100644 (file)
@@ -26,16 +26,17 @@ public class GuiChemicalCombinationTable extends GuiContainer {
        public GuiChemicalCombinationTable(EntityPlayer par1EntityPlayer, TileEntityChemicalCombinationTable par2) {
                super(new ContainerChemicalCombinationTable(par1EntityPlayer, par2));
                this.tileentity = par2;
+               this.ySize = 204;
        }
 
        @Override
        public void initGui(){
                super.initGui();
-               this.atomList = new GuiTextField(this.fontRenderer, 92, 7, 80, 15);
+               this.atomList = new GuiTextField(this.fontRenderer, 9, 103, 160, 15);
                this.atomList.setFocused(false);
-               this.atomList.setMaxStringLength(20);
-               this.controlList.add(new GuiButton(0, this.guiLeft + 132 - 41, this.guiTop + 63, 40, 20, "Add"));
-               this.controlList.add(new GuiButton(1, this.guiLeft + 132, this.guiTop + 63, 40, 20, "Eject"));
+               this.atomList.setMaxStringLength(25);
+               this.controlList.add(new GuiButton(0, this.guiLeft + 172 - 41, this.guiTop + 80 - 21, 40, 20, "Add"));
+               this.controlList.add(new GuiButton(1, this.guiLeft + 172 - 41, this.guiTop + 80, 40, 20, "Eject"));
        }
 
        @Override
@@ -47,71 +48,15 @@ public class GuiChemicalCombinationTable extends GuiContainer {
        @Override
        protected void actionPerformed(GuiButton par1GuiButton) {
                if(par1GuiButton.id == 0){
-                       this.field_00001(this.tileentity);
+                       this.tileentity.field_00001();
                        PacketDispatcher.sendPacketToServer(this.tileentity.getDescriptionPacket());
                }else if(par1GuiButton.id == 1){
-                       this.field_00002(this.tileentity);
+                       this.tileentity.field_00002();
                        PacketDispatcher.sendPacketToServer(this.tileentity.getDescriptionPacket());
                }
                return;
        }
 
-       protected void field_00001(TileEntityChemicalCombinationTable par1){
-               IInventory inv = par1.getInvMaterial();
-               ItemStack[] stacks = new ItemStack[inv.getSizeInventory()];
-               for(int i = 0;i < stacks.length;i++){
-                       if(inv.getStackInSlot(i) != null){
-                               stacks[i] = inv.getStackInSlot(i);
-                       }
-               }
-               Arrays.sort(stacks, new ComparatorItemStack());
-               stacks = ChemiCraft.instance.arrayAuxiliary.deleteNull(stacks);
-
-               for(int i = 0;i < stacks.length;i++){
-                       if(stacks[i].stackSize > 1){
-                               par1.setAtoms(ChemiCraft.ATOMSLIST[stacks[i].getItemDamage()], stacks[i].stackSize);
-                       }else{
-                               par1.setAtoms(ChemiCraft.ATOMSLIST[stacks[i].getItemDamage()], 1);
-                       }
-               }
-
-               for(int i = 0;i < inv.getSizeInventory();i++){
-                       inv.setInventorySlotContents(i, null);
-               }
-       }
-
-       protected void field_00002(TileEntityChemicalCombinationTable par1) {
-               ArrayList<String> var1 = par1.getAtomsList();
-               ArrayList<Integer> var2 = par1.getAtomsAmountList();
-
-               for (int i = 0;i < var1.size();i++) {
-                       for (int j = 0;j < ChemiCraft.ATOMSLIST.length;j++) {
-                               if (var1.get(i).equals(ChemiCraft.ATOMSLIST[j])) {
-                                       int var3 = var2.get(i);
-                                       while(var3 > 0){
-                                               if(var3 > 64){
-                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, 64, j);
-                                                       this.tileentity.setDropItems(itemstack);
-                                                       PacketDispatcher.sendPacketToServer(this.tileentity.getDescriptionPacket());
-                                                       var3 -= 64;
-                                               }else{
-                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, var3, j);
-                                                       this.tileentity.setDropItems(itemstack);
-                                                       PacketDispatcher.sendPacketToServer(this.tileentity.getDescriptionPacket());
-                                                       var3 = 0;
-                                               }
-                                       }
-                                       break;
-                               }
-                       }
-               }
-               IInventory invr = par1.getInvResult();
-               if (invr.getStackInSlot(0) != null) {
-                       invr.setInventorySlotContents(0, null);
-               }
-               par1.emptytoAtomsList();
-       }
-
        @Override
        protected void drawGuiContainerForegroundLayer() {
                this.atomList.setText(this.tileentity.getAtoms());
diff --git a/common/chemicraft/render/RenderAtomsGrenade.java b/common/chemicraft/render/RenderAtomsGrenade.java
new file mode 100644 (file)
index 0000000..38ee4f4
--- /dev/null
@@ -0,0 +1,57 @@
+package chemicraft.render;
+
+import net.minecraft.src.Entity;
+import net.minecraft.src.Render;
+import net.minecraft.src.Tessellator;
+
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.opengl.GL12;
+
+import chemicraft.ChemiCraft;
+import chemicraft.entity.EntityAtomGrenade;
+
+public class RenderAtomsGrenade extends Render {
+
+       private float field_77002_a;
+
+       public RenderAtomsGrenade(float par1)
+       {
+               this.field_77002_a = par1;
+       }
+
+       public void doRenderAtomsGrenade(EntityAtomGrenade par1AtomGrenade, double par2, double par4, double par6, float par8, float par9)
+       {
+               GL11.glPushMatrix();
+               GL11.glTranslatef((float)par2, (float)par4, (float)par6);
+               GL11.glEnable(GL12.GL_RESCALE_NORMAL);
+               float var10 = this.field_77002_a;
+               GL11.glScalef(var10 / 1.0F, var10 / 1.0F, var10 / 1.0F);
+               byte var11 = 1;
+               this.loadTexture(ChemiCraft.instance.itemTexture);
+               Tessellator var12 = Tessellator.instance;
+               float var13 = (float)(var11 % 16 * 16 + 0) / 256.0F;
+               float var14 = (float)(var11 % 16 * 16 + 16) / 256.0F;
+               float var15 = (float)(var11 / 16 * 16 + 0) / 256.0F;
+               float var16 = (float)(var11 / 16 * 16 + 16) / 256.0F;
+               float var17 = 1.0F;
+               float var18 = 0.5F;
+               float var19 = 0.25F;
+               GL11.glRotatef(180.0F - this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
+               GL11.glRotatef(-this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
+               var12.startDrawingQuads();
+               var12.setNormal(0.0F, 1.0F, 0.0F);
+               var12.addVertexWithUV((double)(0.0F - var18), (double)(0.0F - var19), 0.0D, (double)var13, (double)var16);
+               var12.addVertexWithUV((double)(var17 - var18), (double)(0.0F - var19), 0.0D, (double)var14, (double)var16);
+               var12.addVertexWithUV((double)(var17 - var18), (double)(1.0F - var19), 0.0D, (double)var14, (double)var15);
+               var12.addVertexWithUV((double)(0.0F - var18), (double)(1.0F - var19), 0.0D, (double)var13, (double)var15);
+               var12.draw();
+               GL11.glDisable(GL12.GL_RESCALE_NORMAL);
+               GL11.glPopMatrix();
+       }
+
+       @Override
+       public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
+       {
+               this.doRenderAtomsGrenade((EntityAtomGrenade)par1Entity, par2, par4, par6, par8, par9);
+       }
+}
index 1fe3c62..ff4c19d 100644 (file)
@@ -2,21 +2,23 @@ package chemicraft.tileentity;
 
 import java.io.DataOutputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 
 import net.minecraft.src.EntityItem;
+import net.minecraft.src.IInventory;
 import net.minecraft.src.ItemStack;
 import net.minecraft.src.NBTTagCompound;
 import net.minecraft.src.NBTTagList;
 import net.minecraft.src.Packet;
 import net.minecraft.src.TileEntity;
+import chemicraft.ChemiCraft;
 import chemicraft.inventory.InventoryChemicalCombinationTableMaterial;
 import chemicraft.inventory.InventoryChemicalCombinationTableResult;
 import chemicraft.system.PacketHandler;
+import chemicraft.util.ComparatorItemStack;
 
 import com.google.common.io.ByteArrayDataInput;
 
-import cpw.mods.fml.common.Side;
-import cpw.mods.fml.common.asm.SideOnly;
 import cpw.mods.fml.common.network.PacketDispatcher;
 
 public class TileEntityChemicalCombinationTable extends TileEntity {
@@ -30,9 +32,16 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
        private ItemStack dropItems;
 
+       private boolean isProvidePower;
+
        @Override
        public void updateEntity(){
                super.updateEntity();
+               if (this.isProvidePower && !this.worldObj.isRemote) {
+                       this.field_00001();
+                       this.isProvidePower = false;
+                       PacketDispatcher.sendPacketToAllPlayers(this.getDescriptionPacket());
+               }
        }
 
        @Override
@@ -69,6 +78,8 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                for(int i = 0;i < this.atomsListSize;i++){
                        this.atomsAmountList.add(par1.getInteger("atomsAmountList" + i));
                }
+
+               this.isProvidePower = par1.getBoolean("isProvidePower");
        }
 
        @Override
@@ -111,6 +122,8 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
 
                this.atomsListSize = this.atomsList.size();
                par1.setInteger("atomsListSize", this.atomsListSize);
+
+               par1.setBoolean("isProvidePower", this.isProvidePower);
        }
 
        @Override
@@ -157,6 +170,8 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord + 1, this.zCoord, itemstack));
                        }
                        this.dropItems = null;
+
+                       this.isProvidePower = data.readBoolean();
                } catch (Exception e) {
                        e.printStackTrace();
                }
@@ -223,12 +238,13 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                                dos.writeInt(0);
                        }
                        this.dropItems = null;
+
+                       dos.writeBoolean(this.isProvidePower);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
 
-       @SideOnly(Side.CLIENT)
        public void setAtoms(String par1, int par2){
                if (this.atomsList.indexOf(par1) != -1){
                        int var1 = this.atomsList.indexOf(par1);
@@ -237,7 +253,6 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                        this.atomsList.add(par1);
                        this.atomsAmountList.add(par2);
                }
-               PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
        }
 
        public void setDropItems(ItemStack par1ItemStack){
@@ -269,6 +284,70 @@ public class TileEntityChemicalCombinationTable extends TileEntity {
                this.atomsAmountList.clear();
        }
 
+       public void setProvidePower(boolean par1) {
+               this.isProvidePower = par1;
+       }
+
+       public boolean getProvidePower() {
+               return this.isProvidePower;
+       }
+
+       public void field_00001() {
+               IInventory inv = this.getInvMaterial();
+               ItemStack[] stacks = new ItemStack[inv.getSizeInventory()];
+               for(int i = 0;i < stacks.length;i++){
+                       if(inv.getStackInSlot(i) != null){
+                               stacks[i] = inv.getStackInSlot(i);
+                       }
+               }
+               Arrays.sort(stacks, new ComparatorItemStack());
+               stacks = ChemiCraft.instance.arrayAuxiliary.deleteNull(stacks);
+
+               for(int i = 0;i < stacks.length;i++){
+                       if(stacks[i].stackSize > 1){
+                               this.setAtoms(ChemiCraft.ATOMSLIST[stacks[i].getItemDamage()], stacks[i].stackSize);
+                       }else{
+                               this.setAtoms(ChemiCraft.ATOMSLIST[stacks[i].getItemDamage()], 1);
+                       }
+               }
+
+               for(int i = 0;i < inv.getSizeInventory();i++){
+                       inv.setInventorySlotContents(i, null);
+               }
+       }
+
+       public void field_00002() {
+               ArrayList<String> var1 = this.getAtomsList();
+               ArrayList<Integer> var2 = this.getAtomsAmountList();
+
+               for (int i = 0;i < var1.size();i++) {
+                       for (int j = 0;j < ChemiCraft.ATOMSLIST.length;j++) {
+                               if (var1.get(i).equals(ChemiCraft.ATOMSLIST[j])) {
+                                       int var3 = var2.get(i);
+                                       while(var3 > 0){
+                                               if(var3 > 64){
+                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, 64, j);
+                                                       this.setDropItems(itemstack);
+                                                       PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
+                                                       var3 -= 64;
+                                               }else{
+                                                       ItemStack itemstack = new ItemStack(ChemiCraft.instance.itemAtoms, var3, j);
+                                                       this.setDropItems(itemstack);
+                                                       PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
+                                                       var3 = 0;
+                                               }
+                                       }
+                                       break;
+                               }
+                       }
+               }
+               IInventory invr = this.getInvResult();
+               if (invr.getStackInSlot(0) != null) {
+                       invr.setInventorySlotContents(0, null);
+               }
+               this.emptytoAtomsList();
+       }
+
        protected boolean isNumber(String par1){
                try {
                        int var1 = Integer.valueOf(new String(par1));
index 8a8b46c..6d9c1df 100644 (file)
@@ -5,16 +5,19 @@ import net.minecraft.src.TileEntity;
 import net.minecraft.src.World;
 import net.minecraftforge.client.MinecraftForgeClient;
 import chemicraft.ChemiCraft;
+import chemicraft.entity.EntityAtomGrenade;
 import chemicraft.gui.GuiChemicalCombinationTable;
 import chemicraft.gui.GuiChemicalCraftingTable;
 import chemicraft.gui.GuiDecompositionTable;
 import chemicraft.gui.GuiToolAndWeaponCraftingTable;
+import chemicraft.render.RenderAtomsGrenade;
 import chemicraft.system.CommonProxy;
 import chemicraft.tileentity.TileEntityChemicalCombinationTable;
 import chemicraft.tileentity.TileEntityChemicalCraftingTable;
 import chemicraft.tileentity.TileEntityDecompositionTable;
 import chemicraft.tileentity.TileEntityToolAndWeaponCraftingTable;
 import cpw.mods.fml.client.FMLClientHandler;
+import cpw.mods.fml.client.registry.RenderingRegistry;
 
 public class ClientProxy extends CommonProxy {
 
@@ -28,6 +31,7 @@ public class ClientProxy extends CommonProxy {
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiDecompositionTexture);
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCraftingTexture);
                MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiToolAndWeaponCraftingTexture);
+               RenderingRegistry.registerEntityRenderingHandler(EntityAtomGrenade.class, new RenderAtomsGrenade(0.5F));
        }