diff options
author | Detrav <witalyezep@gmail.com> | 2016-10-08 12:34:14 +0300 |
---|---|---|
committer | Detrav <witalyezep@gmail.com> | 2016-10-08 12:34:14 +0300 |
commit | 4de7488fccd683d09060e92216d1d11e87430450 (patch) | |
tree | 40aa5b040762d88c113ef4f3631b9ab6c15a1a04 /src/main/java | |
parent | fa0a61aaf937955fbc42018f2f601be82e1db1d8 (diff) | |
download | GT5-Unofficial-4de7488fccd683d09060e92216d1d11e87430450.tar.gz GT5-Unofficial-4de7488fccd683d09060e92216d1d11e87430450.tar.bz2 GT5-Unofficial-4de7488fccd683d09060e92216d1d11e87430450.zip |
Updated propick to new oil map and polution posability
Diffstat (limited to 'src/main/java')
3 files changed, 158 insertions, 75 deletions
diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java index 1fe38299b8..977ac9bc9a 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolElectricProPick.java @@ -32,24 +32,30 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi public ItemStack onItemRightClick(GT_MetaBase_Item aItem, ItemStack aStack, World aWorld, EntityPlayer aPlayer) { if (!aWorld.isRemote) { - long data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack); + int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue(); //Проверяем если нажат шифт if (aPlayer.isSneaking()) { - switch ((int)data) + data++; + if(data>3) data = 0; + switch (data) { case 0: - aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore (with small), Any Rock Block")); - DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 1); + aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore, Any Rock Block")); break; case 1: + aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore (with small), Any Rock Block")); + break; + case 2: aPlayer.addChatMessage(new ChatComponentText("Set Mode: Oil, Any Block")); - DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 2); + break; + case 3: + aPlayer.addChatMessage(new ChatComponentText("Set Mode: Pollution, Any Block")); break; default: - aPlayer.addChatMessage(new ChatComponentText("Set Mode: Ore, Any Rock Block")); - DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, 0); + aPlayer.addChatMessage(new ChatComponentText("Set Mode: ERROR")); break; } + DetravMetaGeneratedTool01.INSTANCE.setToolGTDetravData(aStack, (long)data); return super.onItemRightClick(aItem, aStack, aWorld, aPlayer); } @@ -69,6 +75,7 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi size = size - 1; //c.gene DetravProPickPacket00 packet = new DetravProPickPacket00(); + packet.ptype = (int)data; packet.chunkX = cX; packet.chunkZ = cZ; packet.size = size; @@ -77,25 +84,30 @@ public class BehaviourDetravToolElectricProPick extends BehaviourDetravToolProPi for (int z = 0; z < 16; z++) { int ySize = c.getHeightValue(x, z); for (int y = 1; y < ySize; y++) { - if(data < 2) { - Block b = c.getBlock(x, y, z); - if (b == GregTech_API.sBlockOres1) { - TileEntity entity = c.getTileEntityUnsafe(x, y, z); - if (entity != null && entity instanceof GT_TileEntity_Ores) { - GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) entity; - String name = GT_LanguageManager.getTranslation( - b.getUnlocalizedName() + "." + gt_entity.getMetaData() + ".name"); - if (name.startsWith("Small")) if(data!=1) continue; - packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, gt_entity.getMetaData()); + switch (data) { + case 0: + case 1: + Block b = c.getBlock(x, y, z); + if (b == GregTech_API.sBlockOres1) { + TileEntity entity = c.getTileEntityUnsafe(x, y, z); + if (entity != null && entity instanceof GT_TileEntity_Ores) { + GT_TileEntity_Ores gt_entity = (GT_TileEntity_Ores) entity; + String name = GT_LanguageManager.getTranslation( + b.getUnlocalizedName() + "." + gt_entity.getMetaData() + ".name"); + if (name.startsWith("Small")) if (data != 1) continue; + packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, gt_entity.getMetaData()); + } } - } - } - else { - FluidStack fStack = getUndergroundOil(aWorld, c.xPosition * 16 + x, c.zPosition * 16 + z); - if (fStack.amount > 50000) - packet.addBlock(c.xPosition * 16 + x, y, c.zPosition * 16 + z, (short)-fStack.getFluidID()); - break; + break; + case 2: + FluidStack fStack = getUndergroundOil(aWorld, c.xPosition * 16 + x, c.zPosition * 16 + z); + if (fStack.amount > 10000) { + packet.addBlock(c.xPosition * 16 + x, 2, c.zPosition * 16 + z, (short) (fStack.amount/5000)); + packet.addBlock(c.xPosition * 16 + x, 1, c.zPosition * 16 + z, (short) fStack.getFluidID()); + } + break; } + if(data > 1 ) break;; } } } diff --git a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java index f33d88555d..90655483cd 100644 --- a/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java +++ b/src/main/java/com/detrav/items/behaviours/BehaviourDetravToolProPick.java @@ -79,7 +79,7 @@ public class BehaviourDetravToolProPick extends Behaviour_None { return; } } else if (aRandom.nextInt(10) < 4) { - long data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack); + int data = DetravMetaGeneratedTool01.INSTANCE.getToolGTDetravData(aStack).intValue(); HashMap<String, Integer> ores = new HashMap<String, Integer>(); for (int x = 0; x < 16; x++) for (int z = 0; z < 16; z++) { diff --git a/src/main/java/com/detrav/net/DetravProPickPacket00.java b/src/main/java/com/detrav/net/DetravProPickPacket00.java index 460d96e846..a46e9d9f4d 100644 --- a/src/main/java/com/detrav/net/DetravProPickPacket00.java +++ b/src/main/java/com/detrav/net/DetravProPickPacket00.java @@ -9,6 +9,9 @@ import com.google.common.io.ByteStreams; import gregtech.api.GregTech_API; import gregtech.api.enums.Materials; import gregtech.api.util.GT_LanguageManager; +import gregtech.api.util.GT_Utility; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidStack; import java.awt.image.BufferedImage; import java.awt.image.WritableRaster; @@ -22,6 +25,7 @@ public class DetravProPickPacket00 extends DetravPacket { public int chunkX; public int chunkZ; public int size; + public int ptype; HashMap<Byte,Short>[][] map = null; @Override @@ -34,6 +38,7 @@ public class DetravProPickPacket00 extends DetravPacket { @Override public byte[] encode() { ByteArrayDataOutput tOut = ByteStreams.newDataOutput(1); + tOut.writeInt(ptype); tOut.writeInt(level); tOut.writeInt(chunkX); tOut.writeInt(chunkZ); @@ -63,6 +68,7 @@ public class DetravProPickPacket00 extends DetravPacket { @Override public Object decode(ByteArrayDataInput aData) { DetravProPickPacket00 packet = new DetravProPickPacket00(); + packet.ptype = aData.readInt(); packet.level = aData.readInt(); packet.chunkX = aData.readInt(); packet.chunkZ = aData.readInt(); @@ -115,61 +121,126 @@ public class DetravProPickPacket00 extends DetravPacket { if(ores == null) ores = new HashMap<String, Integer>(); int exception = 0; - for(int i =0; i<wh; i++) - for(int j =0; j<wh; j++) { - if (map[i][j] == null) - { - raster.setSample(i,j,0,255); - raster.setSample(i,j,1,255); - raster.setSample(i,j,2,255); - raster.setSample(i,j,3,255); - } - else - { - for(short meta : map[i][j].values()) { - String name; - short[] rgba; - if(meta>=0) { - //Пока только по одному буду - Materials tMaterial = GregTech_API.sGeneratedMaterials[meta % 1000]; - if(tMaterial == null) { exception++; continue;} - rgba = tMaterial.getRGBA(); - //ores.put(GT_Ore) - name = GT_LanguageManager.getTranslation("gt.blockores." + meta + ".name"); + switch (ptype) { + case 0: + case 1: + for (int i = 0; i < wh; i++) + for (int j = 0; j < wh; j++) { + if (map[i][j] == null) { + raster.setSample(i, j, 0, 255); + raster.setSample(i, j, 1, 255); + raster.setSample(i, j, 2, 255); + raster.setSample(i, j, 3, 255); + } else { + for (short meta : map[i][j].values()) { + String name; + short[] rgba; + //Пока только по одному буду + Materials tMaterial = GregTech_API.sGeneratedMaterials[meta % 1000]; + if (tMaterial == null) { + exception++; + continue; + } + rgba = tMaterial.getRGBA(); + //ores.put(GT_Ore) + name = GT_LanguageManager.getTranslation("gt.blockores." + meta + ".name"); + + raster.setSample(i, j, 0, rgba[0]); + raster.setSample(i, j, 1, rgba[1]); + raster.setSample(i, j, 2, rgba[2]); + raster.setSample(i, j, 3, 255); + if (!ores.containsKey(name)) + ores.put(name, (0xFF << 24) + ((rgba[0] & 0xFF) << 16) + ((rgba[1] & 0xFF) << 8) + ((rgba[2] & 0xFF))); } - else - { - name = String.valueOf(meta); - rgba = new short[4]; - rgba[0] =(short)( 255/(-meta + 1)); - rgba[1] =(short)( 255/(-meta + 1)); - rgba[2] =(short)( 255/(-meta + 1)); - rgba[3] =(short)( 255 ); + } + if (playerI == i || playerJ == j) { + raster.setSample(i, j, 0, (raster.getSample(i, j, 0) + 255) / 2); + raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2); + raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2); + } + if ((i - 15) % 16 == 0 || (j - 15) % 16 == 0) { + raster.setSample(i, j, 0, raster.getSample(i, j, 0) / 2); + raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2); + raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2); + } + } + break; + case 2: + int gasId = Materials.NatruralGas.mGas.getID(); + short[] gas_rgba = new short[]{ 0,0xFF,0xFF}; + int oilLightId = Materials.OilLight.mFluid.getID(); + short[] oilLight_rgba = new short[]{ 0xFF,0xFF,0}; + int oilMediumId = Materials.OilMedium.mFluid.getID(); + short[] oilMedium_rgba = new short[]{ 0,0xFF,0}; + int oilHeavyId = Materials.OilHeavy.mFluid.getID(); + short[] oilHeavy_rgba = new short[]{ 0xFF,0,0xFF}; + int oilId = Materials.Oil.mFluid.getID(); + short[] oil_rgba = new short[]{ 0,0,0}; + short[] metas = new short[2]; + for (int i = 0; i < wh; i++) + for (int j = 0; j < wh; j++) { + if (map[i][j] == null) { + raster.setSample(i, j, 0, 255); + raster.setSample(i, j, 1, 255); + raster.setSample(i, j, 2, 255); + raster.setSample(i, j, 3, 255); + } else { + metas[0] = map[i][j].get(Byte.valueOf((byte)1)); + metas[1] = map[i][j].get(Byte.valueOf((byte)2)); + metas[1] = (short)(metas[1]/2 + 20); + if(metas[1] >0xFF) metas[1] = 0xFF; + String name = null; + short[] rgba = null; + if (metas[0] == gasId) { + name = "NatruralGas"; + rgba = gas_rgba.clone(); + } else if (metas[0] == oilLightId) { + name = "OilLight"; + rgba = oilLight_rgba.clone(); + } else if (metas[0] == oilMediumId) { + name = "OilMedium"; + rgba = oilMedium_rgba.clone(); + } else if (metas[0] == oilHeavyId) { + name = "OilHeavy"; + rgba = oilHeavy_rgba.clone(); + } else if (metas[0] == oilId) { + name = "Oil"; + rgba = oil_rgba.clone(); + } + if (rgba == null) continue; + if (name == null) continue; + if (!ores.containsKey(name)) + ores.put(name, (0xFF << 24) + ((rgba[0] & 0xFF) << 16) + ((rgba[1] & 0xFF) << 8) + ((rgba[2] & 0xFF))); - } + for( int z = 0; z<3; z++) { + rgba[z] = (short) (rgba[z] + (0xFF - metas[1])); + if(rgba[z]>0xFF) rgba[z] = 0xFF; + } - raster.setSample(i, j, 0, rgba[0]); - raster.setSample(i, j, 1, rgba[1]); - raster.setSample(i, j, 2, rgba[2]); - raster.setSample(i, j, 3, 255); - if(!ores.containsKey(name)) - ores.put(name,(0xFF << 24) + ((rgba[0]&0xFF)<<16)+((rgba[1]&0xFF)<<8)+((rgba[2]&0xFF))); + raster.setSample(i, j, 0, rgba[0]); + raster.setSample(i, j, 1, rgba[1]); + raster.setSample(i, j, 2, rgba[2]); + raster.setSample(i, j, 3, 255); + + + } + if (playerI == i || playerJ == j) { + raster.setSample(i, j, 0, (raster.getSample(i, j, 0) + 255) / 2); + raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2); + raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2); + } + if ((i - 15) % 16 == 0 || (j - 15) % 16 == 0) { + raster.setSample(i, j, 0, raster.getSample(i, j, 0) / 2); + raster.setSample(i, j, 1, raster.getSample(i, j, 1) / 2); + raster.setSample(i, j, 2, raster.getSample(i, j, 2) / 2); + } } - } - if(playerI == i || playerJ == j) - { - raster.setSample(i,j,0,(raster.getSample(i,j,0)+255)/2); - raster.setSample(i,j,1,raster.getSample(i,j,1)/2); - raster.setSample(i,j,2,raster.getSample(i,j,2)/2); - } - if((i-15)%16 == 0 || (j-15)%16 == 0) - { - raster.setSample(i,j,0,raster.getSample(i,j,0)/2); - raster.setSample(i,j,1,raster.getSample(i,j,1)/2); - raster.setSample(i,j,2,raster.getSample(i,j,2)/2); - } - } + break; + default: + DetravScannerMod.proxy.sendPlayerExeption("Not been realized YET!"); + break; + } DetravScannerMod.proxy.sendPlayerExeption("null matertial exception: " + exception); /*try { File outputfile = new File("saved.png"); |