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
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
//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
package chemicraft.block;
+import cpw.mods.fml.common.network.PacketDispatcher;
import chemicraft.ChemiCraft;
import chemicraft.tileentity.TileEntityChemicalCombinationTable;
import net.minecraft.src.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;
}
@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){
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));
{
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()));
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
@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());
--- /dev/null
+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);
+ }
+}
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 {
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
for(int i = 0;i < this.atomsListSize;i++){
this.atomsAmountList.add(par1.getInteger("atomsAmountList" + i));
}
+
+ this.isProvidePower = par1.getBoolean("isProvidePower");
}
@Override
this.atomsListSize = this.atomsList.size();
par1.setInteger("atomsListSize", this.atomsListSize);
+
+ par1.setBoolean("isProvidePower", this.isProvidePower);
}
@Override
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();
}
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);
this.atomsList.add(par1);
this.atomsAmountList.add(par2);
}
- PacketDispatcher.sendPacketToServer(this.getDescriptionPacket());
}
public void setDropItems(ItemStack par1ItemStack){
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));
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 {
MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiDecompositionTexture);
MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiChemicalCraftingTexture);
MinecraftForgeClient.preloadTexture(ChemiCraft.instance.guiToolAndWeaponCraftingTexture);
+ RenderingRegistry.registerEntityRenderingHandler(EntityAtomGrenade.class, new RenderAtomsGrenade(0.5F));
}