From e01da0dc81e587c0635935488941bd6329175f8c Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sat, 31 Aug 2024 23:46:46 +0300 Subject: [PATCH 01/20] There was no fucking reason for it so be a seperate item I was just stupid --- src/main/java/com/hbm/items/ModItems.java | 2 +- src/main/java/com/hbm/items/tool/ItemSatRelay.java | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 src/main/java/com/hbm/items/tool/ItemSatRelay.java diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index b7789ba87..7f834f7c6 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3868,7 +3868,7 @@ public class ModItems { sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); sat_coord = new ItemSatInterface().setUnlocalizedName("sat_coord").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_coord"); sat_designator = new ItemSatDesignator().setUnlocalizedName("sat_designator").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_designator"); - sat_relay = new ItemSatRelay().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); + sat_relay = new ItemSatChip().setUnlocalizedName("sat_relay").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_relay"); mp_thruster_10_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_thruster_10_kerosene"); mp_thruster_10_kerosene_tec = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F).setRarity(Rarity.COMMON).setUnlocalizedName("mp_thruster_10_kerosene_tec"); diff --git a/src/main/java/com/hbm/items/tool/ItemSatRelay.java b/src/main/java/com/hbm/items/tool/ItemSatRelay.java deleted file mode 100644 index ba040cbd0..000000000 --- a/src/main/java/com/hbm/items/tool/ItemSatRelay.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.items.tool; - -import com.hbm.items.machine.ItemSatChip; - -public class ItemSatRelay extends ItemSatChip { -//Schrabby doesn't fucking know how this works so I HOPE it will create a new item that works without fucking everything up - - -} From 37faac3266dfa115fe5eca27735fde2e58226297 Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sat, 31 Aug 2024 23:53:23 +0300 Subject: [PATCH 02/20] Added Xenium Resonator radar compat --- .../tileentity/machine/TileEntityMachineRadarNT.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 0eb956fe3..93bd0e213 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -24,6 +24,7 @@ import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteHorizons; import com.hbm.saveddata.satellites.SatelliteLaser; +import com.hbm.saveddata.satellites.SatelliteResonator; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -464,6 +465,15 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I sat.onCoordAction(world, player, x, y, z); } } + if(sat instanceof SatelliteResonator) { + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + int y = world.getTopSolidOrLiquidBlock(x, z); //the top fucking block because I will never make radars transmit Y coordinates as well! + worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + sat.onCoordAction(world, player, x, y, z); + } + } } if(link != null && link.getItem() == ModItems.radar_linker) { BlockPos pos = ItemCoordinateBase.getPosition(link); From 5f28c8b28912696f1bd95a065344c692af940532 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 1 Sep 2024 20:21:20 +0200 Subject: [PATCH 03/20] more assets --- .../com/hbm/render/tileentity/RenderLPW2.java | 2 +- .../hbm/models/weapons/maresleg_mk2.obj | 2314 +++++++++++++++++ .../hbm/textures/models/machines/lpw2.png | Bin 116846 -> 104090 bytes .../hbm/textures/models/weapons/maresleg.png | Bin 0 -> 4117 bytes 4 files changed, 2315 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/maresleg.png diff --git a/src/main/java/com/hbm/render/tileentity/RenderLPW2.java b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java index bb5e674f0..4e4eacf41 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLPW2.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLPW2.java @@ -139,7 +139,7 @@ public class RenderLPW2 extends TileEntitySpecialRenderer { GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glLoadIdentity(); - GL11.glTranslated(0, BobMathUtil.sps(errorTimer) + errorTimer / 2D - 1, 0); + GL11.glTranslated(0, (BobMathUtil.sps(errorTimer) + errorTimer / 2D) % 1, 0); ResourceManager.lpw2.renderPart("Screen"); GL11.glMatrixMode(GL11.GL_TEXTURE); GL11.glLoadIdentity(); diff --git a/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj b/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj new file mode 100644 index 000000000..420992dda --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/maresleg_mk2.obj @@ -0,0 +1,2314 @@ +# Blender v2.79 (sub 0) OBJ File: 'maresleg.blend' +# www.blender.org +o Circle +v 0.000000 1.187500 8.000000 +v -0.093750 1.162380 8.000000 +v -0.162380 1.093750 8.000000 +v -0.187500 1.000000 8.000000 +v -0.162380 0.906250 8.000000 +v -0.093750 0.837620 8.000000 +v 0.000000 0.812500 8.000000 +v 0.093750 0.837620 8.000000 +v 0.162380 0.906250 8.000000 +v 0.187500 1.000000 8.000000 +v 0.162380 1.093750 8.000000 +v 0.093750 1.162380 8.000000 +v 0.000000 1.187500 -2.000000 +v -0.093750 1.162380 -2.000000 +v -0.162380 1.093750 -2.000000 +v -0.187500 1.000000 -2.000000 +v -0.162380 0.906250 -2.000000 +v -0.093750 0.837620 -2.000000 +v 0.000000 0.812500 -2.000000 +v 0.093750 0.837620 -2.000000 +v 0.162380 0.906250 -2.000000 +v 0.187500 1.000000 -2.000000 +v 0.162380 1.093750 -2.000000 +v 0.093750 1.162380 -2.000000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.187500 3.750000 +v -0.093750 1.162380 3.750000 +v -0.162380 1.093750 3.750000 +v -0.187500 1.000000 3.750000 +v -0.162380 0.906250 3.750000 +v -0.093750 0.837620 3.750000 +v 0.000000 0.812500 3.750000 +v 0.093750 0.837620 3.750000 +v 0.162380 0.906250 3.750000 +v 0.187500 1.000000 3.750000 +v 0.162380 1.093750 3.750000 +v 0.093750 1.162380 3.750000 +v 0.000000 1.125000 8.000000 +v -0.062500 1.108253 8.000000 +v -0.108253 1.062500 8.000000 +v -0.125000 1.000000 8.000000 +v -0.108253 0.937500 8.000000 +v -0.062500 0.891747 8.000000 +v 0.000000 0.875000 8.000000 +v 0.062500 0.891747 8.000000 +v 0.108253 0.937500 8.000000 +v 0.125000 1.000000 8.000000 +v 0.108253 1.062500 8.000000 +v 0.062500 1.108253 8.000000 +v 0.000000 1.125000 7.000000 +v -0.062500 1.108253 7.000000 +v -0.108253 1.062500 7.000000 +v -0.125000 1.000000 7.000000 +v -0.108253 0.937500 7.000000 +v -0.062500 0.891747 7.000000 +v 0.000000 0.875000 7.000000 +v 0.062500 0.891747 7.000000 +v 0.108253 0.937500 7.000000 +v 0.125000 1.000000 7.000000 +v 0.108253 1.062500 7.000000 +v 0.062500 1.108253 7.000000 +v 0.000000 1.125000 3.750000 +v -0.062500 1.108253 3.750000 +v -0.108253 1.062500 3.750000 +v -0.125000 1.000000 3.750000 +v -0.108253 0.937500 3.750000 +v -0.062500 0.891747 3.750000 +v 0.000000 0.875000 3.750000 +v 0.062500 0.891747 3.750000 +v 0.108253 0.937500 3.750000 +v 0.125000 1.000000 3.750000 +v 0.108253 1.062500 3.750000 +v 0.062500 1.108253 3.750000 +v 0.000000 1.125000 2.750000 +v -0.062500 1.108253 2.750000 +v -0.108253 1.062500 2.750000 +v -0.125000 1.000000 2.750000 +v -0.108253 0.937500 2.750000 +v -0.062500 0.891747 2.750000 +v 0.000000 0.875000 2.750000 +v 0.062500 0.891747 2.750000 +v 0.108253 0.937500 2.750000 +v 0.125000 1.000000 2.750000 +v 0.108253 1.062500 2.750000 +v 0.062500 1.108253 2.750000 +v 0.000000 1.187500 3.000000 +v -0.093750 1.162380 3.000000 +v -0.162380 1.093750 3.000000 +v -0.187500 1.000000 3.000000 +v -0.162380 0.906250 3.000000 +v -0.093750 0.837620 3.000000 +v 0.000000 0.812500 3.000000 +v 0.093750 0.837620 3.000000 +v 0.162380 0.906250 3.000000 +v 0.187500 1.000000 3.000000 +v 0.162380 1.093750 3.000000 +v 0.093750 1.162380 3.000000 +v 0.000000 1.250000 3.000000 +v -0.125000 1.216506 3.000000 +v -0.216506 1.125000 3.000000 +v -0.250000 1.000000 3.000000 +v 0.250000 1.000000 3.000000 +v 0.216506 1.125000 3.000000 +v 0.125000 1.216506 3.000000 +v 0.000000 1.250000 3.250000 +v -0.125000 1.216506 3.250000 +v -0.216506 1.125000 3.250000 +v -0.250000 1.000000 3.250000 +v 0.250000 1.000000 3.250000 +v 0.216506 1.125000 3.250000 +v 0.125000 1.216506 3.250000 +v 0.000000 1.187500 3.250000 +v -0.093750 1.162380 3.250000 +v -0.162380 1.093750 3.250000 +v -0.187500 1.000000 3.250000 +v -0.162380 0.906250 3.250000 +v -0.093750 0.837620 3.250000 +v 0.000000 0.812500 3.250000 +v 0.093750 0.837620 3.250000 +v 0.162380 0.906250 3.250000 +v 0.187500 1.000000 3.250000 +v 0.162380 1.093750 3.250000 +v 0.093750 1.162380 3.250000 +v 0.000000 0.750000 -2.000000 +v -0.093750 0.724880 -2.000000 +v -0.162380 0.656250 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.162380 0.468750 -2.000000 +v -0.093750 0.400120 -2.000000 +v 0.000000 0.375000 -2.000000 +v 0.093750 0.400120 -2.000000 +v 0.162380 0.468750 -2.000000 +v 0.187500 0.562500 -2.000000 +v 0.162380 0.656250 -2.000000 +v 0.093750 0.724880 -2.000000 +v 0.000000 0.750000 3.000000 +v -0.093750 0.724880 3.000000 +v -0.162380 0.656250 3.000000 +v -0.187500 0.562500 3.000000 +v -0.162380 0.468750 3.000000 +v -0.093750 0.400120 3.000000 +v 0.000000 0.375000 3.000000 +v 0.093750 0.400120 3.000000 +v 0.162380 0.468750 3.000000 +v 0.187500 0.562500 3.000000 +v 0.162380 0.656250 3.000000 +v 0.093750 0.724880 3.000000 +v -0.250000 0.562500 3.000000 +v -0.216506 0.437500 3.000000 +v -0.125000 0.345994 3.000000 +v 0.000000 0.312500 3.000000 +v 0.125000 0.345994 3.000000 +v 0.216506 0.437500 3.000000 +v 0.250000 0.562500 3.000000 +v -0.250000 0.562500 3.250000 +v -0.216506 0.437500 3.250000 +v -0.125000 0.345994 3.250000 +v 0.000000 0.312500 3.250000 +v 0.125000 0.345994 3.250000 +v 0.216506 0.437500 3.250000 +v 0.250000 0.562500 3.250000 +v 0.000000 1.250000 -2.000000 +v -0.125000 1.216506 -2.000000 +v -0.216506 1.125000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 1.000000 -2.000000 +v 0.216506 1.125000 -2.000000 +v 0.125000 1.216506 -2.000000 +v -0.250000 0.562500 -2.000000 +v -0.216506 0.437500 -2.000000 +v -0.125000 0.345994 -2.000000 +v 0.000000 0.312500 -2.000000 +v 0.125000 0.345994 -2.000000 +v 0.216506 0.437500 -2.000000 +v 0.250000 0.562500 -2.000000 +v -0.125000 1.216506 -2.375000 +v 0.000000 1.250000 -2.375000 +v -0.216506 1.125000 -2.375000 +v -0.250000 1.000000 -2.375000 +v 0.216506 1.125000 -2.375000 +v 0.250000 1.000000 -2.375000 +v 0.125000 1.216506 -2.375000 +v -0.250000 0.562500 -2.375000 +v 0.250000 0.562500 -2.375000 +v -0.216506 0.437500 -2.375000 +v -0.125000 0.345994 -2.375000 +v 0.000000 0.312500 -2.375000 +v 0.125000 0.345994 -2.375000 +v 0.216506 0.437500 -2.375000 +v 0.000000 1.125000 -2.375000 +v -0.062500 1.108253 -2.375000 +v -0.108253 1.062500 -2.375000 +v -0.125000 1.000000 -2.375000 +v -0.108253 0.937500 -2.375000 +v -0.062500 0.891747 -2.375000 +v 0.000000 0.875000 -2.375000 +v 0.062500 0.891747 -2.375000 +v 0.108253 0.937500 -2.375000 +v 0.125000 1.000000 -2.375000 +v 0.108253 1.062500 -2.375000 +v 0.062500 1.108253 -2.375000 +v 0.000000 0.687500 -2.375000 +v -0.062500 0.670753 -2.375000 +v -0.108253 0.625000 -2.375000 +v -0.125000 0.562500 -2.375000 +v -0.108253 0.500000 -2.375000 +v -0.062500 0.454247 -2.375000 +v 0.000000 0.437500 -2.375000 +v 0.062500 0.454247 -2.375000 +v 0.108253 0.500000 -2.375000 +v 0.125000 0.562500 -2.375000 +v 0.108253 0.625000 -2.375000 +v 0.062500 0.670753 -2.375000 +v 0.000000 1.125000 -1.375000 +v -0.062500 1.108253 -1.375000 +v -0.108253 1.062500 -1.375000 +v -0.125000 1.000000 -1.375000 +v -0.108253 0.937500 -1.375000 +v -0.062500 0.891747 -1.375000 +v 0.000000 0.875000 -1.375000 +v 0.062500 0.891747 -1.375000 +v 0.108253 0.937500 -1.375000 +v 0.125000 1.000000 -1.375000 +v 0.108253 1.062500 -1.375000 +v 0.062500 1.108253 -1.375000 +v 0.000000 0.687500 -1.375000 +v -0.062500 0.670753 -1.375000 +v -0.108253 0.625000 -1.375000 +v -0.125000 0.562500 -1.375000 +v -0.108253 0.500000 -1.375000 +v -0.062500 0.454247 -1.375000 +v 0.000000 0.437500 -1.375000 +v 0.062500 0.454247 -1.375000 +v 0.108253 0.500000 -1.375000 +v 0.125000 0.562500 -1.375000 +v 0.108253 0.625000 -1.375000 +v 0.062500 0.670753 -1.375000 +v 0.312500 1.125000 -2.125000 +v 0.312500 1.125000 -2.500000 +v 0.187500 1.125000 -2.125000 +v 0.187500 1.125000 -2.500000 +v 0.312500 0.437500 -2.125000 +v 0.187500 0.437500 -2.125000 +v 0.312500 0.187500 -2.375000 +v 0.312500 1.000000 -2.625000 +v 0.187500 1.000000 -2.625000 +v 0.312500 1.000000 -3.000000 +v 0.187500 1.000000 -3.000000 +v 0.312500 0.562500 -3.750000 +v 0.312500 0.875000 -3.375000 +v 0.187500 0.875000 -3.375000 +v 0.312500 -0.062500 -2.875000 +v 0.312500 -0.062500 -3.875000 +v -0.187500 1.125000 -2.125000 +v -0.187500 1.125000 -2.500000 +v -0.312500 1.125000 -2.125000 +v -0.312500 1.125000 -2.500000 +v -0.187500 0.437500 -2.125000 +v -0.312500 0.437500 -2.125000 +v -0.312500 0.187500 -2.375000 +v -0.187500 1.000000 -2.625000 +v -0.312500 1.000000 -2.625000 +v -0.187500 1.000000 -3.000000 +v -0.312500 1.000000 -3.000000 +v -0.312500 0.562500 -3.750000 +v -0.187500 0.875000 -3.375000 +v -0.312500 0.875000 -3.375000 +v -0.312500 -0.062500 -2.875000 +v -0.312500 -0.062500 -3.875000 +v -0.187500 0.769607 -3.582107 +v -0.187500 0.445183 -3.798880 +v 0.250000 0.562500 -2.000000 +v -0.250000 0.562500 -2.000000 +v 0.250000 1.000000 -2.000000 +v -0.250000 1.000000 -2.000000 +v 0.250000 0.562500 1.625000 +v -0.250000 0.562500 1.625000 +v 0.250000 1.000000 1.625000 +v -0.250000 1.000000 1.625000 +v 0.250000 0.687500 1.750000 +v -0.250000 0.687500 1.750000 +v 0.250000 0.874000 1.750000 +v -0.250000 0.874000 1.750000 +v 0.187500 0.562500 -2.000000 +v 0.187500 1.000000 -2.000000 +v -0.187500 0.562500 -2.000000 +v -0.187500 1.000000 -2.000000 +v 0.187500 0.562500 -1.375000 +v 0.187500 1.000000 -1.375000 +v -0.187500 0.562500 -1.375000 +v -0.187500 1.000000 -1.375000 +v 0.187500 1.187500 -2.375000 +v -0.187500 1.187500 -2.375000 +v 0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.375000 +v -0.187500 0.437500 -2.875000 +v 0.187500 0.437500 -2.875000 +v -0.187500 1.187500 -2.500000 +v 0.187500 1.187500 -2.500000 +v -0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -2.875000 +v 0.187500 -0.062500 -2.875000 +v -0.187500 -0.062500 -2.875000 +v -0.187500 0.062500 -3.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 0.562500 -3.750000 +v 0.187500 0.562500 -3.750000 +v 0.187500 0.062500 -3.875000 +v 0.187500 0.445183 -3.798880 +v 0.187500 0.769607 -3.582107 +v 0.187500 0.986380 -3.257684 +v 0.187500 1.062500 -2.875000 +v -0.187500 0.986380 -3.257684 +v -0.187500 1.062500 -2.875000 +v 0.187500 -0.062500 -3.875000 +v -0.187500 -0.062500 -3.875000 +v -0.187500 1.062500 -2.625000 +v 0.187500 1.062500 -2.625000 +v 0.312500 0.437500 -4.125000 +v -0.312500 0.437500 -4.125000 +v 0.312500 -0.187500 -4.125000 +v -0.312500 -0.187500 -4.125000 +v -0.187500 0.437500 -3.500000 +v 0.187500 0.437500 -3.500000 +v -0.250000 -0.250000 -4.125000 +v 0.250000 -0.250000 -4.125000 +v -0.250000 0.500000 -4.125000 +v 0.250000 0.500000 -4.125000 +v -0.250000 -0.250000 -5.625000 +v -0.250000 -1.000000 -5.250000 +v 0.250000 -1.000000 -5.250000 +v 0.250000 -0.250000 -5.625000 +v 0.375000 -0.125000 -4.125000 +v 0.375000 0.375000 -4.125000 +v 0.375000 -0.875000 -5.312500 +v 0.375000 -0.375000 -5.562500 +v -0.375000 0.375000 -4.125000 +v -0.375000 -0.125000 -4.125000 +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.875000 -5.312500 +v -0.250000 -0.500000 -5.750000 +v -0.250000 -1.000000 -5.500000 +v 0.250000 -1.000000 -5.500000 +v 0.250000 -0.500000 -5.750000 +v -0.375000 -0.375000 -5.562500 +v -0.375000 -0.625000 -5.437500 +v -0.375000 -1.375000 -8.000000 +v -0.375000 0.000000 -5.562500 +v -0.375000 -0.125000 -8.000000 +v 0.375000 -0.375000 -5.562500 +v 0.375000 -0.625000 -5.437500 +v 0.375000 -1.375000 -8.000000 +v 0.375000 0.000000 -5.562500 +v 0.375000 -0.125000 -8.000000 +v 0.250000 0.000000 -8.000000 +v -0.250000 0.000000 -8.000000 +v -0.250000 -1.500000 -8.000000 +v 0.250000 -1.500000 -8.000000 +v 0.250000 -0.750000 -5.375000 +v -0.250000 -0.750000 -5.375000 +v 0.250000 0.125000 -5.562500 +v -0.250000 0.125000 -5.562500 +v 0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.750000 +v -0.125000 -0.062500 -3.625000 +v 0.125000 -0.062500 -3.625000 +v 0.125000 -0.812500 -4.875000 +v -0.125000 -0.812500 -4.875000 +v 0.125000 -1.062500 -4.875000 +v -0.125000 -1.062500 -4.875000 +v 0.125000 -1.187500 -4.750000 +v -0.125000 -1.187500 -4.750000 +v 0.125000 -1.187500 -4.500000 +v -0.125000 -1.187500 -4.500000 +v 0.125000 -0.687500 -3.750000 +v -0.125000 -0.687500 -3.750000 +v 0.125000 -0.437500 -3.750000 +v -0.125000 -0.437500 -3.750000 +v 0.125000 -0.437500 -3.250000 +v -0.125000 -0.437500 -3.250000 +v 0.125000 -0.187500 -3.000000 +v -0.125000 -0.187500 -3.000000 +v 0.125000 -0.062500 -3.000000 +v -0.125000 -0.062500 -3.000000 +v 0.125000 -0.187500 -3.062500 +v -0.125000 -0.187500 -3.062500 +v 0.125000 -0.062500 -3.062500 +v -0.125000 -0.062500 -3.062500 +v 0.125000 -0.375000 -3.625000 +v -0.125000 -0.375000 -3.625000 +v 0.125000 -0.375000 -3.250000 +v -0.125000 -0.375000 -3.250000 +v 0.125000 -0.250000 -3.812500 +v -0.125000 -0.250000 -3.812500 +v 0.125000 -1.125000 -4.750000 +v -0.125000 -1.125000 -4.750000 +v 0.125000 -1.125000 -4.500000 +v -0.125000 -1.125000 -4.500000 +v 0.125000 -0.812500 -4.812500 +v -0.125000 -0.812500 -4.812500 +v 0.125000 -1.062500 -4.812500 +v -0.125000 -1.062500 -4.812500 +v 0.125000 -0.750000 -3.937500 +v -0.125000 -0.750000 -3.937500 +v 0.125000 -0.500000 -3.937500 +v -0.125000 -0.500000 -3.937500 +v 0.125000 -0.437500 -4.250000 +v -0.125000 -0.437500 -4.250000 +v 0.125000 -0.437500 -4.000000 +v -0.125000 -0.437500 -4.000000 +v 0.062500 -0.062500 -3.562500 +v -0.062500 -0.062500 -3.562500 +v 0.062500 -0.062500 -3.500000 +v -0.062500 -0.062500 -3.500000 +v 0.062500 -0.187500 -3.562500 +v -0.062500 -0.187500 -3.562500 +v 0.062500 -0.187500 -3.500000 +v -0.062500 -0.187500 -3.500000 +v 0.062500 -0.312500 -3.437500 +v -0.062500 -0.312500 -3.437500 +v 0.000000 1.625000 -2.375000 +v -0.062500 1.608253 -2.375000 +v -0.108253 1.562500 -2.375000 +v -0.125000 1.500000 -2.375000 +v -0.108253 1.437500 -2.375000 +v -0.062500 1.391747 -2.375000 +v 0.000000 1.375000 -2.375000 +v 0.062500 1.391747 -2.375000 +v 0.108253 1.437500 -2.375000 +v 0.125000 1.500000 -2.375000 +v 0.108253 1.562500 -2.375000 +v 0.062500 1.608253 -2.375000 +v 0.000000 1.625000 -1.625000 +v -0.062500 1.608253 -1.625000 +v -0.108253 1.562500 -1.625000 +v -0.125000 1.500000 -1.625000 +v -0.108253 1.437500 -1.625000 +v -0.062500 1.391747 -1.625000 +v 0.000000 1.375000 -1.625000 +v 0.062500 1.391747 -1.625000 +v 0.108253 1.437500 -1.625000 +v 0.125000 1.500000 -1.625000 +v 0.108253 1.562500 -1.625000 +v 0.062500 1.608253 -1.625000 +v 0.000000 1.640625 -2.375000 +v -0.070312 1.621785 -2.375000 +v -0.121785 1.570312 -2.375000 +v -0.140625 1.500000 -2.375000 +v -0.121785 1.429688 -2.375000 +v -0.070312 1.378215 -2.375000 +v 0.000000 1.359375 -2.375000 +v 0.070312 1.378215 -2.375000 +v 0.121785 1.429688 -2.375000 +v 0.140625 1.500000 -2.375000 +v 0.121785 1.570312 -2.375000 +v 0.070312 1.621785 -2.375000 +v 0.000000 1.640625 -2.437500 +v -0.070312 1.621785 -2.437500 +v -0.121785 1.570312 -2.437500 +v -0.140625 1.500000 -2.437500 +v -0.121785 1.429688 -2.437500 +v -0.070312 1.378215 -2.437500 +v 0.000000 1.359375 -2.437500 +v 0.070312 1.378215 -2.437500 +v 0.121785 1.429688 -2.437500 +v 0.140625 1.500000 -2.437500 +v 0.121785 1.570312 -2.437500 +v 0.070312 1.621785 -2.437500 +vt 0.004098 0.224299 +vt 0.000000 0.205607 +vt 0.004098 0.205607 +vt 0.004098 -0.000000 +vt 0.000000 0.009346 +vt 0.000000 -0.000000 +vt 0.004098 0.037383 +vt 0.000000 0.018692 +vt 0.004098 0.018692 +vt 0.004098 0.056075 +vt 0.000000 0.037383 +vt 0.000000 0.065421 +vt 0.000000 0.056075 +vt 0.004098 0.093458 +vt 0.000000 0.074766 +vt 0.004098 0.074766 +vt 0.000000 0.102804 +vt 0.000000 0.093458 +vt 0.004098 0.130841 +vt 0.000000 0.112150 +vt 0.004098 0.112150 +vt 0.000000 0.140187 +vt 0.000000 0.130841 +vt 0.004098 0.168224 +vt 0.000000 0.149533 +vt 0.004098 0.149533 +vt 0.000000 0.177570 +vt 0.000000 0.168224 +vt 0.004098 0.186916 +vt 0.000000 0.196262 +vt 0.000000 0.186916 +vt 0.073770 0.224346 +vt 0.080851 0.233668 +vt 0.073770 0.261635 +vt 0.073770 0.336468 +vt 0.080862 0.345804 +vt 0.073770 0.373812 +vt 0.286885 0.224299 +vt 0.282787 0.205607 +vt 0.286885 0.205607 +vt 0.286885 0.186916 +vt 0.282787 0.196262 +vt 0.282787 0.186916 +vt 0.286885 0.168224 +vt 0.282787 0.177570 +vt 0.282787 0.168224 +vt 0.282787 0.149533 +vt 0.286885 0.149533 +vt 0.286885 0.130841 +vt 0.282787 0.140187 +vt 0.282787 0.130841 +vt 0.282787 0.112150 +vt 0.286885 0.112150 +vt 0.286885 0.093458 +vt 0.282787 0.102804 +vt 0.282787 0.093458 +vt 0.282787 0.074766 +vt 0.286885 0.074766 +vt 0.286885 0.056075 +vt 0.282787 0.065421 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.286885 0.037383 +vt 0.282787 0.018692 +vt 0.286885 0.018692 +vt 0.286885 0.000000 +vt 0.282787 0.009346 +vt 0.282787 -0.000000 +vt 0.571329 0.341081 +vt 0.573778 0.359421 +vt 0.567782 0.345750 +vt 0.575825 0.351334 +vt 0.581967 0.364425 +vt 0.581967 0.355087 +vt 0.590157 0.359421 +vt 0.588109 0.351334 +vt 0.596152 0.345750 +vt 0.594252 0.327074 +vt 0.592606 0.341081 +vt 0.588109 0.302814 +vt 0.596152 0.243035 +vt 0.592606 0.313068 +vt 0.569683 0.327074 +vt 0.565588 0.327074 +vt 0.557370 0.359421 +vt 0.559819 0.341081 +vt 0.563365 0.345750 +vt 0.549180 0.364425 +vt 0.555323 0.351334 +vt 0.540991 0.359421 +vt 0.549180 0.355087 +vt 0.534996 0.345750 +vt 0.543038 0.351334 +vt 0.532801 0.327074 +vt 0.538542 0.341081 +vt 0.598346 0.327074 +vt 0.598346 0.261711 +vt 0.565588 0.261711 +vt 0.571329 0.313068 +vt 0.575825 0.302814 +vt 0.567782 0.243035 +vt 0.573778 0.229364 +vt 0.581967 0.299061 +vt 0.581967 0.224360 +vt 0.590157 0.229364 +vt 0.561465 0.327074 +vt 0.565560 0.327074 +vt 0.532801 0.261711 +vt 0.538542 0.313068 +vt 0.559819 0.313068 +vt 0.555323 0.302814 +vt 0.563365 0.243035 +vt 0.549180 0.299061 +vt 0.557370 0.229364 +vt 0.540991 0.229364 +vt 0.543038 0.302814 +vt 0.534996 0.243035 +vt 0.476516 0.252326 +vt 0.483607 0.224321 +vt 0.490697 0.252326 +vt 0.476543 0.364441 +vt 0.483607 0.336542 +vt 0.490670 0.364441 +vt 0.620900 0.302820 +vt 0.625399 0.275706 +vt 0.625399 0.313079 +vt 0.614754 0.299064 +vt 0.620900 0.285965 +vt 0.608608 0.302820 +vt 0.614754 0.289721 +vt 0.604109 0.313079 +vt 0.608608 0.285965 +vt 0.602462 0.327095 +vt 0.604109 0.275706 +vt 0.627046 0.261690 +vt 0.627046 0.327095 +vt 0.631143 0.327095 +vt 0.631143 0.261690 +vt 0.602462 0.261690 +vt 0.598365 0.327095 +vt 0.598365 0.261690 +vt 0.600561 0.345781 +vt 0.604109 0.341110 +vt 0.608608 0.351370 +vt 0.614754 0.355125 +vt 0.606559 0.359461 +vt 0.620900 0.351370 +vt 0.614754 0.364468 +vt 0.625399 0.341110 +vt 0.622949 0.359461 +vt 0.628948 0.345781 +vt 0.628948 0.243004 +vt 0.625399 0.247675 +vt 0.620900 0.237416 +vt 0.614754 0.233660 +vt 0.622949 0.229324 +vt 0.606559 0.229324 +vt 0.608608 0.237416 +vt 0.600561 0.243004 +vt 0.604109 0.247675 +vt 0.643444 0.310911 +vt 0.647541 0.280377 +vt 0.647541 0.308408 +vt 0.651638 0.310911 +vt 0.654638 0.271034 +vt 0.654638 0.317751 +vt 0.655736 0.327095 +vt 0.640444 0.271034 +vt 0.640444 0.317751 +vt 0.639346 0.261690 +vt 0.639346 0.327095 +vt 0.631152 0.327095 +vt 0.631152 0.261690 +vt 0.663930 0.327095 +vt 0.655736 0.261690 +vt 0.663930 0.261690 +vt 0.654638 0.336438 +vt 0.661735 0.345781 +vt 0.651638 0.343278 +vt 0.655736 0.359461 +vt 0.647541 0.345781 +vt 0.647541 0.364468 +vt 0.639346 0.359461 +vt 0.640444 0.336438 +vt 0.633347 0.345781 +vt 0.640444 0.252347 +vt 0.633347 0.243004 +vt 0.643444 0.245507 +vt 0.639346 0.229324 +vt 0.647541 0.224317 +vt 0.651638 0.245507 +vt 0.655736 0.229324 +vt 0.661735 0.243004 +vt 0.654638 0.252347 +vt 0.713115 0.186916 +vt 0.721311 0.289720 +vt 0.713115 0.289720 +vt 0.803279 0.252336 +vt 0.778689 0.271028 +vt 0.770492 0.112150 +vt 0.721311 0.485981 +vt 0.713115 0.383178 +vt 0.721311 0.383178 +vt 0.803279 0.420561 +vt 0.827869 0.467290 +vt 0.770492 0.560748 +vt 0.975410 0.317757 +vt 0.909836 0.261682 +vt 0.975410 0.261682 +vt 0.028689 0.728972 +vt 0.266393 0.663551 +vt 0.266393 0.728972 +vt 0.266393 0.588785 +vt 0.028689 0.523364 +vt 0.266393 0.523364 +vt 0.020492 0.570093 +vt 0.028689 0.588785 +vt 0.020492 0.682243 +vt 0.028689 0.663551 +vt 0.852459 0.504673 +vt 0.877049 0.392523 +vt 0.877049 0.504673 +vt 0.975410 0.635514 +vt 1.000000 0.616822 +vt 1.000000 0.635514 +vt 0.975410 0.598131 +vt 1.000000 0.598131 +vt 0.852459 0.392523 +vt 0.877049 0.317757 +vt 0.836066 0.112150 +vt 0.852459 0.186916 +vt 0.827869 0.205607 +vt 0.836066 0.560748 +vt 0.852459 0.485981 +vt 0.852459 0.579439 +vt 0.852459 0.102804 +vt 0.852459 0.000000 +vt 0.885246 0.018692 +vt 0.959016 0.158879 +vt 0.942623 0.102804 +vt 0.959016 0.102804 +vt 0.959016 0.084112 +vt 0.934426 0.037383 +vt 0.942623 0.158879 +vt 0.909836 0.242991 +vt 0.885246 0.242991 +vt 0.852459 0.158879 +vt 0.885246 0.392523 +vt 0.909836 0.317757 +vt 0.909836 0.392523 +vt 0.934426 0.224299 +vt 0.959016 0.177570 +vt 0.893443 0.485981 +vt 0.909836 0.392523 +vt 0.877049 0.392523 +vt 0.893443 0.485981 +vt 0.885246 0.504673 +vt 0.934942 0.474589 +vt 0.956208 0.442187 +vt 0.970412 0.393687 +vt 0.266393 0.738318 +vt 0.274590 0.644860 +vt 0.315574 0.663551 +vt 0.803279 0.803738 +vt 0.721311 0.803738 +vt 0.803279 0.691589 +vt 0.520492 0.691589 +vt 0.520492 0.803738 +vt 0.495902 0.710280 +vt 0.545082 0.691589 +vt 0.553279 0.710280 +vt 0.336066 0.878505 +vt 0.344262 0.887850 +vt 0.336066 0.887850 +vt 0.344262 0.934579 +vt 0.336066 0.925234 +vt 0.344262 0.925234 +vt 0.368852 0.887850 +vt 0.393443 0.878505 +vt 0.401639 0.887850 +vt 0.393443 0.934579 +vt 0.368852 0.925234 +vt 0.401639 0.925234 +vt 0.364754 0.878505 +vt 0.364754 0.934579 +vt 0.241803 0.738318 +vt 0.258197 0.728972 +vt 0.241803 0.728972 +vt 0.258197 0.738318 +vt 0.241803 0.728972 +vt 0.258197 0.728972 +vt 0.262295 0.747664 +vt 0.266393 0.785047 +vt 0.266393 0.747664 +vt 0.262295 0.785047 +vt 0.266393 0.747664 +vt 0.266393 0.785047 +vt 0.262295 0.747664 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.204918 0.794393 +vt 0.192623 0.803738 +vt 0.204918 0.831776 +vt 0.192623 0.841121 +vt 0.196721 0.869159 +vt 0.209016 0.841121 +vt 0.209016 0.841121 +vt 0.196721 0.869159 +vt 0.225410 0.841121 +vt 0.192623 0.897196 +vt 0.225410 0.841121 +vt 0.168033 0.785047 +vt 0.172131 0.766355 +vt 0.172131 0.785047 +vt 0.180328 0.803738 +vt 0.184426 0.785047 +vt 0.184426 0.803738 +vt 0.168033 0.803738 +vt 0.172131 0.803738 +vt 0.180328 0.785047 +vt 0.180328 0.766355 +vt 0.778689 0.803764 +vt 0.785777 0.813097 +vt 0.778689 0.841096 +vt 0.762295 0.878505 +vt 0.766393 0.869159 +vt 0.766393 0.878505 +vt 0.762295 0.822430 +vt 0.766393 0.831776 +vt 0.762295 0.831776 +vt 0.762295 0.906542 +vt 0.766393 0.915888 +vt 0.762295 0.915888 +vt 0.766393 0.887850 +vt 0.762295 0.887850 +vt 0.762295 0.841121 +vt 0.766393 0.841121 +vt 0.762295 0.813084 +vt 0.766393 0.803738 +vt 0.766393 0.813084 +vt 0.762295 0.897196 +vt 0.766393 0.897196 +vt 0.766393 0.850467 +vt 0.762295 0.850467 +vt 0.762295 0.859813 +vt 0.762295 0.869159 +vt 0.766393 0.822430 +vt 0.766393 0.906542 +vt 0.766393 0.859813 +vt 0.787992 0.831765 +vt 0.795082 0.803760 +vt 0.802173 0.831765 +vt 0.000000 0.214953 +vt 0.000000 0.028037 +vt 0.000000 0.046729 +vt 0.000000 0.084112 +vt 0.000000 0.121495 +vt 0.000000 0.158879 +vt 0.069682 0.259137 +vt 0.066690 0.233668 +vt 0.066690 0.252313 +vt 0.065594 0.242991 +vt 0.069682 0.226844 +vt 0.077859 0.226844 +vt 0.081947 0.242991 +vt 0.080851 0.252313 +vt 0.077858 0.259137 +vt 0.069676 0.371311 +vt 0.066679 0.345804 +vt 0.066679 0.364476 +vt 0.065582 0.355140 +vt 0.069676 0.338970 +vt 0.077865 0.338970 +vt 0.081959 0.355140 +vt 0.080862 0.364476 +vt 0.077865 0.371311 +vt 0.282787 0.214953 +vt 0.282787 0.158879 +vt 0.282787 0.121495 +vt 0.282787 0.084112 +vt 0.282787 0.046729 +vt 0.282787 0.028037 +vt 0.536896 0.327074 +vt 0.565560 0.261711 +vt 0.549180 0.224360 +vt 0.487700 0.259160 +vt 0.483607 0.261661 +vt 0.479513 0.259160 +vt 0.475419 0.242991 +vt 0.476516 0.233656 +vt 0.479513 0.226822 +vt 0.487700 0.226822 +vt 0.490697 0.233656 +vt 0.491794 0.242991 +vt 0.487685 0.371248 +vt 0.483607 0.373740 +vt 0.479529 0.371248 +vt 0.475451 0.355141 +vt 0.476543 0.345842 +vt 0.479529 0.339034 +vt 0.487685 0.339034 +vt 0.490670 0.345842 +vt 0.491763 0.355141 +vt 0.614754 0.224317 +vt 0.643444 0.277874 +vt 0.651638 0.277874 +vt 0.643444 0.343278 +vt 0.647541 0.243004 +vt 0.721311 0.186916 +vt 0.745902 0.289720 +vt 0.754098 0.271028 +vt 0.737705 0.149533 +vt 0.713115 0.485981 +vt 0.754098 0.401869 +vt 0.745902 0.383178 +vt 0.778689 0.401869 +vt 0.737705 0.523364 +vt 0.020492 0.542056 +vt 0.020492 0.710280 +vt 0.975410 0.616822 +vt 0.852459 0.317757 +vt 0.852459 0.093458 +vt 0.877049 0.000000 +vt 0.909836 0.018692 +vt 0.877049 0.261682 +vt 0.852459 0.261682 +vt 0.885246 0.317757 +vt 0.877049 0.504673 +vt 0.885246 0.504673 +vt 0.909836 0.485981 +vt 0.909836 0.485981 +vt 0.970417 0.393693 +vt 0.975410 0.336449 +vt 0.909836 0.317757 +vt 0.975410 0.317757 +vt 0.975410 0.336449 +vt 0.956204 0.442175 +vt 0.934941 0.474575 +vt 0.315574 0.738318 +vt 0.307377 0.757009 +vt 0.274590 0.757009 +vt 0.266393 0.663551 +vt 0.307377 0.644860 +vt 0.713115 0.785047 +vt 0.713115 0.710280 +vt 0.721311 0.691589 +vt 0.811475 0.710280 +vt 0.811475 0.785047 +vt 0.504098 0.803738 +vt 0.495902 0.785047 +vt 0.504098 0.691589 +vt 0.553279 0.785047 +vt 0.545082 0.803738 +vt 0.344262 0.878505 +vt 0.336066 0.934579 +vt 0.368852 0.878505 +vt 0.368852 0.934579 +vt 0.348361 0.878505 +vt 0.348361 0.934579 +vt 0.258197 0.738318 +vt 0.241803 0.738318 +vt 0.262295 0.785047 +vt 0.192623 0.841121 +vt 0.184426 0.850467 +vt 0.184426 0.850467 +vt 0.192623 0.897196 +vt 0.184426 0.897196 +vt 0.184426 0.897196 +vt 0.774596 0.838595 +vt 0.771600 0.813097 +vt 0.771600 0.831763 +vt 0.770503 0.822430 +vt 0.774596 0.806265 +vt 0.782781 0.806265 +vt 0.786874 0.822430 +vt 0.785777 0.831763 +vt 0.782781 0.838595 +vt 0.762295 0.803738 +vt 0.799176 0.838599 +vt 0.795082 0.841100 +vt 0.790989 0.838599 +vt 0.786895 0.822430 +vt 0.787992 0.813095 +vt 0.790989 0.806261 +vt 0.799176 0.806261 +vt 0.802173 0.813095 +vt 0.803269 0.822430 +vt 0.282787 0.149533 +vt 0.282787 0.130841 +vt 0.282787 0.018692 +vt 0.282787 0.074766 +vt 0.282787 0.205607 +vt 0.282787 0.093458 +vt 0.282787 0.112150 +vt 0.282787 0.168224 +vt 0.282787 -0.000000 +vt 0.282787 0.056075 +vt 0.282787 0.037383 +vt 0.282787 0.186916 +vt 0.663934 0.224299 +vt 0.663934 0.205607 +vt 0.663934 0.186916 +vt 0.663934 0.168224 +vt 0.663934 0.149533 +vt 0.663934 0.130841 +vt 0.663934 0.112150 +vt 0.663934 0.093458 +vt 0.663934 0.074766 +vt 0.663934 0.056075 +vt 0.663934 0.037383 +vt 0.663934 0.018692 +vt 0.663934 0.000000 +vt -0.000000 0.252336 +vt 0.065574 0.261682 +vt -0.000000 0.261682 +vt -0.000000 0.299065 +vt 0.065574 0.308411 +vt -0.000000 0.308411 +vt -0.000000 0.327103 +vt 0.065574 0.336449 +vt -0.000000 0.336449 +vt -0.000000 0.242991 +vt 0.065574 0.252336 +vt -0.000000 0.289720 +vt 0.065574 0.299065 +vt -0.000000 0.271028 +vt 0.065574 0.280374 +vt -0.000000 0.280374 +vt -0.000000 0.317757 +vt 0.065574 0.327103 +vt -0.000000 0.233645 +vt 0.065574 0.242991 +vt 0.065574 0.289720 +vt 0.065574 0.271028 +vt 0.065574 0.317757 +vt -0.000000 0.224299 +vt 0.065574 0.233645 +vt -0.000000 0.364486 +vt 0.065574 0.373832 +vt -0.000000 0.373832 +vt -0.000000 0.411215 +vt 0.065574 0.420561 +vt -0.000000 0.420561 +vt -0.000000 0.439252 +vt 0.065574 0.448598 +vt -0.000000 0.448598 +vt -0.000000 0.355140 +vt 0.065574 0.364486 +vt -0.000000 0.401869 +vt 0.065574 0.411215 +vt -0.000000 0.383178 +vt 0.065574 0.392523 +vt -0.000000 0.392523 +vt -0.000000 0.429907 +vt 0.065574 0.439252 +vt -0.000000 0.345794 +vt 0.065574 0.355140 +vt 0.065574 0.401869 +vt 0.065574 0.383178 +vt 0.065574 0.429907 +vt -0.000000 0.336449 +vt 0.065574 0.345794 +vt 0.688525 0.196262 +vt 0.704918 0.214953 +vt 0.688525 0.214953 +vt 0.688525 0.158879 +vt 0.704918 0.177570 +vt 0.688525 0.177570 +vt 0.704918 0.196262 +vt 0.688525 0.140187 +vt 0.704918 0.158879 +vt 0.688525 0.121495 +vt 0.704918 0.140187 +vt 0.704918 0.233645 +vt 0.688525 0.233645 +vt 0.688525 0.299065 +vt 0.704918 0.299065 +vt 0.409836 0.448598 +vt 0.081967 0.429907 +vt 0.409836 0.429907 +vt 0.081967 0.411215 +vt 0.409836 0.411215 +vt 0.081967 0.392523 +vt 0.409836 0.392523 +vt 0.081967 0.373832 +vt 0.409836 0.373832 +vt 0.081967 0.355140 +vt 0.409836 0.355140 +vt 0.081967 0.336449 +vt 0.409836 0.336449 +vt 0.081967 0.317757 +vt 0.409836 0.317757 +vt 0.081967 0.299065 +vt 0.409836 0.299065 +vt 0.081967 0.280374 +vt 0.409836 0.280374 +vt 0.081967 0.261682 +vt 0.409836 0.261682 +vt 0.081967 0.242991 +vt 0.409836 0.242991 +vt 0.081967 0.224299 +vt 0.409836 0.224299 +vt 0.704918 0.056075 +vt 0.688525 0.056075 +vt 0.688525 0.336449 +vt 0.704918 0.355140 +vt 0.688525 0.355140 +vt 0.688525 0.037383 +vt 0.688525 0.317757 +vt 0.704918 0.336449 +vt 0.688525 0.018692 +vt 0.704918 0.037383 +vt 0.704918 0.317757 +vt 0.688525 -0.000000 +vt 0.704918 0.018692 +vt 0.663934 0.317757 +vt 0.688525 0.336449 +vt 0.663934 0.336449 +vt 0.663934 0.214953 +vt 0.688525 0.233645 +vt 0.663934 0.233645 +vt 0.688525 0.355140 +vt 0.663934 0.355140 +vt 0.663934 0.121495 +vt 0.688525 0.140187 +vt 0.663934 0.140187 +vt 0.663934 -0.000000 +vt 0.688525 0.018692 +vt 0.663934 0.018692 +vt 0.688525 0.158879 +vt 0.663934 0.158879 +vt 0.688525 0.037383 +vt 0.663934 0.037383 +vt 0.688525 0.177570 +vt 0.663934 0.177570 +vt 0.688525 0.056075 +vt 0.663934 0.056075 +vt 0.688525 0.299065 +vt 0.663934 0.299065 +vt 0.688525 0.121495 +vt 0.688525 0.196262 +vt 0.663934 0.196262 +vt 0.688525 0.317757 +vt 0.688525 0.214953 +vt 0.409836 0.401869 +vt 0.475410 0.392523 +vt 0.475410 0.401869 +vt 0.409836 0.355140 +vt 0.475410 0.345794 +vt 0.475410 0.355140 +vt 0.409836 0.327103 +vt 0.475410 0.317757 +vt 0.475410 0.327103 +vt 0.409836 0.280374 +vt 0.475410 0.271028 +vt 0.475410 0.280374 +vt 0.409836 0.345794 +vt 0.475410 0.336449 +vt 0.409836 0.317757 +vt 0.475410 0.308411 +vt 0.409836 0.271028 +vt 0.475410 0.261682 +vt 0.409836 0.448598 +vt 0.475410 0.439252 +vt 0.475410 0.448598 +vt 0.409836 0.308411 +vt 0.475410 0.299065 +vt 0.409836 0.261682 +vt 0.475410 0.252336 +vt 0.409836 0.439252 +vt 0.475410 0.429907 +vt 0.409836 0.299065 +vt 0.475410 0.289720 +vt 0.409836 0.392523 +vt 0.475410 0.383178 +vt 0.409836 0.252336 +vt 0.475410 0.242991 +vt 0.409836 0.429907 +vt 0.475410 0.420561 +vt 0.409836 0.289720 +vt 0.409836 0.383178 +vt 0.475410 0.373832 +vt 0.409836 0.242991 +vt 0.475410 0.233645 +vt 0.409836 0.420561 +vt 0.475410 0.411215 +vt 0.409836 0.373832 +vt 0.475410 0.364486 +vt 0.409836 0.233645 +vt 0.475410 0.224299 +vt 0.409836 0.411215 +vt 0.409836 0.364486 +vt 0.409836 0.336449 +vt 0.475410 0.336449 +vt 0.745902 0.308411 +vt 0.754098 0.289720 +vt 0.778689 0.289720 +vt 0.754098 0.308411 +vt 0.803279 0.289720 +vt 0.778689 0.308411 +vt 0.721311 0.018692 +vt 0.737705 0.093458 +vt 0.721311 0.074766 +vt 0.721311 0.364486 +vt 0.745902 0.364486 +vt 0.754098 0.364486 +vt 0.778689 0.364486 +vt 0.754098 0.383178 +vt 0.803279 0.364486 +vt 0.778689 0.383178 +vt 0.827869 0.383178 +vt 0.827869 0.364486 +vt 0.852459 0.383178 +vt 0.770492 0.093458 +vt 0.836066 0.074766 +vt 0.840164 0.093458 +vt 0.000000 0.588785 +vt 0.008197 0.663551 +vt 0.000000 0.663551 +vt 0.020492 0.588785 +vt 0.020492 0.663551 +vt 0.008197 0.588785 +vt 0.225410 0.514019 +vt 0.028689 0.448598 +vt 0.225410 0.654206 +vt 0.836066 0.018692 +vt 0.770492 0.000000 +vt 0.836066 0.000000 +vt 0.770492 0.074766 +vt 0.827869 0.308411 +vt 0.803279 0.308411 +vt 0.803279 0.383178 +vt 1.000000 0.504673 +vt 0.975410 0.560748 +vt 0.975410 0.504673 +vt 1.000000 0.336449 +vt 0.975410 0.392523 +vt 1.000000 0.317757 +vt 1.000000 0.392523 +vt 0.975410 0.448598 +vt 1.000000 0.560748 +vt 1.000000 0.448598 +vt 0.852459 0.289720 +vt 0.827869 0.289720 +vt 0.852459 -0.000000 +vt 0.426230 0.663551 +vt 0.442623 0.738318 +vt 0.426230 0.738318 +vt 0.336066 0.448598 +vt 0.426230 0.523364 +vt 0.336066 0.523364 +vt 0.319672 0.635514 +vt 0.426230 0.635514 +vt 0.319672 0.766355 +vt 0.331967 0.551402 +vt 0.426230 0.850467 +vt 0.442623 0.766355 +vt 0.442623 0.850467 +vt 0.426230 0.551402 +vt 0.331967 0.850467 +vt 0.426230 0.766355 +vt 0.336066 0.878505 +vt 0.426230 0.878505 +vt 0.475410 0.663551 +vt 0.475410 0.738318 +vt 0.491803 0.738318 +vt 0.491803 0.663551 +vt 0.442623 0.635514 +vt 0.442623 0.551402 +vt 0.553279 0.813084 +vt 0.536885 0.392523 +vt 0.713115 0.364486 +vt 0.713115 0.392523 +vt 0.553279 0.682243 +vt 0.713115 0.682243 +vt 0.536885 0.467290 +vt 0.713115 0.495327 +vt 0.536885 0.495327 +vt 0.713115 1.000000 +vt 0.553279 0.869159 +vt 0.713115 0.813084 +vt 0.553279 0.626168 +vt 0.545082 0.588785 +vt 0.147541 0.897196 +vt 0.057377 0.934579 +vt 0.057377 0.897196 +vt 0.163934 0.897196 +vt 0.147541 0.934579 +vt 0.176230 0.897196 +vt 0.163934 0.934579 +vt 0.192623 0.897196 +vt 0.176230 0.934579 +vt 0.250000 0.897196 +vt 0.192623 0.934579 +vt 0.266393 0.897196 +vt 0.250000 0.934579 +vt 0.336066 0.971963 +vt 0.348361 0.971963 +vt 0.364754 0.971963 +vt 0.368852 0.971963 +vt 0.409836 0.934579 +vt 0.393443 0.971963 +vt 0.409836 0.971963 +vt 0.426230 0.934579 +vt 0.426230 0.971963 +vt 0.077869 0.728972 +vt 0.061475 0.766355 +vt 0.061475 0.728972 +vt 0.077869 0.766355 +vt 0.086066 0.728972 +vt 0.086066 0.766355 +vt 0.102459 0.728972 +vt 0.020492 0.766355 +vt 0.168033 0.766355 +vt 0.184426 0.728972 +vt 0.184426 0.766355 +vt 0.143443 0.728972 +vt 0.102459 0.766355 +vt 0.159836 0.728972 +vt 0.143443 0.766355 +vt 0.159836 0.766355 +vt 0.168033 0.728972 +vt 0.159836 0.803738 +vt 0.159836 0.785047 +vt 0.168033 0.766355 +vt 0.770492 0.018692 +vt 0.737705 0.000000 +vt 0.721311 -0.000000 +vt 0.721311 0.093458 +vt 0.713115 0.850467 +vt 0.713115 0.897196 +vt 0.713115 0.906542 +vt 0.713115 0.803738 +vt 0.713115 0.813084 +vt 0.713115 0.859813 +vt 0.713115 0.822430 +vt 0.713115 0.869159 +vt 0.713115 0.831776 +vt 0.713115 0.878505 +vt 0.713115 0.841121 +vt 0.713115 0.887850 +vt 0.770492 0.813084 +vt 0.770492 0.897196 +vt 0.770492 0.850467 +vt 0.770492 0.869159 +vt 0.770492 0.822430 +vt 0.770492 0.906542 +vt 0.770492 0.859813 +vt 0.770492 0.878505 +vt 0.770492 0.831776 +vt 0.770492 0.915888 +vt 0.770492 0.887850 +vt 0.770492 0.841121 +vt 0.282787 0.224299 +vt 0.065574 0.224299 +vt 0.065574 0.336449 +vt 0.704918 0.121495 +vt 0.081967 0.448598 +vt 0.704918 0.000000 +vt 0.688525 -0.000000 +vt 0.409836 0.336449 +vt 0.409836 0.224299 +vt 0.721311 0.308411 +vt 0.266393 0.448598 +vt 0.225410 0.457944 +vt 0.266393 0.457944 +vt 0.266393 0.514019 +vt 0.225410 0.598131 +vt 0.266393 0.598131 +vt 0.266393 0.654206 +vt 0.442623 0.663551 +vt 0.426230 0.448598 +vt 0.536885 0.364486 +vt 0.713115 0.467290 +vt 0.545082 0.906542 +vt 0.266393 0.934579 +vt 0.344262 0.971963 +vt 0.020492 0.728972 +vt 0.159836 0.766355 +vt 0.713115 0.915888 +vt 0.770492 0.803738 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.4472 0.8944 +vn -0.8660 0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9914 0.1305 0.0000 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 0.0000 +vn -0.9914 -0.1305 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.9871 -0.1602 +vn 0.0000 0.8736 -0.4866 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.8112 0.5847 +vn 0.0000 0.9024 -0.4308 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 -0.9732 0.2298 +vn 0.0000 -0.9522 0.3054 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9231 0.3845 +vn 0.0000 0.3808 0.9246 +vn 0.0000 0.9952 -0.0980 +vn 0.0000 0.0980 -0.9952 +vn 0.0000 0.3827 -0.9239 +vn 0.0000 -0.8944 0.4472 +vn 0.3702 0.6646 -0.6490 +vn -0.4346 -0.0292 -0.9002 +vn -0.3702 0.6646 -0.6490 +vn 0.3158 0.8487 -0.4243 +vn -0.3158 0.8487 -0.4243 +vn -0.3875 -0.7728 0.5027 +vn 0.3803 -0.8832 0.2744 +vn 0.3875 -0.7728 0.5027 +vn 0.8592 0.4574 -0.2292 +vn 0.9085 0.1932 -0.3706 +vn -0.8592 0.4574 -0.2292 +vn 0.9547 -0.2517 0.1590 +vn -0.9201 -0.3912 -0.0217 +vn -0.4362 -0.7533 -0.4922 +vn 0.9201 -0.3912 -0.0217 +vn -0.9547 -0.2517 0.1590 +vn -0.9085 0.1932 -0.3706 +vn -0.3803 -0.8832 0.2744 +vn 0.4362 -0.7533 -0.4922 +vn 0.4346 -0.0292 -0.9002 +vn -0.3867 0.9210 -0.0472 +vn -0.9193 0.3932 -0.0202 +vn -0.3779 0.9246 -0.0474 +vn -0.3846 -0.8870 0.2557 +vn -0.8923 -0.4340 0.1241 +vn -0.3487 -0.9012 0.2575 +vn 0.3867 0.9210 -0.0472 +vn 0.9193 0.3932 -0.0202 +vn 0.9281 0.3719 -0.0191 +vn 0.3846 -0.8870 0.2557 +vn 0.8923 -0.4340 0.1241 +vn 0.9180 -0.3806 0.1114 +vn 0.3779 0.9246 -0.0474 +vn -0.9281 0.3719 -0.0191 +vn 0.0000 0.4719 -0.8817 +vn 0.0000 0.8321 -0.5547 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.9239 -0.3827 +vn 0.0000 -0.9571 0.2898 +vn 0.0000 -0.4719 0.8817 +vn 0.0000 0.9571 0.2898 +vn 0.0000 0.0985 0.9951 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.9571 -0.2898 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.2298 0.9732 +vn 0.0000 -0.7071 -0.7071 +vn -0.9180 -0.3806 0.1114 +vn 0.3487 -0.9012 0.2575 +s off +f 7/1/1 54/2/1 6/3/1 +f 7/4/1 56/5/1 55/6/1 +f 9/7/1 56/8/1 8/9/1 +f 10/10/1 57/11/1 9/7/1 +f 10/10/1 59/12/1 58/13/1 +f 12/14/1 59/15/1 11/16/1 +f 12/14/1 49/17/1 60/18/1 +f 2/19/1 49/20/1 1/21/1 +f 2/19/1 51/22/1 50/23/1 +f 4/24/1 51/25/1 3/26/1 +f 4/24/1 53/27/1 52/28/1 +f 5/29/1 54/30/1 53/31/1 +f 67/32/1 69/33/1 61/34/1 +f 91/35/1 93/36/1 85/37/1 +f 43/38/1 78/39/1 42/40/1 +f 41/41/1 78/42/1 77/43/1 +f 40/44/1 77/45/1 76/46/1 +f 40/44/1 75/47/1 39/48/1 +f 38/49/1 75/50/1 74/51/1 +f 38/49/1 73/52/1 37/53/1 +f 48/54/1 73/55/1 84/56/1 +f 48/54/1 83/57/1 47/58/1 +f 46/59/1 83/60/1 82/61/1 +f 46/59/1 81/62/1 45/63/1 +f 45/63/1 80/64/1 44/65/1 +f 43/66/1 80/67/1 79/68/1 +f 107/69/2 115/70/2 114/71/2 +f 108/72/2 109/73/2 115/70/2 +f 97/74/2 110/75/2 109/73/2 +f 98/76/2 111/77/2 110/75/2 +f 100/78/2 111/77/2 99/79/2 +f 102/80/2 160/81/2 101/82/2 +f 106/83/2 114/71/2 113/84/2 +f 122/85/1 133/86/1 121/87/1 +f 116/88/1 134/89/1 122/85/1 +f 117/90/1 123/91/1 116/88/1 +f 118/92/1 124/93/1 117/90/1 +f 119/94/1 125/95/1 118/92/1 +f 112/96/2 101/82/2 159/97/2 +f 165/98/2 105/99/2 113/84/2 +f 104/100/2 164/101/2 163/102/2 +f 103/103/2 163/102/2 162/104/2 +f 103/103/2 161/105/2 102/80/2 +f 121/87/1 132/106/1 120/107/1 +f 166/108/1 127/109/1 119/94/1 +f 120/107/1 132/106/1 131/110/1 +f 130/111/1 171/112/1 131/110/1 +f 129/113/1 170/114/1 130/111/1 +f 168/115/1 129/113/1 128/116/1 +f 167/117/1 128/116/1 127/109/1 +f 247/118/2 243/119/2 239/120/2 +f 235/121/2 231/122/2 227/123/2 +f 20/124/1 145/125/1 21/126/1 +f 19/127/1 146/128/1 20/124/1 +f 18/129/1 135/130/1 19/127/1 +f 17/131/1 136/132/1 18/129/1 +f 16/133/1 137/134/1 17/131/1 +f 21/126/1 144/135/1 22/136/1 +f 177/137/1 144/135/1 186/138/1 +f 138/139/1 176/140/1 180/141/1 +f 175/142/1 16/133/1 15/143/1 +f 14/144/1 175/142/1 15/143/1 +f 13/145/1 174/146/1 14/144/1 +f 24/147/1 173/148/1 13/145/1 +f 23/149/1 179/150/1 24/147/1 +f 22/136/1 178/151/1 23/149/1 +f 185/152/1 144/135/1 143/153/1 +f 142/154/1 185/152/1 143/153/1 +f 141/155/1 184/156/1 142/154/1 +f 182/157/1 141/155/1 140/158/1 +f 181/159/1 140/158/1 139/160/1 +f 180/141/1 139/160/1 138/139/1 +f 208/161/2 213/162/2 207/163/2 +f 213/162/2 206/164/2 207/163/2 +f 206/164/2 215/165/2 205/166/2 +f 215/165/2 204/167/2 205/166/2 +f 223/168/2 208/161/2 209/169/2 +f 222/170/2 209/169/2 210/171/2 +f 222/170/2 192/172/2 195/173/2 +f 190/174/2 216/175/2 194/176/2 +f 203/177/2 190/174/2 189/178/2 +f 202/179/2 189/178/2 187/180/2 +f 201/181/2 187/180/2 188/182/2 +f 193/183/2 201/181/2 188/182/2 +f 211/184/2 193/183/2 191/185/2 +f 192/172/2 211/184/2 191/185/2 +f 221/186/2 195/173/2 200/187/2 +f 220/188/2 200/187/2 199/189/2 +f 198/190/2 220/188/2 199/189/2 +f 218/191/2 198/190/2 197/192/2 +f 196/193/2 218/191/2 197/192/2 +f 194/176/2 217/194/2 196/193/2 +f 254/195/1 249/196/1 251/197/1 +f 261/198/3 258/199/3 263/200/3 +f 270/201/1 265/202/1 267/203/1 +f 278/204/4 276/205/4 279/206/4 +f 327/207/5 311/208/5 328/209/5 +f 288/210/4 286/211/4 284/212/4 +f 285/213/3 287/214/3 283/215/3 +f 293/216/3 287/214/3 289/217/3 +f 288/210/4 294/218/4 290/219/4 +f 304/220/1 305/221/1 303/222/1 +f 303/223/6 309/224/6 304/225/6 +f 309/224/7 330/226/7 329/227/7 +f 306/228/5 308/229/5 305/221/5 +f 264/230/3 331/231/3 260/232/3 +f 280/233/4 332/234/4 334/235/4 +f 254/236/4 251/237/4 257/238/4 +f 318/239/8 336/240/8 319/241/8 +f 319/242/4 336/240/4 262/243/4 +f 335/244/3 274/245/3 272/246/3 +f 254/236/6 335/244/6 269/247/6 +f 307/248/1 312/249/1 308/250/1 +f 277/251/3 335/244/3 318/252/3 +f 329/253/4 307/254/4 306/255/4 +f 330/256/3 310/257/3 303/222/3 +f 325/258/4 281/259/4 307/254/4 +f 308/250/3 312/249/3 321/260/3 +f 337/261/1 345/262/1 340/263/1 +f 359/264/2 361/265/2 364/266/2 +f 362/267/9 357/268/9 371/269/9 +f 362/267/1 365/270/1 373/271/1 +f 400/272/4 394/273/4 396/274/4 +f 397/275/3 395/276/3 393/277/3 +f 392/278/4 402/279/4 390/280/4 +f 401/281/3 391/282/3 389/283/3 +f 394/273/4 404/284/4 392/278/4 +f 403/285/3 393/277/3 391/282/3 +f 410/286/4 384/287/4 386/288/4 +f 407/289/3 385/290/3 383/291/3 +f 414/292/4 380/293/4 382/294/4 +f 411/295/3 381/296/3 379/297/3 +f 384/287/4 414/292/4 382/294/4 +f 413/298/3 383/291/3 381/296/3 +f 386/288/4 416/299/4 410/286/4 +f 388/300/4 418/301/4 416/299/4 +f 385/290/3 415/302/3 387/303/3 +f 387/303/3 417/304/3 389/305/3 +f 406/306/4 422/307/4 418/301/4 +f 389/305/3 421/308/3 405/309/3 +f 380/293/4 420/310/4 376/311/4 +f 379/297/3 419/312/3 411/295/3 +f 420/310/4 422/307/4 406/306/4 +f 405/309/3 421/308/3 419/312/3 +f 428/313/4 432/314/4 430/315/4 +f 425/316/3 427/317/3 423/318/3 +f 424/319/4 430/315/4 426/320/4 +f 429/321/3 431/322/3 427/317/3 +f 451/323/1 453/324/1 445/325/1 +f 435/326/1 458/327/1 459/328/1 +f 441/329/1 466/330/1 442/331/1 +f 438/332/1 463/333/1 439/334/1 +f 435/326/1 460/335/1 436/336/1 +f 443/337/1 466/330/1 467/338/1 +f 440/339/1 463/340/1 464/341/1 +f 437/342/1 460/335/1 461/343/1 +f 443/337/1 468/344/1 444/345/1 +f 433/346/1 458/327/1 434/347/1 +f 440/339/1 465/348/1 441/329/1 +f 438/332/1 461/343/1 462/349/1 +f 433/346/1 468/344/1 457/350/1 +f 479/351/2 475/352/2 471/353/2 +f 7/1/1 55/354/1 54/2/1 +f 7/4/1 8/9/1 56/5/1 +f 9/7/1 57/355/1 56/8/1 +f 10/10/1 58/356/1 57/11/1 +f 10/10/1 11/16/1 59/12/1 +f 12/14/1 60/357/1 59/15/1 +f 12/14/1 1/21/1 49/17/1 +f 2/19/1 50/358/1 49/20/1 +f 2/19/1 3/26/1 51/22/1 +f 4/24/1 52/359/1 51/25/1 +f 4/24/1 5/29/1 53/27/1 +f 5/29/1 6/3/1 54/30/1 +f 61/34/1 62/360/1 65/361/1 +f 62/360/1 63/362/1 65/361/1 +f 63/362/1 64/363/1 65/361/1 +f 65/361/1 66/364/1 67/32/1 +f 67/32/1 68/365/1 69/33/1 +f 69/33/1 70/366/1 71/367/1 +f 71/367/1 72/368/1 69/33/1 +f 72/368/1 61/34/1 69/33/1 +f 65/361/1 67/32/1 61/34/1 +f 85/37/1 86/369/1 89/370/1 +f 86/369/1 87/371/1 89/370/1 +f 87/371/1 88/372/1 89/370/1 +f 89/370/1 90/373/1 91/35/1 +f 91/35/1 92/374/1 93/36/1 +f 93/36/1 94/375/1 95/376/1 +f 95/376/1 96/377/1 93/36/1 +f 96/377/1 85/37/1 93/36/1 +f 89/370/1 91/35/1 85/37/1 +f 43/38/1 79/378/1 78/39/1 +f 41/41/1 42/40/1 78/42/1 +f 40/44/1 41/41/1 77/45/1 +f 40/44/1 76/379/1 75/47/1 +f 38/49/1 39/48/1 75/50/1 +f 38/49/1 74/380/1 73/52/1 +f 48/54/1 37/53/1 73/55/1 +f 48/54/1 84/381/1 83/57/1 +f 46/59/1 47/58/1 83/60/1 +f 46/59/1 82/382/1 81/62/1 +f 45/63/1 81/383/1 80/64/1 +f 43/66/1 44/65/1 80/67/1 +f 107/69/2 108/72/2 115/70/2 +f 108/72/2 97/74/2 109/73/2 +f 97/74/2 98/76/2 110/75/2 +f 98/76/2 99/79/2 111/77/2 +f 100/78/2 112/96/2 111/77/2 +f 102/80/2 161/105/2 160/81/2 +f 106/83/2 107/69/2 114/71/2 +f 122/85/1 134/89/1 133/86/1 +f 116/88/1 123/91/1 134/89/1 +f 117/90/1 124/93/1 123/91/1 +f 118/92/1 125/95/1 124/93/1 +f 119/94/1 126/384/1 125/95/1 +f 100/78/2 101/82/2 112/96/2 +f 101/82/2 160/81/2 159/97/2 +f 164/101/2 105/99/2 165/98/2 +f 105/99/2 106/83/2 113/84/2 +f 104/100/2 105/99/2 164/101/2 +f 103/103/2 104/100/2 163/102/2 +f 103/103/2 162/104/2 161/105/2 +f 121/87/1 133/86/1 132/106/1 +f 167/117/1 127/109/1 166/108/1 +f 127/109/1 126/384/1 119/94/1 +f 171/112/1 172/385/1 131/110/1 +f 172/385/1 120/107/1 131/110/1 +f 130/111/1 170/114/1 171/112/1 +f 129/113/1 169/386/1 170/114/1 +f 168/115/1 169/386/1 129/113/1 +f 167/117/1 168/115/1 128/116/1 +f 239/120/2 238/387/2 237/388/2 +f 237/388/2 248/389/2 239/120/2 +f 248/389/2 247/118/2 239/120/2 +f 247/118/2 246/390/2 243/119/2 +f 246/390/2 245/391/2 243/119/2 +f 245/391/2 244/392/2 243/119/2 +f 243/119/2 242/393/2 241/394/2 +f 241/394/2 240/395/2 243/119/2 +f 240/395/2 239/120/2 243/119/2 +f 227/123/2 226/396/2 225/397/2 +f 225/397/2 236/398/2 227/123/2 +f 236/398/2 235/121/2 227/123/2 +f 235/121/2 234/399/2 231/122/2 +f 234/399/2 233/400/2 231/122/2 +f 233/400/2 232/401/2 231/122/2 +f 231/122/2 230/402/2 229/403/2 +f 229/403/2 228/404/2 231/122/2 +f 228/404/2 227/123/2 231/122/2 +f 20/124/1 146/128/1 145/125/1 +f 19/127/1 135/130/1 146/128/1 +f 18/129/1 136/132/1 135/130/1 +f 17/131/1 137/134/1 136/132/1 +f 16/133/1 138/139/1 137/134/1 +f 21/126/1 145/125/1 144/135/1 +f 177/137/1 22/136/1 144/135/1 +f 138/139/1 16/133/1 176/140/1 +f 175/142/1 176/140/1 16/133/1 +f 14/144/1 174/146/1 175/142/1 +f 13/145/1 173/148/1 174/146/1 +f 24/147/1 179/150/1 173/148/1 +f 23/149/1 178/151/1 179/150/1 +f 22/136/1 177/137/1 178/151/1 +f 185/152/1 186/138/1 144/135/1 +f 142/154/1 184/156/1 185/152/1 +f 141/155/1 183/405/1 184/156/1 +f 182/157/1 183/405/1 141/155/1 +f 181/159/1 182/157/1 140/158/1 +f 180/141/1 181/159/1 139/160/1 +f 208/161/2 224/406/2 213/162/2 +f 213/162/2 214/407/2 206/164/2 +f 206/164/2 214/407/2 215/165/2 +f 215/165/2 216/175/2 204/167/2 +f 223/168/2 224/406/2 208/161/2 +f 222/170/2 223/168/2 209/169/2 +f 222/170/2 210/171/2 192/172/2 +f 190/174/2 204/167/2 216/175/2 +f 203/177/2 204/167/2 190/174/2 +f 202/179/2 203/177/2 189/178/2 +f 201/181/2 202/179/2 187/180/2 +f 193/183/2 212/408/2 201/181/2 +f 211/184/2 212/408/2 193/183/2 +f 192/172/2 210/171/2 211/184/2 +f 221/186/2 222/170/2 195/173/2 +f 220/188/2 221/186/2 200/187/2 +f 198/190/2 219/409/2 220/188/2 +f 218/191/2 219/409/2 198/190/2 +f 196/193/2 217/194/2 218/191/2 +f 194/176/2 216/175/2 217/194/2 +f 254/195/1 253/410/1 249/196/1 +f 250/411/3 249/196/3 256/412/3 +f 249/196/3 253/410/3 256/412/3 +f 253/410/3 255/413/3 256/412/3 +f 255/413/3 263/200/3 258/199/3 +f 256/412/3 255/413/3 258/199/3 +f 263/200/3 264/230/3 260/232/3 +f 260/232/3 261/198/3 263/200/3 +f 270/201/1 269/414/1 265/202/1 +f 270/201/4 267/203/4 273/415/4 +f 267/203/4 268/416/4 273/415/4 +f 273/415/4 275/417/4 271/418/4 +f 275/417/4 278/204/4 279/206/4 +f 279/206/4 271/418/4 275/417/4 +f 271/418/4 270/201/4 273/415/4 +f 276/205/4 280/233/4 279/206/4 +f 327/207/5 312/249/5 311/208/5 +f 288/210/4 290/219/4 286/211/4 +f 285/213/3 289/217/3 287/214/3 +f 293/216/3 291/419/3 287/214/3 +f 288/210/4 292/420/4 294/218/4 +f 304/220/1 306/228/1 305/221/1 +f 303/223/6 310/421/6 309/224/6 +f 309/224/7 310/421/7 330/226/7 +f 306/228/5 307/422/5 308/229/5 +f 264/230/3 333/423/3 331/231/3 +f 280/233/4 276/205/4 332/234/4 +f 251/237/4 252/424/4 257/238/4 +f 257/238/4 259/425/4 336/240/4 +f 259/425/4 262/243/4 336/240/4 +f 336/240/4 254/236/4 257/238/4 +f 318/239/8 335/244/8 336/240/8 +f 272/246/3 266/426/3 265/427/3 +f 265/427/3 269/247/3 272/246/3 +f 269/247/3 335/244/3 272/246/3 +f 335/244/3 277/251/3 274/245/3 +f 254/236/6 336/240/6 335/244/6 +f 307/248/1 311/428/1 312/249/1 +f 306/255/4 304/429/4 329/253/4 +f 304/429/4 309/430/4 329/253/4 +f 329/253/4 326/431/4 307/254/4 +f 303/222/3 305/221/3 330/256/3 +f 305/221/3 308/250/3 330/256/3 +f 308/250/3 324/432/3 330/256/3 +f 281/259/4 282/433/4 307/254/4 +f 282/433/4 315/434/4 311/435/4 +f 307/254/4 282/433/4 311/435/4 +f 315/434/4 328/436/4 311/435/4 +f 307/254/4 326/431/4 325/258/4 +f 312/249/3 327/207/3 320/437/3 +f 320/437/3 321/260/3 312/249/3 +f 321/260/3 322/438/3 308/250/3 +f 322/438/3 323/439/3 308/250/3 +f 323/439/3 324/432/3 308/250/3 +f 340/263/1 339/440/1 349/441/1 +f 349/441/1 350/442/1 337/261/1 +f 337/261/1 338/443/1 345/262/1 +f 345/262/1 346/444/1 340/263/1 +f 340/263/1 349/441/1 337/261/1 +f 361/265/2 368/445/2 367/446/2 +f 367/446/2 366/447/2 361/265/2 +f 366/447/2 364/266/2 361/265/2 +f 364/266/2 370/448/2 369/449/2 +f 369/449/2 359/264/2 364/266/2 +f 358/450/9 372/451/9 357/268/9 +f 372/451/9 371/269/9 357/268/9 +f 371/269/9 363/452/9 362/267/9 +f 373/271/1 374/453/1 357/268/1 +f 374/453/1 360/454/1 357/268/1 +f 357/268/1 362/267/1 373/271/1 +f 400/272/4 398/455/4 394/273/4 +f 397/275/3 399/456/3 395/276/3 +f 392/278/4 404/457/4 402/279/4 +f 401/281/3 403/458/3 391/282/3 +f 394/273/4 398/459/4 404/284/4 +f 403/285/3 397/460/3 393/277/3 +f 410/286/4 408/461/4 384/287/4 +f 407/289/3 409/462/3 385/290/3 +f 414/292/4 412/463/4 380/293/4 +f 411/295/3 413/298/3 381/296/3 +f 384/287/4 408/461/4 414/292/4 +f 413/298/3 407/289/3 383/291/3 +f 386/288/4 388/300/4 416/299/4 +f 388/300/4 390/464/4 418/301/4 +f 385/290/3 409/462/3 415/302/3 +f 387/303/3 415/302/3 417/304/3 +f 418/301/4 390/464/4 406/306/4 +f 390/464/4 402/465/4 406/306/4 +f 405/309/3 401/466/3 389/305/3 +f 389/305/3 417/304/3 421/308/3 +f 380/293/4 412/463/4 420/310/4 +f 379/297/3 375/467/3 419/312/3 +f 377/468/4 376/311/4 406/306/4 +f 376/311/4 420/310/4 406/306/4 +f 419/312/3 375/467/3 405/309/3 +f 375/467/3 378/469/3 405/309/3 +f 425/316/3 429/321/3 427/317/3 +f 424/319/4 428/313/4 430/315/4 +f 445/325/1 446/470/1 449/471/1 +f 446/470/1 447/472/1 449/471/1 +f 447/472/1 448/473/1 449/471/1 +f 449/471/1 450/474/1 451/323/1 +f 451/323/1 452/475/1 453/324/1 +f 453/324/1 454/476/1 455/477/1 +f 455/477/1 456/478/1 453/324/1 +f 456/478/1 445/325/1 453/324/1 +f 449/471/1 451/323/1 445/325/1 +f 435/326/1 434/347/1 458/327/1 +f 441/329/1 465/348/1 466/330/1 +f 438/332/1 462/349/1 463/333/1 +f 435/326/1 459/328/1 460/335/1 +f 443/337/1 442/331/1 466/330/1 +f 440/339/1 439/479/1 463/340/1 +f 437/342/1 436/336/1 460/335/1 +f 443/337/1 467/338/1 468/344/1 +f 433/346/1 457/350/1 458/327/1 +f 440/339/1 464/341/1 465/348/1 +f 438/332/1 437/342/1 461/343/1 +f 433/346/1 444/345/1 468/344/1 +f 471/353/2 470/480/2 469/481/2 +f 469/481/2 480/482/2 471/353/2 +f 480/482/2 479/351/2 471/353/2 +f 479/351/2 478/483/2 475/352/2 +f 478/483/2 477/484/2 475/352/2 +f 477/484/2 476/485/2 475/352/2 +f 475/352/2 474/486/2 473/487/2 +f 473/487/2 472/488/2 475/352/2 +f 472/488/2 471/353/2 475/352/2 +s 1 +f 27/489/10 4/24/4 3/26/10 +f 26/490/11 3/26/10 2/19/11 +f 32/491/12 9/7/13 8/9/12 +f 35/492/14 12/14/15 11/16/14 +f 30/493/16 7/1/5 6/3/16 +f 36/494/15 1/21/6 12/14/15 +f 25/495/6 2/19/11 1/21/6 +f 28/496/4 5/29/17 4/24/4 +f 31/497/5 8/9/12 7/4/5 +f 34/498/3 11/16/14 10/10/3 +f 33/499/13 10/10/3 9/7/13 +f 29/500/17 6/3/16 5/29/17 +f 19/501/5 42/40/16 18/502/16 +f 18/502/16 41/41/17 17/503/17 +f 17/503/17 40/44/4 16/504/4 +f 16/504/4 39/48/10 15/505/10 +f 15/505/10 38/49/11 14/506/11 +f 14/506/11 37/53/6 13/507/6 +f 13/507/6 48/54/15 24/508/15 +f 24/508/15 47/58/14 23/509/14 +f 23/509/14 46/59/3 22/510/3 +f 22/510/3 45/63/13 21/511/13 +f 21/511/13 44/65/12 20/512/12 +f 20/512/12 43/66/5 19/513/5 +f 52/514/3 63/515/13 51/516/13 +f 59/517/17 70/518/4 58/519/4 +f 56/520/11 67/521/6 55/522/6 +f 53/523/14 64/524/3 52/514/3 +f 60/525/16 71/526/17 59/517/17 +f 50/527/12 61/528/5 49/529/5 +f 57/530/10 68/531/11 56/520/11 +f 54/532/15 65/533/14 53/523/14 +f 49/529/5 72/534/16 60/525/16 +f 51/516/13 62/535/12 50/527/12 +f 58/519/4 69/536/10 57/530/10 +f 55/537/6 66/538/15 54/532/15 +f 76/539/3 87/540/13 75/541/13 +f 83/542/17 94/543/4 82/544/4 +f 80/545/11 91/546/6 79/547/6 +f 77/548/14 88/549/3 76/539/3 +f 84/550/16 95/551/17 83/542/17 +f 74/552/12 85/553/5 73/554/5 +f 81/555/10 92/556/11 80/545/11 +f 78/557/15 89/558/14 77/548/14 +f 73/554/5 96/559/16 84/550/16 +f 75/541/13 86/560/12 74/552/12 +f 82/544/4 93/561/10 81/555/10 +f 79/562/6 90/563/15 78/557/15 +f 115/564/15 121/565/14 114/566/14 +f 110/567/11 116/568/6 109/569/6 +f 109/569/6 122/570/15 115/564/15 +f 111/571/10 117/572/11 110/567/11 +f 112/573/18 118/574/10 111/571/10 +f 114/566/14 120/575/19 113/576/19 +f 165/577/20 120/575/19 172/578/20 +f 141/579/5 152/580/16 140/581/16 +f 140/581/16 151/582/17 139/583/17 +f 139/583/17 150/584/4 138/585/4 +f 138/585/4 149/586/10 137/587/10 +f 137/587/10 148/588/11 136/589/11 +f 136/589/11 147/590/6 135/591/6 +f 135/591/6 158/592/15 146/593/15 +f 146/593/15 157/594/14 145/595/14 +f 145/595/14 156/596/3 144/597/3 +f 144/597/3 155/598/13 143/599/13 +f 143/599/13 154/600/12 142/601/12 +f 142/601/12 153/602/5 141/603/5 +f 166/604/21 112/573/18 159/605/21 +f 163/606/12 169/607/5 162/608/5 +f 160/609/17 166/604/21 159/605/21 +f 164/610/13 170/611/12 163/606/12 +f 161/612/16 167/613/17 160/609/17 +f 165/577/20 171/614/13 164/610/13 +f 162/615/5 168/616/16 161/612/16 +f 181/617/17 197/618/16 182/619/16 +f 175/620/10 190/621/18 176/622/18 +f 182/619/16 198/623/5 183/624/5 +f 177/625/19 191/626/14 178/627/14 +f 183/628/5 199/629/12 184/630/12 +f 178/627/14 193/631/15 179/632/15 +f 184/630/12 200/633/13 185/634/13 +f 179/632/15 188/635/6 173/636/6 +f 185/634/13 195/637/20 186/638/20 +f 176/622/18 194/639/21 180/640/21 +f 186/638/20 192/641/19 177/625/19 +f 173/636/6 187/642/11 174/643/11 +f 180/640/21 196/644/17 181/617/17 +f 174/643/11 189/645/10 175/620/10 +f 236/646/16 201/647/5 212/648/16 +f 229/649/14 206/650/15 205/651/14 +f 244/652/11 221/653/10 220/654/11 +f 237/655/5 214/656/12 213/657/5 +f 230/658/15 207/659/6 206/650/15 +f 245/660/10 222/661/4 221/653/10 +f 238/662/12 215/663/13 214/656/12 +f 231/664/6 208/665/11 207/666/6 +f 246/667/4 223/668/17 222/661/4 +f 239/669/13 216/670/3 215/663/13 +f 232/671/11 209/672/10 208/665/11 +f 247/673/17 224/674/16 223/668/17 +f 225/675/5 202/676/12 201/647/5 +f 240/677/3 217/678/14 216/670/3 +f 233/679/10 210/680/4 209/672/10 +f 248/681/16 213/657/5 224/674/16 +f 226/682/12 203/683/13 202/676/12 +f 241/684/14 218/685/15 217/678/14 +f 234/686/4 211/687/17 210/680/4 +f 227/688/13 204/689/3 203/683/13 +f 242/690/15 219/691/6 218/685/15 +f 235/692/17 212/648/16 211/687/17 +f 228/693/3 205/651/14 204/689/3 +f 243/694/6 220/654/11 219/695/6 +f 252/696/22 249/196/6 250/411/22 +f 256/697/22 252/696/22 250/411/22 +f 258/698/23 257/699/22 256/697/22 +f 261/700/24 259/701/23 258/698/23 +f 269/702/25 255/703/26 254/704/25 +f 268/416/22 265/705/6 266/706/22 +f 272/707/22 268/416/22 266/706/22 +f 274/708/23 273/709/22 272/707/22 +f 277/710/24 275/711/23 274/708/23 +f 276/712/24 318/713/27 332/714/28 +f 263/715/29 316/716/30 264/717/29 +f 287/718/31 292/719/32 288/720/31 +f 290/219/33 293/721/34 289/217/33 +f 294/722/34 291/723/32 293/721/34 +f 299/724/5 287/214/31 288/725/31 +f 290/219/33 289/217/33 302/726/6 +f 317/727/30 279/728/29 280/729/29 +f 263/715/29 255/703/26 313/730/30 +f 261/700/24 319/731/27 262/732/24 +f 318/713/27 278/733/24 277/710/24 +f 325/734/22 324/735/35 323/736/22 +f 315/737/36 321/738/37 320/437/36 +f 320/437/36 328/739/2 315/737/36 +f 282/740/37 322/741/7 321/738/37 +f 326/742/35 330/226/6 324/735/35 +f 281/743/7 323/736/22 322/741/7 +f 318/713/27 331/744/28 332/714/28 +f 264/717/29 316/716/30 333/423/38 +f 331/744/28 319/731/27 260/745/24 +f 316/716/30 334/746/38 333/423/38 +f 334/746/38 317/727/30 280/729/29 +f 344/747/39 353/748/40 341/749/41 +f 340/263/42 341/749/41 339/440/43 +f 337/750/44 343/751/45 338/752/46 +f 344/747/39 346/753/47 348/754/48 +f 341/749/41 349/755/49 339/440/43 +f 345/756/50 348/754/48 346/753/47 +f 352/757/51 353/758/40 354/759/52 +f 338/752/46 347/760/53 345/756/50 +f 350/761/54 351/762/55 352/757/51 +f 337/763/44 352/757/51 342/764/56 +f 351/762/55 341/749/41 353/758/40 +f 353/748/40 355/765/57 354/766/52 +f 342/767/56 355/765/57 343/768/45 +f 354/759/52 342/764/56 352/757/51 +f 347/760/53 356/769/58 348/754/48 +f 344/747/39 348/754/48 356/769/58 +f 343/751/45 355/770/57 347/760/53 +f 368/445/59 360/771/60 374/453/61 +f 372/772/62 359/773/63 369/774/64 +f 367/446/65 365/775/66 366/776/67 +f 371/777/68 364/778/69 363/779/70 +f 373/271/71 368/445/59 374/453/61 +f 369/774/64 371/777/68 372/772/62 +f 359/780/63 357/781/4 361/782/72 +f 364/778/69 362/783/3 363/784/70 +f 362/783/3 366/776/67 365/775/66 +f 361/782/72 357/781/4 360/771/60 +f 379/785/73 376/786/74 375/787/74 +f 381/788/75 380/789/73 379/785/73 +f 383/790/76 382/791/75 381/788/75 +f 385/792/77 384/793/76 383/790/76 +f 387/794/78 386/795/77 385/792/77 +f 389/796/1 388/797/78 387/794/78 +f 391/282/31 390/280/5 389/283/5 +f 393/277/32 392/278/31 391/282/31 +f 395/276/1 394/273/32 393/277/32 +f 397/275/37 400/798/2 399/456/2 +f 398/799/37 403/285/22 404/800/22 +f 401/281/79 404/801/22 403/458/22 +f 405/802/80 402/803/79 401/281/79 +f 406/804/80 378/805/25 377/806/25 +f 407/807/81 410/808/82 409/809/82 +f 408/810/81 413/811/83 414/812/83 +f 411/813/78 414/812/83 413/811/83 +f 416/814/73 409/809/82 410/808/82 +f 418/815/75 415/816/73 416/817/73 +f 419/818/77 412/819/78 411/813/78 +f 421/820/76 420/821/77 419/818/77 +f 422/822/76 417/823/75 418/815/75 +f 426/320/1 429/321/84 425/316/1 +f 423/824/2 428/313/75 424/319/2 +f 430/315/84 431/322/9 429/321/84 +f 427/825/75 432/826/85 428/313/75 +f 314/827/30 271/828/26 279/728/29 +f 255/703/26 314/827/30 313/730/30 +f 271/828/26 269/702/25 270/829/25 +f 255/703/26 253/830/25 254/704/25 +f 433/346/6 456/831/15 444/345/15 +f 438/332/16 449/832/17 437/342/17 +f 439/334/5 450/833/16 438/332/16 +f 440/339/12 451/834/5 439/479/5 +f 441/329/13 452/835/12 440/339/12 +f 434/347/11 445/836/6 433/346/6 +f 442/331/3 453/837/13 441/329/13 +f 435/326/10 446/838/11 434/347/11 +f 443/337/14 454/839/3 442/331/3 +f 436/336/4 447/840/10 435/326/10 +f 444/345/15 455/841/14 443/337/14 +f 437/342/17 448/842/4 436/336/4 +f 463/340/5 476/843/12 464/341/12 +f 460/335/4 473/844/17 461/343/17 +f 467/338/14 480/845/15 468/344/15 +f 457/350/6 470/846/11 458/327/11 +f 464/341/12 477/847/13 465/348/13 +f 461/343/17 474/848/16 462/349/16 +f 468/344/15 469/849/6 457/350/6 +f 458/327/11 471/850/10 459/328/10 +f 465/348/13 478/851/3 466/330/3 +f 462/349/16 475/852/5 463/333/5 +f 459/328/10 472/853/4 460/335/4 +f 466/330/3 479/854/14 467/338/14 +f 27/489/10 28/496/4 4/24/4 +f 26/490/11 27/489/10 3/26/10 +f 32/491/12 33/499/13 9/7/13 +f 35/492/14 36/494/15 12/14/15 +f 30/493/16 31/855/5 7/1/5 +f 36/494/15 25/495/6 1/21/6 +f 25/495/6 26/490/11 2/19/11 +f 28/496/4 29/500/17 5/29/17 +f 31/497/5 32/491/12 8/9/12 +f 34/498/3 35/492/14 11/16/14 +f 33/499/13 34/498/3 10/10/3 +f 29/500/17 30/493/16 6/3/16 +f 19/501/5 43/38/5 42/40/16 +f 18/502/16 42/40/16 41/41/17 +f 17/503/17 41/41/17 40/44/4 +f 16/504/4 40/44/4 39/48/10 +f 15/505/10 39/48/10 38/49/11 +f 14/506/11 38/49/11 37/53/6 +f 13/507/6 37/53/6 48/54/15 +f 24/508/15 48/54/15 47/58/14 +f 23/509/14 47/58/14 46/59/3 +f 22/510/3 46/59/3 45/63/13 +f 21/511/13 45/63/13 44/65/12 +f 20/512/12 44/65/12 43/66/5 +f 52/514/3 64/524/3 63/515/13 +f 59/517/17 71/526/17 70/518/4 +f 56/520/11 68/531/11 67/521/6 +f 53/523/14 65/533/14 64/524/3 +f 60/525/16 72/534/16 71/526/17 +f 50/527/12 62/535/12 61/528/5 +f 57/530/10 69/536/10 68/531/11 +f 54/532/15 66/538/15 65/533/14 +f 49/529/5 61/528/5 72/534/16 +f 51/516/13 63/515/13 62/535/12 +f 58/519/4 70/518/4 69/536/10 +f 55/537/6 67/856/6 66/538/15 +f 76/539/3 88/549/3 87/540/13 +f 83/542/17 95/551/17 94/543/4 +f 80/545/11 92/556/11 91/546/6 +f 77/548/14 89/558/14 88/549/3 +f 84/550/16 96/559/16 95/551/17 +f 74/552/12 86/560/12 85/553/5 +f 81/555/10 93/561/10 92/556/11 +f 78/557/15 90/563/15 89/558/14 +f 73/554/5 85/553/5 96/559/16 +f 75/541/13 87/540/13 86/560/12 +f 82/544/4 94/543/4 93/561/10 +f 79/562/6 91/857/6 90/563/15 +f 115/564/15 122/570/15 121/565/14 +f 110/567/11 117/572/11 116/568/6 +f 109/569/6 116/568/6 122/570/15 +f 111/571/10 118/574/10 117/572/11 +f 112/573/18 119/858/18 118/574/10 +f 114/566/14 121/565/14 120/575/19 +f 165/577/20 113/576/19 120/575/19 +f 141/579/5 153/859/5 152/580/16 +f 140/581/16 152/580/16 151/582/17 +f 139/583/17 151/582/17 150/584/4 +f 138/585/4 150/584/4 149/586/10 +f 137/587/10 149/586/10 148/588/11 +f 136/589/11 148/588/11 147/590/6 +f 135/591/6 147/590/6 158/592/15 +f 146/593/15 158/592/15 157/594/14 +f 145/595/14 157/594/14 156/596/3 +f 144/597/3 156/596/3 155/598/13 +f 143/599/13 155/598/13 154/600/12 +f 142/601/12 154/600/12 153/602/5 +f 166/604/21 119/858/18 112/573/18 +f 163/606/12 170/611/12 169/607/5 +f 160/609/17 167/613/17 166/604/21 +f 164/610/13 171/614/13 170/611/12 +f 161/612/16 168/616/16 167/613/17 +f 165/577/20 172/578/20 171/614/13 +f 162/615/5 169/860/5 168/616/16 +f 181/617/17 196/644/17 197/618/16 +f 175/620/10 189/645/10 190/621/18 +f 182/619/16 197/618/16 198/623/5 +f 177/625/19 192/641/19 191/626/14 +f 183/628/5 198/861/5 199/629/12 +f 178/627/14 191/626/14 193/631/15 +f 184/630/12 199/629/12 200/633/13 +f 179/632/15 193/631/15 188/635/6 +f 185/634/13 200/633/13 195/637/20 +f 176/622/18 190/621/18 194/639/21 +f 186/638/20 195/637/20 192/641/19 +f 173/636/6 188/635/6 187/642/11 +f 180/640/21 194/639/21 196/644/17 +f 174/643/11 187/642/11 189/645/10 +f 236/646/16 225/675/5 201/647/5 +f 229/649/14 230/658/15 206/650/15 +f 244/652/11 245/660/10 221/653/10 +f 237/655/5 238/662/12 214/656/12 +f 230/658/15 231/862/6 207/659/6 +f 245/660/10 246/667/4 222/661/4 +f 238/662/12 239/669/13 215/663/13 +f 231/664/6 232/671/11 208/665/11 +f 246/667/4 247/673/17 223/668/17 +f 239/669/13 240/677/3 216/670/3 +f 232/671/11 233/679/10 209/672/10 +f 247/673/17 248/681/16 224/674/16 +f 225/675/5 226/682/12 202/676/12 +f 240/677/3 241/684/14 217/678/14 +f 233/679/10 234/686/4 210/680/4 +f 248/681/16 237/655/5 213/657/5 +f 226/682/12 227/688/13 203/683/13 +f 241/684/14 242/690/15 218/685/15 +f 234/686/4 235/692/17 211/687/17 +f 227/688/13 228/693/3 204/689/3 +f 242/690/15 243/863/6 219/691/6 +f 235/692/17 236/646/16 212/648/16 +f 228/693/3 229/649/14 205/651/14 +f 243/694/6 244/652/11 220/654/11 +f 252/696/22 251/864/6 249/196/6 +f 256/697/22 257/699/22 252/696/22 +f 258/698/23 259/701/23 257/699/22 +f 261/700/24 262/732/24 259/701/23 +f 269/702/25 271/828/26 255/703/26 +f 268/416/22 267/203/6 265/705/6 +f 272/707/22 273/709/22 268/416/22 +f 274/708/23 275/711/23 273/709/22 +f 277/710/24 278/733/24 275/711/23 +f 263/715/29 313/730/30 316/716/30 +f 287/718/31 291/723/32 292/719/32 +f 290/219/33 294/722/34 293/721/34 +f 294/722/34 292/719/32 291/723/32 +f 288/725/31 284/865/5 301/866/5 +f 284/865/5 297/867/5 301/866/5 +f 295/868/5 283/215/5 299/724/5 +f 283/215/5 287/214/31 299/724/5 +f 288/725/31 301/866/5 299/724/5 +f 289/217/33 285/213/6 300/869/6 +f 285/213/6 296/870/6 300/869/6 +f 298/871/6 286/211/6 302/726/6 +f 286/211/6 290/219/33 302/726/6 +f 289/217/33 300/869/6 302/726/6 +f 317/727/30 314/827/30 279/728/29 +f 261/700/24 260/745/24 319/731/27 +f 318/713/27 276/712/24 278/733/24 +f 325/734/22 326/742/35 324/735/35 +f 315/737/36 282/740/37 321/738/37 +f 320/437/36 327/207/2 328/739/2 +f 282/740/37 281/743/7 322/741/7 +f 326/742/35 329/227/6 330/226/6 +f 281/743/7 325/734/22 323/736/22 +f 318/713/27 319/731/27 331/744/28 +f 316/716/30 317/727/30 334/746/38 +f 344/747/39 356/872/58 353/748/40 +f 340/263/42 344/747/39 341/749/41 +f 337/750/44 342/873/56 343/751/45 +f 344/747/39 340/263/42 346/753/47 +f 341/749/41 351/762/55 349/755/49 +f 345/756/50 347/760/53 348/754/48 +f 352/757/51 351/762/55 353/758/40 +f 338/752/46 343/751/45 347/760/53 +f 350/761/54 349/755/49 351/762/55 +f 337/763/44 350/761/54 352/757/51 +f 353/748/40 356/872/58 355/765/57 +f 342/767/56 354/766/52 355/765/57 +f 347/760/53 355/770/57 356/769/58 +f 368/445/59 361/782/72 360/771/60 +f 372/772/62 358/874/86 359/773/63 +f 367/446/65 373/271/71 365/775/66 +f 371/777/68 370/875/87 364/778/69 +f 373/271/71 367/446/65 368/445/59 +f 369/774/64 370/875/87 371/777/68 +f 359/780/63 358/876/86 357/781/4 +f 364/778/69 366/776/67 362/783/3 +f 379/785/73 380/789/73 376/786/74 +f 381/788/75 382/791/75 380/789/73 +f 383/790/76 384/793/76 382/791/75 +f 385/792/77 386/795/77 384/793/76 +f 387/794/78 388/797/78 386/795/77 +f 389/796/1 390/877/1 388/797/78 +f 391/282/31 392/278/31 390/280/5 +f 393/277/32 394/273/32 392/278/31 +f 395/276/1 396/274/1 394/273/32 +f 397/275/37 398/878/37 400/798/2 +f 398/799/37 397/460/37 403/285/22 +f 401/281/79 402/803/79 404/801/22 +f 405/802/80 406/804/80 402/803/79 +f 406/804/80 405/802/80 378/805/25 +f 407/807/81 408/810/81 410/808/82 +f 408/810/81 407/807/81 413/811/83 +f 411/813/78 412/819/78 414/812/83 +f 416/814/73 415/879/73 409/809/82 +f 418/815/75 417/823/75 415/816/73 +f 419/818/77 420/821/77 412/819/78 +f 421/820/76 422/822/76 420/821/77 +f 422/822/76 421/820/76 417/823/75 +f 426/320/1 430/315/84 429/321/84 +f 423/824/2 427/825/75 428/313/75 +f 430/315/84 432/314/9 431/322/9 +f 427/825/75 431/880/85 432/826/85 +f 255/703/26 271/828/26 314/827/30 +f 433/346/6 445/836/6 456/831/15 +f 438/332/16 450/833/16 449/832/17 +f 439/334/5 451/881/5 450/833/16 +f 440/339/12 452/835/12 451/834/5 +f 441/329/13 453/837/13 452/835/12 +f 434/347/11 446/838/11 445/836/6 +f 442/331/3 454/839/3 453/837/13 +f 435/326/10 447/840/10 446/838/11 +f 443/337/14 455/841/14 454/839/3 +f 436/336/4 448/842/4 447/840/10 +f 444/345/15 456/831/15 455/841/14 +f 437/342/17 449/832/17 448/842/4 +f 463/340/5 475/882/5 476/843/12 +f 460/335/4 472/853/4 473/844/17 +f 467/338/14 479/854/14 480/845/15 +f 457/350/6 469/849/6 470/846/11 +f 464/341/12 476/843/12 477/847/13 +f 461/343/17 473/844/17 474/848/16 +f 468/344/15 480/845/15 469/849/6 +f 458/327/11 470/846/11 471/850/10 +f 465/348/13 477/847/13 478/851/3 +f 462/349/16 474/848/16 475/852/5 +f 459/328/10 471/850/10 472/853/4 +f 466/330/3 478/851/3 479/854/14 diff --git a/src/main/resources/assets/hbm/textures/models/machines/lpw2.png b/src/main/resources/assets/hbm/textures/models/machines/lpw2.png index 264827245dbb5916b4fca58203cb048b988191d8..4b0ec544cc90062daa00aedbe2588ab8e8a2857b 100644 GIT binary patch literal 104090 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 TU z9+Q=Kux2D!v-{!&3=2C}MRBVFoHn^yb0kRDqyK>f~_PY0rDk4Su zE=jNNLYlP|X-~<^wzp>YX1wxADQSaFELmPqk4q;(RUHd91I$6t?739#EpcfR6XW;H z%uHe!4WEm>sryoA2wmsr=z_C)P#gdcz?xdG-M?<)qzv@gT`q!nBLaXkI%l5|)1cL4 zCBuQ^l5BAb+~%J^@4aP6;t+lkXVwvQg_2eTfd=_3J>Wr?nbh}d;7CsnJV;vUL-fH9 z>H{S@cxc-%_G%B&$nilKpscm8xrqoV$&m3G1v=%R6IFGA+e|X^Mz~BPU7B+y?%<eIhg zEaz#&F3N&t1}!*t(gc!oE}wU%x2wQ0OC>FH+)Qi;mx-cl@6qjjffSsL!p?hbTwE#3 zhsmySu6%fty$zdZl~hu50vd&w#%?ra^j;d(FnI!8a1e-q8F(83jfI4dyjZc_oawVh zY|d^vuT&s5Du^@!yY=3DqMiJxIC-5q&v?`GX!>2|H13XE?TXKa|5gQr3TQ4U9#K4u z)*2K|Z*b>Of710YrW?A>ZZ07yiDf z(Y;{`ItMS;@}m|*T;CpcNUQsAyFd1)-Jb-T0lUB7r5&)@R@xfLU;HxLdAmxYS?P9# zuatx^CBWKYV;w2(c=m;%e;Up@*f>+BKB^mLh0U0POnUYePib+>$!)Y#1I z*PK|`ZtTVj{3SLwyaqUPr(7`aR zkv7z_Jw^YP{Q{WH+)wS*;IZ@uM!B02+%PSO1WEAg!Bc@$2xEFN?R_viHVNwlUT#Yu z09`FOzKg54vm|l*isj(yPTN7e`}GEQ9{MZb>Bl7_j)Ua1!xv-M=2=dVkhO-40cH`= zA<R7*tcN?>hcK7OsORZr?kP7v&p%i@kTSa$p{PtnC!QB z3i25(RJo1l0Ne3m-3N>T>D55NR)$>G^;S%a=zT?mdGgSc9_kt*1}T%J#wIo>+3i;x>=X_I9H!GxUG`%8Y-4WJS@6 z)v5l)i*$O?yI*f9w4#zzWZHExB45<vHF`g)*Uhvi|qB{RM~fMiGxEqaa} zi#v@=8#<8zuO+T$Uem%1HP{4_h^P+Q<2_O2OaYv*^6ss~QHII-P=QAq>X?;Zy*)k0 z9X?|Jw>NB>u$8G4c5kUb@r}R212OpOO|G&O=I%jFI|u2ZVg= z8*1n(`laCTJmvb4-u(bWu$ zot)s81q^sq@^9Wg@(F?LBRMUn*+stUA_&ZvYorvIk~s&b ziSQ+*Q74tOPOc-9$~@MiH6T>0p-b!6wQN=)bL!X+I+)f6Q%$p-t#+E-GC%5~V;#1; zV9>Nq%a$74x$fBAwr0!m;%e_LRzya-2dcC3Q6fV#U+Y&fEwrO4InESvma5*{z?lv! z`NBajPwP7a)jo@Mc!u_^X&yXIjZ9E``RxF6roSJeo+y39!@^?`*g+?D(?L)UU@Q`h zA}otO^qSErElA7mbR?DWkxVvJUH_6-oia9>hh!`?!*dX_2yA4xt^PFV3W*z}>ms#g z+kYNG?Q5d6g^RiPmcD;Yez|4VMA^7g&J5$4o436|v`K6$sae-I#cdys%*>^ZretcCTOodn7`(QHb2%2|PoKo5!EHS`>?uBa}hlg}sa-7Ovy8rPuX~SO!EF7r)_a=Q`ca*CQbg$TD1+M5Zo4(I2F zml3(Q+_vyjglwB*s&VM9JudZ^v=M|(_EhY)J*~~X94QxJ9ARnkV}iP3seMoRzuv-> zfOUSpO;&V7Ppg)JA!F|{_il2~;EDKo|84eFUD;2_M#`7+gz{JqA=!S#+@Mo(!R*42 z^%^haq)wf%ciUqyk6jHwX{8O$mInaWH0?Lf_jEZ< zl_tIL^;-zTgz;9z=4E-_QeIBtS8Nt#-9Ei$3fZ?`_KTpFFM5#g(X`KsnZGX5-vYA^ zk7M4#^_RAQDg$zP5wzdRD3sHJ@|(2>I9T-{3x{52vuk_b#|K>ROvFKW!6xD{TR(dP zoh(^?aN_ffxQ$UYaotj8M}|QG*h3&yD8n`V?{_j!Ad4e*F3(+>+UoW2jKR$1$OdqaF-*Cb_u#IhV+CLO*>JCWTm77q0s!7+;vKb7Rt9W#7+c$l}TtzkW@fX0d{ zL!qTXiDWNqF|`qqkv~m4nwnoSVz}9F1k$~&fSGk@Yh6U5b+K10DS$Px7uT}ZK?`Q9 zzt#ne0Es`B1%OGwVKb}eTJh1BfW?|@PCnUkyh)%L)_3=lP^7)vC{n^yJ7_=TSdGM= ze0KqwaNy_1ECfjvDPZ83paMYXZH1#aH+J9}A87lY{+Buk%dva(IxFcMd75l2U)D%% zFd=bVHSbkZojqB59*eV;yTTURy9vwcD>$N;V+Lvx0KYa3ID6WrkBAS;CCU0L=C*~R zT09F6ya}APs2do~h-cy+AjnYo^8Nh`^Rjf)K}uq4Z;UEwb{plzsft^}tv9cZ80Tp( zinY;RIQK@Lj=|7znIeB5vIuzyW0=ORtrYpVLhf((CHXL^XSr%Mx^6WjTK!_XeGa09 zGDZrn=V`J$l_Z75WS?j>n1Es~<8(101*{c=U3p%#OnGU zBZs4=k7AN#SFCJXB|Cbo_ywG?0#B1ePZ+dyRtdGwR1r%T!V2XY|`!^ zeY$5%Sy5{E_`=n1?*%4W6(^Fg@Pr7(mJTOBb(YsHwfppdqoV5pq1e zCt*R7Up6QCZmJ1V?36#zhn!Bu-q5;za&mmj9ZUq}m)aoQCZly}zfZ9JJ8P)DaS5aN zE<86-Tb4YYy?f58XxsqtNUa>+HsvIuuX*w&Nk6H+IGH`07KafGIDCi$&ZkM}aW26M;;BKsS`+1vxPW>pDQ7&`ob2su*tKbP!bp2oIZx zqyOctCsyn+TI!j~588%fNYZWt1+i+JVHgXkR#O4YEby^&0$Jts75|!}Wh;-MEJT*eX4$J?J}P;R0Z* zh^c#L*6!n=_L4#=Jb{09O-|(|U*69pt>6E=y(c~18bG&FLGtM{K_;dIuG0-18W4Ym zT+f!Gk3_PSC{{iwGAkPl8xt9KnIgjQAP~`k6o|O^sBs~WPQS~nCMaduAHVt#-$`uG zMkCpPa}Jju0iE{WiV1TscX1)b9*&h%c3nUDn4c8zx2NuWr{j+%+*cuZ-W7lJ*UsfG ziMJ#KHKXXqRP7@<(7AY8Xit@MqAod>^*t`f8mxdz1=pSBXp=So7OO&1Qq97w@9dom zV>77@xzrf%nF*{lO4zcqt}qzx53L^dRA)m8e@cy!NLyneT{M*(d%UuIO9e!dRmEU% zYZDE5xZYBk(7rhi)}D^X`#X0?olw~xfBy!z|YnUO&Jp3i#Ni6 z5T#j%tpI^Y8u#m{&-*pL5dX+XIN)9=7YVfNw~iqIVw~+j*0OK)C_a=^ElfR;Bit)` zwq-rAa9e-mej7#tzd^SP4mXhJSR39bGTM_VsTF`8EwZys;&Lo8VaOoqsDQNZgwTE0mS-2b?oeOVEiug~PVMp{|g#e4X&j7GiS%iuD9l=YyIQ+T#@=as;B(EQw z%NluB+zEXlvMXGow9Se=HtVMqc?gjpLP1p|tuJX)2eBZFq_OW|Vor5gh*@AK42cxE zXP}WMKpU919gGJsCXBL2aPZL;5Tda1jhbzh)Z79MNs0FCUDAV5he7=qa!CGn^+=Pn zZSCoMXDLTKy0%E1WIy@XIje9Sr^?vfvkV%1=lY&LbqhJvew&b;174+bh>P;|K8g6fqt0L`&F;3+a|GsvC#AGKs z)(Kt)^E>2sm@F^)8XH%mnft74cIe4+AT^d0s4dq+7?#1Z?6wNWXGekrorz~E)6qN- zELHg#;HX<^iN0L)_Vt7TCUrB$LAhxw7ZS<*dx@fys7XnQ8l2W3g`xe%R#M_?EaI#$ z$?>44kmCID4(a;MjAzlGb~;9F_ilM+`sj+bQ9ZQsxLrx7yBlFd9hHA!3fCUm6Y0Bq zWmUTjbRU*VEA8F&-4{`IBUiWYom8&NrUp0RGWJ)BE~eRh5OW>A(loYIQxd}ND6-q; z=59wXlaZ~=)M^&;7D>+#oVL47(Khh5jDz+FN^4Hz0tw_`<&5CvuAtP(zI}s85)`RA zn9df@f2955p9d;vcI>DWlBIaS`!rHt_|KrSm~6hwx1 zV4`jbhcSeF7RdQD#nfH>!yc`f8&snP(>)FUgc@16iE}$tRhMUIU z$hV(}fbr;MZfK9_*Cn+VmH3%vMk0oaM{6(I=15>q8rSC*t|iU1ZDi#a3JuMe)UH{b zeCX_`--TwzCfpELd-sgmyT#NNmx#%;|3b>7f4mCXu-|=IgpTv+upd_fkhcy@pY2$G zf7ST@9^?HT%AY&u4gaF}-!Xh`;r64avlo`NrMi}3#?3L@TSD2QEc7;CVJNf`moY2K>blF5R&{(KKPlDlA0HRy^f=S=k}$g*y{0sB;Foxa?JV)(VIKol=~JbYR= zAg_9|ed2v1c<>?V!_>(*0>~kVy&b;pAs^T-(gp&XY3uavsTH|=GpW_Eu)Sn=q9rh2 zRWuun#yO5Knwj}z&Xp&&ovbN!dEy1hUv7x!WskG=7oIkmncS_aLLBIQFRm7DOD8hc z^R2orJ*ZDT;+YXZT(ZM%nOfo=nh;=??cEDMWYNE-aP;lRZ{=wj4qX}W|F8?bF}$*$ z>dp2rbQ5j@dR(jb<)fB-^;r>D&R)F3f%_-jUv}XlkcX4On62jSZ#3rY!6_#%nHMdk zMxT;(y<*Eun7gal>sy=COR}@GM;Muy2oHwK4h@OWyVRll%yzzbV6rAXrIZehtF|>k z0AGGr8`N++vN<~J_I}IIJ}XD>OWl#6jkiOTN#+)g_WdX&x<|@_?!C3AC&JeDfoYx` ziqV^(Zku*_2sxUvj)_aG?o)@TgV1|ZtlEwHzTCBr@^WZ1 zEgETm8|xE^2&?5%=Du^S`1yz8oIPGvKNsLD>l4LOLC3fb!_=}O9Ue^??I+{)Y-gJDg6NASx^RuuX6Tc`!o2BBLWpRKr8&tm1L}V8Z;`z&nE%Y897u26)F14<-@V zRf>%8yzL0EMp`0{RCmIKxeUH2Lj-IfZs5;iNGFy-$xr=H3z3&DI! z$xjYLfkOc!PR77)wGcxRlg0pc6rWh#pqbZCd1{CUE#lb9uMlZ=dvh9QptQkN&u+u_ z=*ObILTWqCy2<*XbJ%Uxon70pUk(0_t}UCgj@k~O20EUJ|1L3IL-fO{h9H|)zU*?$ z;IU5K-UC+igR*Ruqn6)zgGn#S#+C`f)Zp+H^bClHw3nN%4HNFYoB8+e{|E`qGC{}V zfpfSw4TZQryp`c@FB~NQ2-mERG9QV6<=OPsX-JGQ3NUFnm-Go`U$AaU?zXGpXROE! ztckT+MI5K&RbNa3?MP zmP7WAevEGJ0}%ffTRR#inWWa!0fgL9&6!aXd61xO{qnC}kCZG-XeLG0`&eJ&7rj{^ z^}d~J$VqT^tu=}tJ?uVRle#8qVw~GbDOY#7=*xojGDxe#jS}UC71qFq?%3x07P{gI z#l5(Qu&M)IU%bb<2QRv@ndRD3oCIGKJV9ehoD4T5R-Z7P+z`98$QWUr2`ZzfAmxaC zNjpa+EWA~=Z8?J1_@s|R(dyx@&k5csEt55RlYh5aZ2i*IURSXU(>Z19bVw(tW9hLt z7jc0?`u{qzeo-^{artI<9=l(N=%f7nd>3!`>&NH9=+F5{xb%!Mv$xGF1g9oJ)qArp zt)S5b{Lm+a&%?ehnruHm?&E?c3Q;+dEvXBNTT!jvo^MMYnWmFG)w>9PPY z%%`!qddcZ1pH}|(XsVW#cT0PBH9(FX=ig(r-tp+gcQ;$7yv-FwE?BD8=YLsDWs2XA zN#)5%8I#ai)c&z3V>Es?eO)LFSiJaeuWHRn_sg)e9ry|A1lG5W8ftOR8<>1%eIivH z%fK}#WYK5{yarMF6E~sHY$Et{WQya-!v|a1A33iLrRlU^Y~HTQ5<%8tZ_}V~IvPz1 z5mt;4v1mi0P=utV8 z3zKmGv=6+(VaTw;rI-2kMC(nb$dYV(+Z=}$bd!9xY&0{m<)x9#Ujwo7XxUwCKAROFawls&Mj)avak50m^IioQ-PcNGcb zDJDUJzQ`1P9M6g5c0M?=Yptyq+;Ef<<5vQF6rfgk{phk&2#L@e(A26Bl(mX<`#HSH zq#Sb9(J-R)G5a=paqh(*%JncNwa@oiI8FPC%bf(wk*lp*EElxl5h4fa-pJPP+}$9^ zW#m)TqbzWcp)p^Gjwe{yf-X&CnO-VrVbb})0-O^L6B%H>tXf|*iZl?&F9{|IM`c&) zvCBI7(=%oOoSIsk>BYUrHxpP_aFNz4?QFBTpB;Hk%?#V9ADlF)%g5%Pn3->LbIi#W z6%T{`RvPXG7m#!Enrl&vz2dFsHyvGZ>kf#=}49R;q2 z)L&o&8?`Ap6GGETp3;X``z;Kw5nV4BKs*8O z#*^ICb-AivF7;9Q*gb_pO{J;HfcIy_S#xKjjBvfaePqU%lGzs>*mvJzD5qKE?%&|@ zQsJ`oHs?F^edaXNAFcCpIx`Pbzh^@JnKcU<>8aa4H*UQ3JcUad7yj`K*cZIgE55Nm zEMCS+f#XJZC7K#O=eSwqHDIvW?P0;Pnom=vw+-7HfTL~OB{Cwme7C+rKApBkhG#VQ z5=!j0J0$D~!vZ@#aRBs0GZ!$3Z@9B(p{EzvU=q*{df{?x0X!7I?!%#?-;|J%l@FF< z!Bt)+VpHURr~>AuDnFWmv&f0_!w8s54$?g!Os^YKG4Pi?JDFdaO7TkwtE41RB7OA5fO>^U7=F zK!04oAbBrWb%!VY7grD5{Sx}nj(r(0mz?`$XxhJUSeC<~lY^a|qy!$qa!`hb^mi@| z$%Q?(C|*&CI-CNPy8rf+*u-(+{VDTK`0hlzEQi6R{EjV@k6po71QHJCDp~Aoe1S4f zbcHc8$7YRm^;gS_0d2Z_1X9Dgth;rkFrwzlqg8qQ0FQnDX-*fEfqR;(Qp&120<@5Ek~K!Cftv$XztT4BKqNJBKl{bRek>@5zIT$-Fx_Qh z`Np_~x0A}(Q7!q$sNKSU0MuI>ZBLu{Pu${u;OTsnx?jeQx^i-I(22Toa+11o5-NDe zo59&V;s0`xeF3}5lQl^x(U~hEN4zcGOyQl$;nY?e-lrvv`Nry#}HdMXm=|mUp zezfBYe+0`jE^f4HY^Dh};gnez=_y^K3EowRaZeX(E3wHW~TTRIew6=4P50=*qBNJQfk%rD(J>qskKr0#7f3P^;GSvRBKJ*^gYk%PWxtG`e z>nZBVfA{gD=MgTZ%}1$$ZM|I~hk*5E4Ra+k#kMnmn;!Vj`q|7YAj1XNUn32ONeUL8 z@Hq@Sc2{0F6rAKcdhrj_drIJa!D`&2>Vh!}J680 z6Ej_(jcrRXD!|RB&zDj`06^GVHD@LHT(a4FSn=Hh_jv)@(ed>vUsH@1$%eyT~F9~cNkDBEq1oB`HW4Tp%nv#6W zWmd=A=U1Q1x0-3kPXZ@aRX)w61rKJVl5K|66~D$lMMCh>X5R8C8kf8YOzyaj5<9}G zEc9lFJisYW)JSgTI*g|-T!aS@<^xR;TVIMmBQBbbi_(^iP0&t7k)*BNR?Vj^UU0=? z!J$+11b8CjV*mJCDh$?0CMJJTH$h2uEPNY4Q(Bn{pi#JjDcGT;4g*JL06O+P#SG_a z{I*kxh24o=Xu!+GZsb+thNd5QNY zo6J*%vMhQ_l2F{1A5W8DJbW!EvC<*ap}C;4fhlQQU~{G)2p{mtMY{{~DTD?#UL-@x zVqO(&Q+Fi#X&cw46dayA{@a%o#4N8+ z;h1AB<(75|o0sz2t75p~$ZSUa7PkEJUj1`YEVmR>B@2z@rTu?`<)iAQmwtHH)BCdo z{^>h+Dsup@h~ps$j-2-2{;Qh{I<8^vLL!x84Smildk{D;E0;Z1qoB<$>M z`#V%-S7AAJh61N!NrL{EvGV5p&6X*jET@9!)p&`En>6|Q(}{TlmXaYXR_ zwA)Dsl4u=SPg;g~%7`J~*I6AE`Y|)p?7Q_Nc(F$l*eh$HaTE#;0z8_wCKc(y|=KVO|Dt4 zO7xu9;8Q;3PK=2G4X21NkYZDz&bkS3bU6c1)=JpmPh$t#kY?I|3IX8eG*fu4D@~a_ zeg5yLhuIa-D%?YDhakp2ECmnV3)t%)af0pN+~+ZzGY?5AzS_qdDmG$%M*NTcH^nF> zzP{+4s_N3}Ngn^*t*8FdCWQw9Q9~4;Pv$v3iBO2>JFwZq_B-He2yTk{$ zk)FYCkJQjO#=ve)WVrA#~>9WlaS{rD0jBBdT>MPaV#^JZgE`GT) zf4(@vr#si`(`|O#rh+AJpIfd@|M&?uk{38{XZ<4xTHf9RNE}P`Wk`uYqv#m#EuVjH z6dm%*B}yCe>J+nz8>(;OD0-ubh8Swf=_Y^#Lsa7pbc={VM_9SkDI}HyHBT9$2hR zReX9x8&L>T#C&xag&oWw~$NNGS>-($W zlJ01pTy?m2UEYd|8{u3nkW`4ayQED&{MdZ|>=oCuXF0+_NHfGYZXm(Z*No_mi@pIYm(wTR3nIyN?QHJWj;(q33|-oEbVnK&Bw;$- z(Y2E9Wil7L?Tj4ZKzqn{yBLgc{FY|`pYfB6Y_{K{#ED{!TP4Wn#Z$J1 z55KRsKoYkj+5S;l?JZ{0A=RwO?$fVmyOwfOF~qlU_Px{i)n^`l=WQo8Xv^D0yW4h$ za1f76zNzfn&{+e1JyNPIJg8bxw~P*Zg{%E!5G6dIx=d7$$ilBs=lRKDyi)Sn?3|~x z_bih%v0ql&c`6;8S~K?uAneQ8fqR5D`3OQ4-1Em9=s{#m32^W4sXUbuiM2sgRF~<; zHOnbZ>Zo)U#HF@;*u{5V^*7A4Tfdg>JprLv8{3rWnB&lXH!5K5GS+%f%1#vc1U=B89)t+_AxOz^Z&5{6|#!xB`&7CLMpcI-3>#IO_a+U2b z?R5)B{?5zH>j0}=`iY}de^a&l0C3alHtqY>s!mp~KB3Z2#(z(we@+C?AYW2*Mga$& zv!%p8-DrwfkH28X+w$|8gt}mKy!sm9`O!aK+>D>olYi{ZBCmr*R(`WKIObG;f#V*z z5$JDP6Eacp@M&O9C;6KdOxF7wuHD!fd~k)!*7#Yl2r;^GEFL077~yR-$hZ4E<6&D(Ksi)mJ7qzKqJ_LkBotcb)><(z}rUU(6q!k#LUgrEKhxYSWV8h7= zhmWhA@K67TcppTP~coiZsMq?t0ZFUK;WOHI)acXjSLr`wy`r}HgQsx{G+X{Hu#D=#t8F-8l+`?!5 zzN9Lcy#qL~uf6}$bELN1E(I{NvO&d}D(uAfDt1q6mKx-y@6!L-(x70Q3b^z|` z97E9YHBPIb_EOLGnTEfA^zG+F4w0;$tH4Kh%={KfEjRxqBmW}}{l1~ADso2kbRclW z!|clWLFfAnPB+!q=9(>xGCyCyd1T&qU#y!8RipGxyT@iRQ0awXeV0ubJ9<%jMX{VZ zX1w}q%vfH}S<@{JT~BfahBa1hJ{fc9Q52{sl$DoSC5lR;Nqw-9P-nzM!OJ1z${&CV zIjPy6O=_ZViAp-yAiOq8@Q#BKlEp@%(xLq(>setuUTT}HbfhCh2>m7Mf;zEP_30v5(fzD8^C|OJ)@}5K?muuJJ=CVd zL4{vHE2R_A^|=CjJK&bYHsG^A{jr5{VX1s<_BZ|KM7)H-nbq7et22OLv~{ou-|DxX%IuQMr9Aj* zU(ZqG`Q42g_C6{{22r2MudKDJiP@8$z5^2VGtDDtqah*XhSVB5VC(g)=c9^YLFvQM*?pR~vFA0Ip$9hWrVe!+q{~%4exOPT?rRH6AJPnD`J&^p`1V zK*B`rx%VjIVW)mm2=2P*0JMgCY0W|yU{08Q0T2o4sM}NGYG6{>4ff2DiL>?wz;m!1 z>HNYZZ9EtleA&JoLsemGPI^iq_hcXQ<_I{Knw>YGZUHB`fkPzhtQV_Lk1H0LAK6vp zo%MCzNI)4UJ8~UR&rjK`7vw#tF}(3b5(a-@6F$Y#AIG`0Ln+F?vTceB{`^n3JM`P_ zoYMZ@4Lcw)qx=`n;)2J2puD|dW$Zb&nnBAmsjnf5O4MbrG6-H!bj!0z1O84BHjQ(V0BCopgtZSRUCHJWbPl~ zShA^bU$m3kNgD@?Qu^QjZ8o@M4yci;=)ob2D|V3}!Bx%IxK4ofgL}5*br`IwM9R+x z`i4!}7j#zCl<7-1iT>~&Tw3gZF_HHKLz+-j7r{Q*Pl5D`1t+e_rpCC`f0Eih&~ zc6XzuzLC*}?($JHS%XC9%@8@hk;g7nfkgJR&HA}&IO6gWbFBUL23makrhE!_t~Xi1 z`lYCcSBrgzCZab?1cx#nfBrr(21iY5^_(sddgM;NbyA!L!lY zf|(tAlIc5^*7&OhZ?{UydjQ2W)oo{V#Al+*gFhTT@XRIR;I%2&hG_3U*qH5hbIy`Thxn zIyZ%fx#C!D6-JU=-C@&;3mG6mW0>y@NW@0(XH>~m(YJ3cXZo3fO}z+bcR|Ob=-(m# zZn6y=K0oLfvd*_h15>`s=zk6RB}e`HtTg6o4Ld;wsPry%avLKcXmqt_k37@388;74 zB@2l3-FJHySUA85NN&rEHRB(U0fNPn&=nO&LwoyDT}qsn2~sy5lc|Ol|7cE>K5N|A zf7ZSS=drQB^8411( z>&|u)G4$hrE#JOubfxvrhwyiF*Vww3=VkA^jC8)O4O*?6cHRXwviH|yZRcUpHGKc6 z2Y;~eG%4_SZb1RjI4&+Wj`VaEkjp^cL)PaWx&yKrs2V>$=;lBZb>9$iK?1Ss;GSda zz=YF43vli3XPw=m=C|*h@DrrQnFRs^Icq;dlj~fm&5p%X+aR}RqD7O$fh#qQ$XE?? zs<1{9Kyavc&H!NyFnlkPZ$jJHb%UyXD;9b2g1Modn{QCBHwJ)!WmhQ#S6fs$SvO5BjB9dx$wl>$s3K>DuEfjF-rB&gJr5QKOdEb919 zV!uB-PzomJo7gslC{n1)`FGX|2S>?~)Du@!v(Q$=qsh2R2CS}W zzB23y)bzt>qZGGrDJ;29THy%cS>iyFcm;f(adC7z3FwTDhuN_$h{>n;Hzbxb_fOaK z?6^RIW`1XAr~-@WbmetwxfKuVtSp;_jZlV1UXg0@Ztg5&0R@qPIFToJgvu89o(@8l zofMA;ncLY`JN$S-#9=75n+OulaMKcs^(V$*01z@44PJz9b$+HEdibvAh2B6vPIB6m z;t)jvRhUUbz6Ppsw`S=COR)@h{z*)Z-n#jJ5RkQ z{j`rWKY82yYG%RP5q@}WaUc!zuMgsf3OAvz}K*OuYpU@m;AH=^+ zL+V}=R#tgjzVl=<4~^5CQIJpBKh^doHAc;xGDioKb^hqE#xa7H91Sa*33FozhC(|O zM~v23e3gL8gGGu1jUvu3Qh@n?MA6J*ZhMvLO$sm{ZX724I5dQWE0f*n&nJl5R{*S4 zRp^i?rNihf0^!m_rMTE%lZ-at@XE1rZ2mSZs7T7pu24zL+j@e4$NHY0#!$>KBO{1sR16#4zms<8fzTK+`*3{+^A zJ#@Pw4cYo5fY`39%csWUgI`P&+=vqLRSnmX@0Lu$x%)%m`oD5 zBBwDQM5UJV$hdd6t9Ufi42D)pia&`N`erzcWT9);_4$-55lTyowgr{qXv|8%m7V$U z&5@oOHW=*c{9^9vGS(BO=nl;MJzi$H1aY$Ns&V$N8N3)CN*bMe0XG~potg&QS+7*V z%N#mvJJpk$3+@@aq9o$bq$z12uqcjV`^yuRjyB{OzBx62cbXm?Z(J;nzctON8*=O= z!9L6gkL1{%2*9lB(vmIJc3x4B$w*So4rkQ$P0RcIk8sZSrD90onLNNmzSmB>z1!;; z{vT;($?fk#2>@!`3nv@;_XG2Di>V>ymhQH>fp&e$Q?P8g`Ec4_hvU7^-u-s*yLsf- zj{{;+e#UN7r;ZuC2sQdQO70cO5lELFN9B$0=qLB<6NLlrSgd`iMB|j=IcC z=%Pnk-@w5#+p1iQz}h|6CJ6}8;sB<=xE6ESPci-4ty52-;`mv*+lt zYrzwP$?(?-DMckNxb#GXTMPPe$_lLbl|sQ6W6@R1i^=Xa3r!NQ-8k&G!0>ZN8wQIm zI9pEumoZ5aeiT?L#&L&|1tZ5O@APa+p?9{UuWtfpM-kNQIPs834D|gxObyWik~61w z35Gz&;=Qu*H(LfY`QLqeB|}Jha*#(jU85$gqY4xycr>l+|L8&fXYlcpm8StsYIK-XN0?d6aOtPjhTT^Cgt= z{v+E4ta8Td3^!cR6ks*e#QUa~rt-1pCsg$>7}N2}RD0kqz!aU)Jo)Y3!IYsN(;=ca z$}0k`(TXEyW{SswSxv`qYO&dO%H7_y3v_5ZEn>(x-We8W(Rhne-&suM7cIn7-PLsL zD?5NNk!NuhdI^dKv?JquX6QD^NKl!q{8YgpVKol1(Da7yeB0=7bJBJ)1~>quX}2S} zX>3O_-xPvDQHZ=Z(lO))H0HTjjU6#IE5D+n@>AcG)gKb zQ$|Le!rfy@q7&ieuP43~LH``S4}(1dNDEhczTB$do0S1m`l&n1{QxO~F-%-3sQyiN z1_zsjkm^_8q717SrweLl`3AX*`3l}(5^APv*YoTvvouq;mmsI)%MUzJo<0m_@~;Cf z_jZsI`7o^<(w`%i4;eJxmeLIeEe0?iC z7DP2am0^Z$pO3cphD@w?J^&NUk$G=STDNA4n+Hr5^CTAgyP4c8q~>`E(l1u3Jb+34 z-KCR|NJweT{mDFz<%ns4ox*WIHbyzq$kJ~~!rfqTk8Qd|q4X!A65w;w;x#`k#A_F& zEH1+36GMbnQH(vnJV$Y&60{L0BHy#bR(rgY^ndp~?-lonH)k~RIcZyss$5z?v@-+l zh%pM>61c77v_-cW?zZ!pxK1uvL=2KT8oTGq?dPY#fYesooH#^~v1#ViFNjIJMK$xM z3F*E-!v6QwD$1BV#VZZK{pUT!(B9Ny`~QEHJaD+@_l-Ur??ZMJ}P%3!>=^1d;qso(H7pY z#hgQS1%In89UAu0LxE;j-y?6$Z4DJ~5Jh7W<2vC}@z#qD>p|XyvP&s^xrEbg88}Zs z8?*USmL^SNjTGRUc_+J*fD)e@ zdwnJnWB{L)n$CyEGZs_=G@n7d(qYyjw{sOIU(~71^j~XCRBli8^_rxh`FJXJmhtdK zB*b-+(kBF8G~V&pjnv@8%0;(W%b#d^FH|2UTnN~Y`1Gcrk9`e2%r7xQRYDN>3&lIV zo{dNE4dKiI6=-1VkW2ku?FbO!vm5%)_C^ynOH|*e%)w6lPXp)oFvbJ3A4YpCuw}T4 z*_vpv2UG(CPZMo`6E&yy~n)0?6u(7-|n4Fs|5s<6B;gWK&R}eHnZcpIHp`+5(Qap~;3jHt(T@ z_d7FKhFLKcy=XaR*gx=tdtGEsNIbklgh{Tu~H_>rp9xF1(kkv!`J#Y zeobyu$H64-`lsKoYyZE*CO?7PP4TZem+rz+0=e0eSnb@$xIa>F!ZlPnV@bgNSWZU+ zhp-Ra$O|(9_Ul)FOdesdDkx2@{jia0%R^*>lPW@&(r~(uMu&%ZVR@jof#?Ex;9yR2 z+b1ziLkAdpK0G5&cGJwhZ{=2@B~hWtvdDpCUlnX%TLL%Y7H9L!`9_I?gFmdapUOY# z`DnQ`!rL2aZZpYe(@_9c6~{L5kiVD9L!1<>dlK5-qUyHP|7m3jg!%&q#IHXluvTIUCo z=s-uG$}>sP?e6Dz_V*Qut?3-&51&9<8ghU|iVfSB<|8t`;OX^bfGg?3M4yX;PUq!- z6;NZkuH2mGIig^42@VbiLrcNiDygj-#v3`qnj66nAqGt_n;m*9sI|4X!fU)`)Z}~^ zurn6xC?dgutO{(i2MYF*#T81X_q2V_W054vQ+U}-%3^*MJsgZB7 zLgDPlcjHnQD$7!^>X93P;y(5CyhB)~rw5FhEkzfAJxT%V0`7%Z=9z)@Fw~7gg+2`{ zcejc1YPC2npnEKTb2Pa_Al1z~RCk>N1q_vpZu@8w$bIp{xa-mn%BZcngVy)^6N_zW zf3_zhE{>57{2Bj0f{_j*-#mqk<;VVGIBfSL{nXaRkd5|9{H{KUDuw^G2?AlYa7}@Y z?B(-I`loW%H<~g;8IO3${~?)`F+>&OImzLwq$;Ng+>Cyeta{7}u@+qWZM&dH(j1r7 zBiV2kv^c>vC+}howYK+GkJm~7MGO9nR>8lRcgoHJ*(&;6lcQjmbD3IxXX-ia@$=g0 z%-S3u+3xV1yDaf8CBF7EJf~{Dwje*hcB%5TGV2|h^b3W0Cuz76R=y>)7s3x5v0t-; zimzXW7>^;08+KN1gm2y;-gtDYKSp2ivIWw^;tvpSByWuV)M$K4DW<(AAXzZk{^4xj z1aGqaz-&y7pyH@~g}{3O}pz5ksX-Ui6Ge^ZjeY&D7cX>?Bn>0wP4laA17{VVoy!!+4|CKe+=lL;pBK{ zCG^?`Z`SO}C=XGdV_8)_InK$auo21l%f4^89K%Cw->@C%Z*uD;G~>^SOtLsqBE!b~ zXz6k#HncMKhx43%Hg@{Q*4DdG2+?+XCL=tb#&(8r;`*wTOL`bzBMak$FIzLtr;LYr zRPRT#F0U-F{Lq_P37xI& z_@Tc7FP~iQRCYA-djKwzfdqGf!tb)UM?7opG2z!#O+JpsSj{vgNHKEB?JF|wm}{!e zXGFx_>9Vj&o~vXN$y(AXcymK_ItrTYr~3KPwB2k|XZ23dW-3WRkcs5oOEQ$RduQ6b zlCggvQ>Jc(rOBx0U}NxG%JOZg+|c6|5f@A#Gd8~EW*SL{5`=~cHyFNTaZ~PK;`d#> zcu7fX?MO7Qaem<8f12zY@~hfAIV~*z06*1cq}%kIp+S^+yGo}OJ(`pW)igipp0qK3 zUaPOzgZ4)~cgUNw7zz$kdKK2i(WqKKf2-tu(^p9EO2d|kf2&MmoK(}X@8_6&41AJg zEI4+WYA6$9i0t{q13PM%HnRQ}sk(X3Gi@JC#@gw~!`10K6nJ_av9GVeKJe*(Nj}5k z&gGK1!IDVl<=6Cj+tte)p@FTr!gId!{THjO?2Vj(AcQU^4PqP6I!pICUtC)#E*;`Y zjtXzetqNpo6~%b&gieD9p6Z-i(!~U@=g6g|hzV7?{8Q!c%%jFU7$;a>CkoPWOVlYX zzvJ1Gf1T1P(ONXTO|zy(pGY-Uz;VTlFR{W=_{&()feQ;;`#y=2&oo6}auvF)bh@e3 z-*<>!t)nY)o3ZV;Xw0s6Y4UuWz}C}`R0Vt%E{bX0hZ z>9hw~xQ zt*vV$>`YNUG;NZ)wto8CP_}U1Xhw&2kekRUIa{_hG{118&q%#>XGkeVxLbu^GZ-zx zV=v;e;-P&Vaoz@Q^j&3#3<(GW6RaClFI)8T+{GkjER1vaNrdzkV8sdaxF|@EzL!Z@ z_0BE)uCHw|$!YAm8RIFK`f+aSm96p$tEjq_{R*{BHuXZk?KKqcE8*8jXEFThtTW{J zyPTwgA^U({zRB=Q>droddP}}a8YQ|h%@QVJCZZ{{qUoDdW3j+18XciIpGmJ9fuu8G zbu@LBFQ8v1=;bL@A)IU;YrtcjiGOvLbiKG)oi%XfjMf_G@qO2R`qtf((C=H_{WAOG zKLmtFhjS^to811^vN`WvRNJs^&pj_Rpu8BoqRNB8t4@ShL9~q_Mj87H+zawMd)y?i z(~At!-&gPizfV@n@dIh#w8Ny@xJogdJrG9wBcj?_5%0_AJ}%X$ z=eQeZYFn(!LOg9FyFVj|_E-NIw;YlSznzb!Y0{tG%6IIM@iV1sUs1GR1k#2B@uHvY z8lGNj?)_fsxEkK4pp=+mV+q_J-}SVTx5C8)mA!D5Iv^m@E`DY-PA*#6U}Dv>IriLs zb)FWcfa;?+0b`9qwoPk#W@mIcCXUgNULt&nN0~2AZbB%~bnDp18Rc^$k>A#cluL z8VGt)Ly_iJ=;F(v8fnPl+J-5gN|EP#YL3Mp4v;k-WnK;FjVllGw+e>|$tqPW@N+mg zHIR;v`}SZaZjDSliUaGYKjH*6I9`cSucGXS>D=rPD%Hf`*{n+ zm*EJ`>t~f|3VF;)mmqp+SK7C_8)f#t)2HQ=Chk*;|GIrS6L2hRV~iC6Guc)KScwE! zNrI9+FSI^|y(-cw>b{ntG8N+u3?5yt{3hF)$(|hvem~cEwoJ|Xfe~EQ8t|M@PgeVs zj9y&g1MT8MAJr8F3_cj!_P=?rUC&Z`%tJMd$$|Uoow1YqWXqctOtNnrd$9?nV4=0; zug>DPY`iQI4+F1_By(B(YKfDoRs=9Pdm8%3nf#Ud0DFUd#$O7mFKlX{9nUU0dL98s z9lGS2-l=NzGW{CmXj8Z=$)gEuxg5Y#XY5vai|%#&)7obZ+rc%wpf}+~9^4D6JfJsA z$Fq-&(@t+ifx^bjAJsP@DSq~iHISZZ;=1oa)OP1KA#n|faou}Yw=zz{UBXvC!QX;w z)%2C=wgW%Pe$M1rN1vYRqZ7%!sAcXOFA^^xlGmZ5f2X=%A?F2&!(ZH2@CTWrGfpW{ zpcxYvP0jfZ9fjWnC-y_y_B$CgUUJl79owRj&2O@KnyrdFTH(AL2BF-)tGG54CFywf zS;}-#LX%}rH15c*B~*@f_^*|oxcTn-(Mzg;ZydCN6wW3}Wt?v2HI14m2{)ig-M^eQ z6!cHuSiQ!|HqGKlL)7xyK2DMyf7)LiuEb?Ie2JE+5(%xeI4$$zG@Yw#1y4Bm_F}ew zn=1{`pS+)sju1|(Q7!ojC2)`c?e;;`A{)wUdkjF8f=-|}NLfi|D(=R3mBG8|YJ z{%WA@?_D#F9(**LrN*YgZsR|P(No>P9$Bs9Sq|G-%D6Ryv? zr65=Q6WO~}!wnO!TtB^5gBqCIYHAVZwZH9W#mFUT-njMO-?y7Pem@eMEm8_$BC90!8)O&~ZI zDKe&l#^hF24MCs8L5UZe#cS02))dN|M5~^xKqOS*q16n_B`)7Tbwd=@yvvw|KYb=! zsBA7tQd8A4RTFqr=7gKSTg<5IxUTf0>?Hln?pDJoLHLr5@|V0qCr!Mu+0M`w`U_`0 z=v&`1yd>&S80|93Xk*`<`QRj0k0g~kA3?e|_STkZspRp?T+6T0vwq@v8gh5N1x={m zFp%9$x+mJoF4ZeJ?ek%%OSM2_)3+CwK1P$=g9xXVL>zO8p(Yo1ZLJb3b3=kodULd~Q;AHaqeoQC>rC_R)+> z&b>{d2ih~{-pcDWi&xC^vT}>84~?(Cze~)!g6qZKMckI}3$?BXExe5ZJ^EBpt~^zW zO1^RYHmg5E|MABLH%j0t<}?KHQabB`C`L@=2o@z%@91~oAZ=8CIPT6qQxk45pC2Rz zdCsqheu!l?Qq{@C_HE$>sQ?gbIm^L42h%LQ-l}vW)oDw}*Ye=^L)lr$RM-@*nhzda zq186t)(I0bnY;JYM>))jme@>}#QI9qTZd$%Lh zu{l2vSBnjAUuV-`f%w4L7? zC+OG}6Fcd~COV8gbOuw3$!E8afzZz~c?!JO6Lo>VUHmjALvz`G;lE9Id6|}L!=HBR zx(V?~+FuLG-wucYka`cdalYEoL3cqJ$KwJf{J5Zc3;s^WGnd0e8zuQz2 z>_1_1{p`{4C%5Okj|8o8_&ht9keRCU=|MJNl5kUBPlY!;QcxXeg7cAUy?9F?!B1#- z`yly3L37)8d_5Ieu36doi_8XwJeHVO6DbroJg@=3P!&E_8>8b7HKJP=kh6))*6r-E zbJW0St$GyPu>`w%rLA>(vkhOQ8ph2$xm<+n!6V4|i#53;W}Akrth$T$`4iJEq?~bN zY^&;cwvPHd(%93rd{Javrj9)Tc!fjncB=n2jIm480OpM~|Y z`$+BdLuHR?N;H1gdY)%*7qaZzV)X-cNP%D67=Fdj1DsQ5iZ%hGLJy%+Md1Qa!=%2v>`FQi{Q?B2|-j7-n_GFP^4 z{D9&nkOP7SKCC`t>lSsBoBjZ~T=OxgT!`*XprZ{??|Ldl(=_s$Vb;1WpbIT6|eiA~RD&`{sfr|zTfbe#qBhx;fTutFnkDH1R8b|nF z!O|Qi=7hhm1+CBxgX2=iowyHk1p}oE@DLj>^M%((_|qHV-*9ptVSO-Vo5Z1=3R7H& zpuFH)VduZCp#1`V{OHl*)CLlZ>>Wtbd`MBlbZRNmpchZ?^!BG)-A3}I?D3dOkC9_X&zm=Kp8mgn15f+oUP|L;cQC(17ek0H3HFIL1H5Oq)*dndBT8W4uXLaY) z5CX?Ya9(W6zrQ(Y-*al9Km0v;du~qNh&(bz`0KlyG-bMb|J@$6lJL8wtSIWvTF8rUR0mE$1g2;hgMl3t6<~JjDfvq{mkCLnVkzQVdZA^EUMH5BqZX~RE zAZ}LOU&)+993)M29G5H+eW24^pq_8R%xf92Lj=-iU%0Wr#FjDZPBswy zT4cU*LRo8UNi0Dr=q_vgJ_V?-4d0Ppz{@9B6sOvfMIb|Fq<}KQ#G4W~wo*WxKT(!fXErvL%1nXF z#BeYMm(MQ6N=3M4D?KDp@*lvn236uc8F4$66wv(utW80qgM_-xWGc%LIhg6^A+_ z$b-_f&kpobQTx%~pxyLWX>9xMz#Z1FiWkc-$6mN|V3&mvzrh=DhL+`kaNNFdhL&q|PuQ%m5l<@9EqbgtLiG_^DCRZ$qlsHLfBXm|#!P={=GP^ z2Y1A~-1t>J9ugaP4$OJV*-So+Fit1R1Hj7WyM@Vh`ekBYE=2uMI15j|Q*Vpqj6Va# zSazYCjGHSPTY4zb+bpK7SeBr?zvjAMF`js%OG4ethhQT853prp zD)y_4$q#ON(p;DEI8Qrc=zIO)PTJdPUC(9^c51%W@s=hgDwxZM$(JCN+Wr3D^T05d zG*{rZtMQ#wMAA}eQ>r9{n)?3NG$C!ye@NT^h|CIbi{xFDnmJ;h{+xZL{!vUP@i*Bd z`EWVkVfg%KvIv!$ihR-C#DCqxXGU&$bDpbL&p5qxSdkngF2VM)+`E`p&_TbCuX49qu;M*viSP2YQa`zH=`(2Wt)846jN9ZxA~T?PM{{C!i*#mX+-X8iG}ey9)YOG)^HScKs%b>tH4C zuHTUQI8&h{0j@Dyigi_Q(|jVHP`wyncal$qJp9OC@p;?GlJrc)$NiK?Dj2f=)2~g*-DP8& zcex%Q#kB3Fc-fwM^`3`&fWtBE1>N@)H?I+(M-hewS@%q0T4!&Hh=n4uw`A%ZX*#bD z(VxrXLq#8KWJpAw^S?|ZD>VkZEIR9qKXBLU>gXduN6VGK#e(+^bezCN6eGXxGMi_F zr%&_kD??<=oXV7~HQ)fKO_|Dl&;;A0)0bVFUi}Z@Mj-{QxwBO<0 zX}!p8kF^)H0?g?LSI%?=Bf@r{mKs#R7YI9Agor!TB1Q|Ds?`+tSL{?9hK;k=@x<}E zhUAp$v~`tVlaI@^kODZRdkAI-A~}o9KC1Wd!9K5`;m=FihG`unPFr0Gm$VnYV{$8u zqKt2is#UqvRz}NStfkzkm}vzP|vitwy$G0a7c<3De6XG|n5> zRQQXu^Bli?^2+keCb6`v%=Oe-Y3f1I*{s|I6dRhE8Yz*mqFoflad?WeIsQ*mindEw#_+=9#K*IMZkub zjbfJD01V5bdvhN94Ih8-68n=dYILVd750+*T}R8ln^va2&ON9F%3Nl#_mg1sR`a#8 zKKX9L!#ipspzT-X$hDyX4gcAeFjqUiFY{h6AsgDy7!}NOWx38cPgZ$fVTTIi>GhQ@ zy8c60w(W+kBdmUOOTgk_MEYuxVg~^=E#F3I+BgUJAYWtQuJM!_@WHz*45Hde74-O_ zQKf3-M|rtpks257^TV$7h2DG~*T0s`xko^;{7FDz1IOBys%88MmK;l65ZCJ*eo7dz zu8HKJD7Iu}SsT`wG@UG{!or+x*Uqv{$fEs2tDK~a8qU|M9NE#vStV{OKriUh+_bLv zfabQ?z2zmZuLt%_cKD5TXDC+U!V?9*rcG+puVWEoXXm>(6ebR)K>^|4zxR6T1^p93 zFQ%<{b3A>de&)rd@Dt2o0Mc*exhVrVXXWrTNZ`2#NaSyQouE4rH&p({?5$p#ybQoC zI{(9dNQoD0r9blIpG9vAPrsJ@Vhn%J*GQk%CaIJ!Z@euk0v*Q3;gel=G!yvNNs*+# zdtYsJiuXCLsrD$y1s}!4bRz*(k3NzK(2HOob{yxC4q0=6zqckOZO*xLTXzSbr4$FP zju}Znq1f?{Y*IM#2*2s z2YP$%v6?We)NxM%aK3Iujc;&GBT?(9S@`9al_AxOewzEXdTh7^RgTj+hKp|6D(_sv zYwhH6oTHY8^?x#0A8MPP93XIn=QyOjf(gbeNuMDjana+%_0XVfEDMYUzFYVpaVa3~ zJw&w_=`)G7*K(T;yEr-0Ss-eb9c`GAKYYvfV}@NIGpFpFE?(|^F&L8;V3D%H={aoA z{tRAt3!FXlVK|=)5pVdhbvvr|y88A7W(R{`PikX=X1eaUbG(#?L8@@V1u8|gw5E(8 zoVn`17t*7{C1>uj{}o_bPKBkPzD-u49J>Asgx?&$JNQ*HKMxsXGR;rLNSB50t2n$s zB$;v@kJzrpnFMzrDz2Z7Yny#qaY#z*=)jtM!!*=JGiqr-nln8GG{|dCo&*pQA1Vc; z@ayMZ=E}~*ekyc|yPLx(XVTkRpzUfJST!Z)>Ll9Rc~M6qXM@q2M#Bux5?;6gv_LfLS=77h>S{-ae1pWNcO%~lEjq~WoD%m6(Mwy zag#mD%(br(?sbiOuY38Oi=_AXd_LdbU-$2OUgtc|^Z8ik@qowJNE{(-tn90q=h~TV ztu?u%5_gY<2PJkNFaT=4R|h78VK~}rG{2{|acs}RWtEfb^f9~1RtMxoz0yo4W|S`K znE6Ad+p$JTO0>?Uwq$(7E}T`BIV@zS-r$J4@*CQ8K80Ho&-lH|;GJkEh)QO~tskXX zv>JHc;DbS$yGwjF6@ zu#VR!MEY}j3NXh2$nnbAbV%?@{OsAQLq+YW85Go3-U*b)1Wn2ngC;8mDNz+6u2Ugr z*Bf6BorA3qwLV6n%|Gby*#5&J^~OjVM5&V>2gm)7nkzvIPz-;NX#5O6Pi~MyO;3a$ zdZvFa?HK0brAzHvkPuGQ3&EB2ecok|5E09?k)u5A75ug|-7S}o z5u528!znnd64d9gV9Uw8InjUq+tTifrMlA%%kIZSD`a1w%I}JXBlcgN+<9g0M<$V| zBa%s4kP;~md-L{~aSs9X(;Z_Ci!8KA>U%pb3&j+|2H>;_w6@cU47Y#&i2Do3sUEW6<23xbNNT(b8QyA^+2S9kQEFg30hLTZHDl(0xKV+M$1g zZ2se;q1)_BbKXc#nwJ$T?8!kC>CIT(-`m5=Xrb`smw9l3NxpEWZYguuja-(t#=%9*DCWn-T zrU!v3IqZY!=b~;_|G~GIB8d7H#uuKf`Wxb-Gz`9Hf_e@vI<30@4>R)UMz^3D6M_`L z+st&C1(gO}h<2vA^uHE}58lwRRvpc|25^Lp@ zZ=omC%+fxcijMA8>dkX(yHTzbGLb)R9Fn8g?egD z?wK&bg31KYm!G5~5{FS47xo>W$2UcBN#p_I_u!63>bHw$Xcaw|B9HLOGBx57q(}mP zlO9kn0+yj%KGe23wfJFLl?Gu+;ia?_8*PW6v$3oHZBUN~Ya*WV4{akFY@#5PQ7&WE zTFH2QCR3h)bbn}Fa;A1nr4aR{4OVtS_s6jr`Sj-;%D0M##R5A?BQ;;ECJxbUMtiS?jE+-h>5FhRBK z$gjPsas`LT<9SW<%9NJ7@32Yngp$ud_w zwe0ZPZ*2}+2UfD)Ma>DRB_5Vxto*LPHrU-GU39rsSf<6klt;q!j<8^*Jn^~1Z-LL> zSX!DXAU%-@7q*RdMU=A*hI82#_5AmB3?wMOdc7|!4=Ix?ZIwRZx=H)3;+N+ou19#5 z@971Lu#1yv_$Wtz6e!y8xIxoB3t=0aQroUY(hgi84>0{~E8LVC@I@Mxb;&p4zT|RF zie>gyyRc^ju20q$(9BEnI$0ll0=i5B>`k3e8U9nVI#pL{v82iQF=ANo2o0%deKhw` zk+St~JS6oN>R6wqWt)O@X9xWV9rG%7zt#l0R$-CqH{3J7#W?cyISM|n;6xf07#^H+z_Noug#xn+Xw!s9ZouLH%9D6(%?HTy5yfY z8PJYxUdeW=kUs_j1WEPSGd|GrL$gay94XLlY7|+#y1fG07lvGxZ~ zR-qK#0|o7G$HY1LrJ;f?9^ugZ%ON9FNx1cf^fLdTlC8Q6)yT>B>;D!1X?9Izmt&WG zIr!X{)j2N1CJg_BZ9d9KV9E(dpWr>Hh9JF7v=#ao^oS3zh;=(S&UqyP66pVcOO!E4 z2y(})N|=9D-c{}~{bZ*s_G$)jV3WyIf$KL`1%mRGc|F$KkuAUmCdiw`RZe{)u9WXk zZ{wTEVT5k7h(M?OwX&ov&~16<@+#*zT+e@!MfQy@!X290&mIGPUP74n&Ql>tOZJ&l zQGGe9udQ|7_rPud$5=gHhhyGpoUz>*q?CG{26>olZ@|FzS;&2@B3Q=B?*Rn#CwJ+X z#Y|gUgfw42iw-gBh$ww zhHSGaDiejx@AY}VC}w)5uXynXQzdw9=~lJep~kgGKo>w6B3ghTVml^FQu3E-O~uxP zjzWud3rN0Ab-pf?*}DI#$aQi|cdD$6R3*+9rA#yD8!M!{w1f3VC9Gb_~7*X&=_e$%D=>X&|RC; z)LRi82{z_bOWqn8@GhULj{bSs3TxRPyiS#fxPF{Da93{w+hR?$maeMVonwFc!cqdi-MqStw=RsOG)-rs3G>hrIj zEdg68*J zl8$Bxf%S<25c681sJA1Zx74FM{2dIG9qyQ4qp-feDVnfi#&u2Dx&P9Ht@l^kR2ucW zwL$`zHgayTNTcyX(uCYblRZ z$QjNWIdbz`0>D*AH)sALU5oYqjVwY#TDI@%(oyHQj_)NLauF z@zzOa+LcBIqkAQyj-sQA9P&H&&$>7T$Um@G7Yq%SK6)G@&dIDS9PHdNS-A7wt^Shd zH(dv3)XzeDaV5-?`Ig1ECbw%Wc&D~@``>x+t?!OH{JPz4zb<6OOd0j6ZSrcE-~twZ zPJhw4RUgO&KHcq=&P6=ymFhs;n2u}j)WMD=5Xy~UpRV5gq_|Vlu+r(^zsV+aHS!`J zQTgAz=|zthY_ZSLerTa`_YeKV-{GmW{tH6O;pAgh%xDMsh)O}VgQl}!Trs`AKL*Bz-R=XcD z*+|24?BSWLnwG)(LQ!27n#c}?y3ycf19o2adF6Dtg2yP)YO^`V*8DY^C(9YX})O`Nq$+0 ze~l9PxTdKgfBu42d8~vY0+rilny-UQW)_f44p;F|zQui=FJDvo#crf?zI59KsjQFJ zRDSEdS1Ee$SB}D%79jV|4}rVxoHBdr-Yrs3pb3UFJbp0& z3nR}Gv`K4Eo=6R$vX@vXO$jFa^HP=OCUm+khY#8~DQPKL+U&D=H2=pNesd66*GHV_ z>%Utw0@-BvpCu-Cc1@VBeN*=W8L8k0mcibT-=b?~4_M?Jv;ui<3>xC5QTI z(c_ta#1_#eQe@tDky+2^ebYc`$#q%kJMESH>^|SN%7S-l`QJ`fm@#M1Kl}oJAKEQ) z^`{Iht1AnUeUJEsthQRYf8xtPC$Z5G1$U`tFfh{6oB8me!#2^j|Cgy9=V7IO8gUv<;M9ue1AxoPI!} zhBZ6T|5X{AQU|_w_JK|r(zrx5r0!cMTtyXF=T)&hto{*C!6e7A^G>61*uF(IhU#%B z75xoUIGva1pz>v+cg+9PDnXHB8S>?*ru?%mV^U+|(Cia8Qqt8+ch>=`M!fiTqHBX! z4z%wcX#y@Oc4@l8);Q0HH{3(GyKi6 zlM1B$Mz?_Ik55d`a9vJIsW$o|m7NjFLOv$x8ODB9IfQ-rcTZSih(>gIswr zIYIYAIUW0GxKurZ(;}4Y{1=8)tJH7!TX`XxD)dtTSHDRS!bf!l{=hy6%2Glfs?^2o zFmRy{Eh9#|kh)%<@jYSa6*m@X=zO&xIpXu&_>&yyrE|x0q8d5m+9S`SE@mZPdg2== z*K6+kYeKxQVznoZtkP-v{sV$j1xhZP|HM~lgQ1@F4A&S;%$b(E2MKHdF!|Wm3b15= zlJ>cE{9z&Ni+(7wh#L1)b~GVluo|L~2~o#uu3*|Sblq>?PTRefJ4GyY*R`Je{$$Z} zYS!seNx-9VDB}46+Lg($vch!tac5NPMd-6srBz*_0Bz?Aa?w&1Jdk9stfA2bzhDp; zMe-@951ys9w|0;D}A3`@8qxtGvA?xN7iU#iIKV`cc*I~|u+|FzA?zcm5R2K2LT&Xm_MZ|Pe}Q;-uWjJs z*xaPgz8tjfj9Y_Ove1tmBl$0>PA)%b<&ZQ zjJ$YBD7ipz`E@X5AlRS^#dbW{Ez2E*K7ObYIB5j-tW5`!rHRgKGZk$kNcbd(AaM8f zePthg!Z)lva#_5%H1mq*6;m{813@W@?KrvUL7_LA|J%5u~`4yebE_Zj}eF#)RASt0qK*v9`f zF)w0xSb4n%^S|RsBho!o&NygCmbwipsRivJR6kJG_lr*nPz zVv8-a4$Ix=i&u`3Z{$E3CcG2c<)^=~8Dq4EDh>lQWLLIe&=x;uCYX9=oBoR|pwlAL zgdJm~)XQ~6W|19-sOhfd5?2(%0_3>RrWS>6|0f$`13Gc02UJPBnJ#3i3w|2Zj0nxq z^4D7!${)$Wy8My|IG0f0gSHO!;67*(IvFEDEbBdu)h)y%)>*2yMwSt6%%s zN|(uV?eE(yN(rG~;H!7AV_0hi{NibO#hsM|v30$c-`+~^A|)&U9UjmEThnmh+T7Y1 zjg_936a!8txvzV}6OT-NGq`l?`~CPCv`S(j*hogXrUtFFxbF@6gN?JEOk$ZyiyG9{_dHRSP`z zXMG%7tZqyg>tNhe&uTQ*ebKN*J5;l7WHS= z*6-FUvwPcf&&^8j!N`4=CL~3B3Cu^u^Q1A=gT4@-TC0U#}1PRQU%hXC|>T>7wW-!6c!-cm<6f_Z)8KghzE0Di$~+oI ziq|$or$dZ!GwiCrz`8zV{r^em{5O2(%v8ppz;~v=nY%C^p&+R)e90^cO;dJ{biD=I z?Dd_zex`Ki|0bTyiqqlh&O7V1U#E}2xyX(gH<#**jC3oUpNEJCEN3&{F`q~)(&`&~ z@xkF0?~Rv1J^`zHoDP>8e(SUv#%m$NmYVv3rb&Jx=bV4@tQN(qad@W7En;kC@mXF) z_>dcakelhMCka-a+Mb3-Ln21pcYZX&C|cNJ;j3i6$#aud`sb#jAK$;r zF3#;KEFDmnq=^z~6W_^}Cg7Aq-6@66vFJ}wQWsS7qxepn6i}HIPc+K(&YS``l2ho>=5d&(+sIIY^RbB=(x&B*JE$!>i^Mb z-K1R!5T$*8IJ7|%%ur}7dzppGE8t-Rd;M*C+8)$6iyxPsA4mjZA{pZ*04mVWy9PA@FZj|jKdJnCWI z^;GFr{A9T~=zh=Cev4EnqW+i_|MHQg5v#^TNl8F{*d;zE<>@Dr=jqoRmtUJd@32YU zS;j@)OURrL{T>;Z%0P%*2_*?|uPNtoBk7A!OF)kKPKZ&4@kv5M;n6R;p+UNN0|Cp{ z$>Jewo#R?fN}|TTA7Z7JSkv$Y7Ib?9V)~-)-$KfB-yLwuRchi9ib!7`@H1W+TI_;$ z!7yH&XQ(!B*_3+LNWe=s^JTfKc`^El^gvKpASoxn zbWuRT!2M#2Da>c~^Sw&jj-{fkfpx|Q3-DkN%@USK_J za!!%Zbhb zoIYR8m#ZCkb#<%;6B-@a2j4(GwbowtI+Ve^5{WxwaR}zv(y^L(r)hejN+CSsKNjw; zkGc_`;@X&h?A^?jaFp*|WOIzLlCpAoqwn~89?A%41-?c6$Vk$~BzMx#N`6IsdC8@93QKo(q$2A7+G;C1#2xJ0-JTMiwimIiX%&%_)@67uwgGmpz$dc9t5)kSzY= zkxi)bN4akb#$n&eIvW8-2T_(POa+b|_kt4;VveNSw^`HN*Tfq)%94NqI)9Sr$Ac&z zH~4~cX&-#&t*Vroxo>iHNHZlKJFB7P0go=A(Rat~1G}*rB+NJb&s0r(cv#xzvAQG8E4$cb^QH?TAX~)YXL-m!9=a6u1o2AoRw#l@R=x652e| zad}a}z=XuaviUGpbzw3-J(TKrFZ;<^zZfpb@IH+m zGE#fzA855&GCbTcji_-$+Xs|7pLx8oH%0H`qeZB8aEPLthFj$a+3dX^T~w=hZnuQx zt4qf`Y&ESaVu)35eL9ZE&~oTtsxoxpg+g`g#$k5A`-=%<0)6(eL5E+%+jdEYJ-gBu zT}?G`sgLhwa6^ew#9~GYPIz? z{rXii5YJ~4GI{N}NHt|tUWcUL8Q*f0i1nb?xy9U~aKEUUd9n*((V%POb0~NJGy4mzO`YrApHO2HCUS&;_k-eO6 zla5P1lWhCg_ZnKhK!9mDUg3MEp}GzQfM6(U8~>`Xc$ZfQ40`;@&wT^g=3!ws^6pDE`?XyM|0n#%bYI1_^z^Q2YnUJgQZF)~n;Lce z4CWmcTR&18e}wTwk@Rf_=GV`bY#DPs8bm#Wvp#!Al@9c}u9r!rhz1W|}Lb5_*1#YB2{ zC4y1X+f`lvWIMS!LWJ}EsaU!l93*NG^~)JBPSbYSm?&V)^NdA1(Knxe#%8DlV_BQ@ ztoDU_$i0yZMtkI#`JVf`CE3+EsBtdBC><|{i>Wivzfy&aZ{^x-iOCN!B^3Cm_SaQH zBr6>Y{*NwpRS+Shb50^os^S4YpBKLmUI8YedL~ZHMXFnII;epG!B5yaJ|d3p`mGG< z2XL3Kr|08sDM=dh_)*{%sgjf|!Bi~uIb+`$E>W+^RnIuVSz*oQb=G5K^w;*S zpcNe@+{5h&+%<~hMjr|4rb0`L5^vj#5QEFuP0Ki(T3LYlXLP+^V9ZCNyFQOZL6Jx# z(Kq^Yi#U-rBBT}Mq=qCkvqiOcUCv01RIVlL{ny^Gx!i28Q;JlL8!(E&&@41#A zn~k%Hv*~f}&YG^7Hp zT(D!yL3dPzT%w1GLAX7GP6$to98JU(D~;PoR4+ z?uCZZCX1h76XNuleT?%>WYNlavP-o3@E$OLQFT%6tkIs58DS-UAysR9cFv zxMnz?f9z|mJ$3P|AMMb~;zh-8-=;Z7)}k3&6f4$NR~DStmYgXUAInI_pa-yn+5e?6 zg}3wf@plCmaMcx+w>$JuHs%=YGuVTvitBII-h!A0^Dc$F#Yeb5l1`FI_nBRB?)_hL zD~q+ftIu6`!k%8ao|`uJOp_foViZCACNiUN-@O$CHx-{oCNlp3?bv4dK+$t_AXdL_ zZd~NyVG?HOq_UdYx1+i%*F&;Q`&&8aQ!TSzOHqCLkuw1+P?Qb2!_sT2?Ypa@^x=j5 z(13ncmm;UcM>^9Dk@kG3x^STZ-{~X1GatI#AFyatE&~wr?jO1cN-V+uB&FWWBf9se zu|5VWi$APQh-AEFM<%oc=2g|c_7MuOBVAvs)tQCMB8Cf&bkk=B=JVkd&j{_D(a2JX zT@!0u57TiW2r0WtZOXJMf(MV&6XWthOy+N0-F#Ah|}K!6iqz*${WA{10Mu=pv*gNQcGRr`Guz0Gf=< zBe}StFfqL^ICk`u?9HUDv%2=vLBmhV^bSo6)qV9jkEu(uMK|MT#QCHCY8B@o!^Qjn zMtQIzr6q?w^pSRv6N6Z!$>3hkaNfXHl2e2TUW<6MAMoubXz17QAI2se#Qs}+LFq*w z9JkM>Av&n-%7NVHo`BK&}e)DkX)+n5Pk#p-Dl3$G{S1 zy|J_H9huROhU5{w#iJWvlXav$9!@RPX7lsNuF7y?ChqEiJ=~zO2NG=3uv%zf3S2S8@ zz2V%#feX!Ktjw#Njyx)Dw>d}cdb~jI)9|w!=2dR6xJv|Crzc(43m!i=vNNl9|6SPF zDDCF4_!cvtS&_V;QEf&V7lh=)#m{)x&Ecr34}s|;g=>(WBOWnCh*)))&M|6MIdI;W zXVIhu(~K-nX^=RLgF$Ojbq5f8tr|*YG3oMFAZ>V6zv$ z%2u(?e*qb4Wpb$3LP18R;IBCecd-drqUt^G{zR(7l5W3!5abKcrq2)w%g=^efe`B? zzU@B{Cra!QtZfhkDwdBlus}~!Azqi9qGv|fMgJr9NE&WD3-|E90(Y|K*ChIVuSD7r z9iL6di>^k#N9fO2BqciKh2k}naDi>>VSmyug-A2~5*`X?3zLmag{YljpzXYRE2>D6 z&%N_dyOvXEQG>D2rB-Xc$E|L@LWt514eo`X-d7}3yzik^N@8NhiRZU{ z$dv-eUx%yguHIT_t@MfdM`FrKA(z>09>TGvyY}j&_t5Lz2VdpLw4_N3??6^zNkyvi3_)bNEQLAu+{UEq<=VQzT=12B4@;&Ns=>T=f zw*={*c-=*4JE1EeKy0QW$6ra~qfi}sDbpWjvteE`z3o+j&=N~DQ@$}aaq)SaHKHBS zCDB1JN^CB@qHLx$?_xQ#d;^SHt=IF7!hhU{^_@EluIy|T=|HO%{JhGE6DjZ#LE+$F z-Lvo5p4MNMz5R*mc06l!=gG6852TTgHW3xq#o4mCDQ$LGMut4(M)UJZT>S-0Za)SS zQqN(UDD^L3s`_zj&s{`C1=rWPC%796=()qgPC<{f-~4s!=ZFD70p~s~rz}-Z=U3#B zsWd1X{14E-`v4kTO+VG=XB!pbjyjs0^w!2O<{w=<8?+mShfwLdw;NffNCriLi(O44Yh zC-5hB}xQucLSc%v-f~wm3-)SMDQOiJy`0$r(FJ1;Nz;cv8LZ{m<9Hb7G7w4 zYwte=a)-DvIuaEZv9*ywbch=6gES(Xdup6M;SCxnsRDyEYOBYP+|0Le<4v0CjyOf0 z-7yGb32#KZv1xSR`LzSdfj_=0yj+dPJzjaVmBR230M;x3!aJk;hDNP7Z+Z}aenzPH zbRpE@1+wf+z>8X+itG}Aux?KO6_TRa0pz$}ZF|KcD?E9hmaDtF_S412D@U(MQAK@j z!AYZ9!&13#p~}HpCNFlXzES^S^Q=tgB|*tywE?xpC>NPqFJi>;T>1fMlpD80tgew3 z1|Zj#rMqp@hPvI;MuArzCc%}UA8*+qA$kFm5T%qmFI6J2)F5pKbMAa)>QBpm<`jZx ztU>7nyI|?uA3vn4nnPReFeT!9UkUFJ-L<{jJ{61);;1to~B4G5-+bc zeEdq*-^$;qFl%nLlQe$uhTn<%`+{VJ>Dw+a0v&o8f~xk6@V&A~K5y0GbyjuYCTKL1 z1#<=o<>vZ_HyOP770NN!bCt<<(M<;sevJFtU|WILfDig>h6B%T`ZUu~Ui#-gi7Yzk z3-Rvzt`%ksK$uTv{5ZTfKCgf?+5Yuu%peJ9i1GS+~q@k5Z$6qv^c#b`c_cVz&~YubGT6wGX6sY(zIP zRdOp^@Z z#4s}u=a^3_ zI&l1;#faeseuRIR%LoxvHHgV^d8nzi@0#eP5@A_pjSK<(C%%GSrVfSLcGt>1SXWwe zC3xd1iqih#=DJBcnMD90uE;e^HDuAUWmkv#S(u)Clt?Fr>TOe1=@DDqf3bUS#Gq^s zycAOX@2G(=agare%}L18Z4t%P-j`-1$uZUrG&$+@52#F89;!qt7GWQ;Hu_j01Ah<- zKwVp^AW^d>bV>GT%u*b$2rHo{7f;$4&xX&YVbA;+Cmu^KWLBn9pL%>fzsP9j=hwI; z^PPPQQ!d*>VV)nSYX*4Hz|EYQUoZw7=eBFqC#uXYrjTkE#E|&r*YKjvjxwba)(ROd zx8U!+Ym}w=$v2`X(TuGCG81D;7>kmNvLigO+dwy|r(S-BV9FM{N+_PIN`W=Zl&k;I zbSML9TgJ|B(-lSW19ZUu8G5;)2DkfX`s{XS(*=72Hf?bhobtg)F6fteY5DRf91REb zYmB!jO`w^sX0>mg|AQ-uCpm&YekGiYb|uAhJ=M55ohZ9@v{fpQMC1QySYGcX(!WT~ zAXTW&W3a*FXxII&hh1@ttu6jVSE5@=XBH3ie$ATDrY~Lg+Jc9cj&q3$ZG_2Gd7h)M zw=S))&I(syiov;ef5{zG{J42{;0U~QKDYK?4|e0+!K#^3%_eCyR zlWxJ+&N&BMUuAZ9f)}46kJj%_77dX$=~Q_bAwmT$p(;|kSWN%(KeaEET#S882^m1n zK`XEEzh@RuVkW`zde1&xhcKDwFx-$|0qAeu|7!sHD#rs5@8^d=Lm`OrJv}h|X#u?+ z`CO#Nw151Ehtm=A->;ChM!e=FCB8IuxJc&HpctMD8vKTL6nlV!<%Kr+#=|8(9p!7I zlW#4vM$UxYIFjVvnFRNm*U}dzTxSHrpKZItkP!q>nK+9}n}eCHRUnM>%z_K9y4^1?gfG?e3oC z)k~nrtPlx{n;vrE%|xw#3p@bH$(!*|Td4;WOda3Aq|r4SDT=s8SCiS2jrcGMmHs|0T`woCS3^2&FueqKnvCb0<@*J0u zzUI$4Ju`OJy|Wo4%Orz%Qi-f_@FK^E(T=c@om2Veb2iW&SjGvzCXr+(^Bv9srzL*f zw*8M|(6UQNdMm%%c_-&T!aW5gCx{P4zYvBM@d;EoZ)BMGsunw%BAG-wi$h!}ib&%2^1t|ywDbw5l_w!wSxOCTNdf*RAQjGXllm|wl zEjh3!a7^4>N>H){STk3jH#=Xcbb5#HALK(TgQP zIH*nF=m#BeGsocKy1MjNjGJ{oZ-W?-u;Q02>T`uRE~O9RY|8RjG*jmsr(hPsz6BRL zXT(L+Zu;Yg-V_hCM+nxGU}zD2G5tfxwwS>or-J0&nlXA*@7TV`AUsSBN%3p*(1j6= z_i7U5$yFFnhUz}v2h%sinC2tdpjXGC?ihMNa!;2C(3-f8vXSfu(&*9En>$IV2x4PgK{fIO- zKmN*(@SBikA4GSGS@^(sX^VTSTizr8RG@uR$7uq;@>=pH5G}1pl=4RtX)N zVZB>?oPU&?57A0>{9Yxuz-p#ovZ2M4*WQ6#W&|If)!9L&Jb6gCq6BZyyZDCH4xSQ* z6(e6@Y5{e`SP-=oYGIS;7^C_?x=;8@;_{j|K}wwwT2#MSNbT#mJBUrNqVRnVO`qA+ zt;}mGsp;x810>L5ZK=dELwgyV;#1Xq&o#Afmy2y6pDB?XL@WN?_k1&O7+>|)rhrvu~e%)i>GMNKYto_iJypNglYZ!T%W9KyjwlT;0|)JM4i1PiD`J$ zga=hBe$Zc7g=e67a~CkKh8(TvR=g$?Op}d2q4iyWLyMu;`o0BZcqIQ+43i0!qb@Jl z1VZgNhj8h9B~u!z`Z4Skl}ty2uhXFCuIT8Z_7_kY{xECAIr3$O@nckHbRXz zA+uNcmx%1#qy7&MqetFZLy$AZNJZy9@Oq)G#QXIo7{4(T3Tg<^J0$cB^ z_?Onr(=_ekJW-xfd)01|;2NtJQKmKZf}90)Ki=!5xwJFt3+fG=I&trjcK1~&j*}Y1 zHn_XrzpM+PHq4f~iguMbMB0f8>S?u~h8_ii#hvgX5I;4bKeWdxcEdL==$4&O8)qw6 z|Fal>H~${SLwzJ-lo#1iU7qmXI1eqXnTn*c&3%f{4WFS&&Y|*p5nZ;w{k+Xbzbx|k ziu#wYT<)8PQWRb0Rd1P}Y>deG=_tc zq+=oehTTudBTFxm;B*{1#wn_8^(>;1F`d9NSSl=gUp3Y7!{XAUXLzFsz|fxvq(gFvvRQMqfIQQ;xc&{A{ z-{&Y(^5bVXe+~BDT`k0zXQKLY{UU2<;kl;FYX#+6Vghv4n+DSl75Kqgndi zr;e2fgPO6f0{qcXW@VDdD2Fx~Bn-iz+W;=}Xitwa3m)RP4)W8H{iX{8esk9~%2$cg zy^xDy{Rb`&9J&K$Fnv0V{B&h_j2`PgAI`dBsrx&GzU&0GbK?kAYpu4znN>drIVuMQ z>g~b)`t#g*8aJHo`F{GW7?WXxR!y0REHS@1?#&7=zFlOMZPDL;w@yTPm~35~I!c$Cq9_$%h37S^{%di~!^ z0g)FSU3C2u@z1LzREe(Y9P2=op6y`U@kX`?PO1nly{8X8Rut<1A#-W+O5^3m*Vu>R z!+Uiwp@fO2hBW&g(nV-P*4X=jNlNH4e7{O=I8o;gF`JU5iT|-UDOko-olZE6#uJ`N_Dc-d+7QVp)1jBY9qQC(b3W31u1Rtn?u;cdQ@;nr|9mZc^18D zW2~_h=0s*DHjOu8O@V+(1Sb0+(qeyo=w%3p3Wi;(~#aqGh2-~ z&Iq<0y)RuAH_c0r|Jm8KCnwG#^EelkP;q2olzBjWhk0)c@rZAlQ2wD@TZ?+nh}q>E z$|Z`k;wkMuCFhK{V4tK%gE(*gN`hl=wR)@s&<^bQ0t0$3t>&)7mz{EZth26 z(iJ-rQ$E=BIfDvRf(&6y04oS(2!Z5OQ zv8vb5Wuc0Bb`?kA!FP7Y>e_*(LB>RN7q8Bf_b9HdYopHNL&oZm23rrB*?B~wJSrC> zpEs=BQzBIfxejmJM^-*F7#*=;pyc}bWHR#w&D)=~$(;SGwl7}Nj7Wf&nKHn%_vw9C zCUWISJ3UOntm1}WNtfQ%|MY(}c&DaBc(<5d_U(P7voGD>aOed6bWoD|LeRtPHzyH2 zlZ7oTGom^}U?2RiUbitQHxkT$s;gonmTGMQGW)%2{e7`11K|Uuu?2OT;7!az)%5ho zQ|z;>C(;?c=&{x(TB+Z{FGG6Ms%Kimv}45|I9qepQC`I(w#Os15C8ou^H-%8yKoKE znR)Y>yCgeWF+RXa7fTJH0=*6B!z35~wfQmFhc zcd{BQG{yPRUBjd=#Zt|_>3RsWW3wY#>G$Sv2!bs z>93lr(KNaOF zUR<9OD6L}bRdhUTGTuFn>ClQ*70HywNCTdW0p@$~qxV(yDlgvd)~X^p06t{PpyWcQ z%*OS4?r$*1^8oU!fiiVy;M(fkT3&_1O+EwSyTtG^Hi>MhSjDS>oeruKm1j+X~z81gX_76fT4MOmzhz3grfynxb=;^Fgi3l0NdVIW#S9|xh)x%<;CZ2K8$l)z+It;!f@oh3FYTgh^13^o|A z`9^_9M~*699I9X#Im%QX#+ZK-28Q+2j-8&$1TL=8@yU`n^I+#t%-t95y&})mioIQm zcZT@VE#n6orBTmeAM{qD(wXN|=UR@GC-J~qU0l`$Eeu*N!y`tM?X$lhhLVgJ>-)~4 z9;AVRARey9lG{-(^FUtwGVnX@*4db@-Bw;ys@Y-F#{Cg-IWf4}#R8z=vw@DN3ziF} zLRsLKkyz}zRdr3!eh1vu*19Ie{6lIaOqQEIgZdmq=lQ!RnzjO96|0TQ49QtjJ#D9I+A~NZ|g&w&rq7?_f9s_Dv*BLU78VEE}HfcLyULzJ}G9(quoo z^f82xL6-y*G#^5{aDktPk9`_NFrikf;z%f~>01tch*7NOygY|Ul4zB@*y&w`wkVu5 zzCFK#)!XECalApBsfzLPiU$ZTefjuVmyUl!gWKcdf?QvvGx7|d5##t5zbd`Dm3ckD zW%hkVd68yq=Z_6(wrK)SC0}kdXZI~AJ$T!W0)9+7=B8YPwfgR(c6*rlZe`1F5wD6m z7=_L|Fm);P<}Rq;u+eMnuq5f|Q235}E8ZqGgiwfjiQ#2_e*OtsQRL7so!Q_>2vBxj6Gp{Olu2K4pZA ze&|EJi0f0xd18_N8_xLl!3RVfWH0m^oVQLk<_B(-R)pEb=S?S0_0+37a66YOUvTQH z1v&%Rr|juDJN&$VqU@-LwoTy1I^~xm>H<`+vODyXU4i#AQt`!X(_~1CftL*;#;sV~ zW4Q<@sSvXHD_4Ri2=UGno}3R;0HB8XZs|O!4dGDVKskb)6|1WIuBwOy2|uLzi!X+9 zLsN|~7`6#g_E2jjAtlOkXGaA7hg=Kk6eSD^bc z_vP;^SsHv+?Il~6d@+K#&kF+8bun}if^fT>YNr_#X%@#kIMJFj6zZfmpg!p(#d0#S zHvPcW2c4 zD$hJIc$yU&ew!Sj@{WVc6`{DZfWfLC8Tt>f!f!G5N#cj$D=N&o89V?2M4_gwiwqi> zQBQzp?lu~NB3EmQFtrE%ZEHZ3ln0_ zin0D#D3~#{R;x@%OE(M?Ei4m-2(U!4(KfcUOv|gn4xmm~YcW@NAaT`%_PGw$ppD=) z)9Y7E>F0CLTP0=0#RqCmmMNG8Rh(c1k10rL1T17fdmifhWC=V%3f?24;2a#(gt(Vj zOFn}_^}tB^JvP}lZp?z5BE&R9g^l3B(GRp;T)SPwE~J0KdC3G)EZrJ>7=Z2QS108ubo#8aD z2GZxmiv8=+BM*^2*1HOA@Yb}f({ukHZQmVE_51&C&txZibYvtWlo1D+iJ~NBBzu#+ zj#(lcBS|tcLW)B6j7av#I@x<~4$k3sAFB8J-DmthpYNx)KaMNcxw@{`^L5|P`*}Z} zkH_Pwvg%$@3^+`=7Bc!54pEKJqt&8ZxW3w#6CDM$0Ek9aJGg^fAvvTPjnMy@YLsx7 zCruzkIrXl{K#BRrn^ovO(#TthlFRc@YsujUZYmIWHg`s1c6BPl_!8w~=ouww=i)!4 zg=14HJewaQL?nqQ4%U74+rUz4baZ|&aR~$s@b`G+Wi8WCghWqtO$oVElr%s-Bjcl2|KO}48dwIoP@!@wk2XfzZjSs%6#GNQN zxQ-3ec_|O6DlpPB>bf6Ayc_dQ}MVV{qdiDNvDcJRl@_G}y z;G@xFbvvS$^y0vCzzL!#Zos5waRW$CB-=*^L&>G_np4`#m3vE*diieLb7YW}`FHxOaruldtlGBT2 zmw()gD7cQ|=<+ziK~1wFdl}94XAI$Z#1r4Hqg0K_*iq-;X*kg0Nw_T}$bOoX>I4|M zR;GVN58i=g5Z}m7uxF6d1i?x937y;!e8IJl+Gp=DJ0`@=R^%1*#foR(Y|gBtJg{p5 zrHeXw;XK%|?JkCDRp*!Y|0Q{(A7@U zz`$Cc*(x_WRVAX$qcx#Ke}**Hv#WNqB?Jpp{)SK=y&2c1zN`al4TU>&2w9&SE#N6Mm>rmqD6* z;Z>!dU!mXS51TxOe^zf6)wpDqJ=N+P0___Uw3XTV(aM)Y5u?!rl; ztiVXA=|ji~Gg1n*Z8_iFnga=k%Lne5QxC9i&}PsscDyb|e&3^UVv%-wPtbi=c?Ff8 zUNqRbsnRci7P4T|sB@*kR*o1^XUG>TAVak9E;`SZPLbc;ddYnM=^;Vr#bjObZMr!>#iG*=L&_TA|zs!R_kW8>Kj82NeP>S{|??ax=`%t!S> zcJ=-o*pXTJbcDD#t0{~&Mm-FI-e@0A_3!kqDUdzR}mz7v^2{_ z8{_iiTJO9bHaL7otzZd2+I42o*^<|`6Pcf=ygDz6m=`_!xsEuBN14W1f_cuROgM>q z?r6qN9P0Ar6rx5lh-d_xteQB@14T3oKSfKP)|a`D?Ye9O-3Z$oIrgT(@RT9Y=PJ3f zkqj;h3Vr*aUv*z+fl-B(rc5z~a4!OjM0{2i1 z`@b*E_m1;QugA4ftju2Zxm{a$*0~w>uwY(D+6l0A9<_D7&uP-UCcFC88}Adhy4M?= zu|r6UgEj>0C`iV$4PwjxyCVxW%X~Q-9mJtcZ1m`FKt@MC zr}FDWhzM|L8?ot;#UY{!W{1Er8MX(|09Sc{v_PZ*Ek5p(2Rr`ed% z(ex9~n>gg^L`87R9r1Ly#O&#sYij(|Y2LoxN&YNM#nV^GhlgGxJ4_vkD{bYGK83yZiE2dNa3E%p735{_hN&s>3J&qUiTF0mXN=+G;L=`9 zW&Uu>1#l}0by1K6G)$KT$U8nPs9^qxL>0u2b#{OF{0hrAAPoJB}uOEkI1&OpNny%F~M__ zbdjz_ykDosfFB=+Q7yyWeufcGn1ThR( zc^?9_sZpmW>x2Houa2)CTWQ0nExYW{J$4ob@8ubn5p2%sdhpek@pn>S7Gb5lVz$Ol zpOlvle>Y{f)S1)jF*m^9i04ffc%58a8uFa~rzd;kc$){uCtw$x3+}GeTtEn5CzUVd zao#GJ;~OphiVz6m7)Pt}Z7kh7di=yl-CyN^hEI{EA4Ac;f&GUpuycUUvFPOr8Wdi= z6kOg{Muem>oAaN?X+I?_+2rquQPSSGX(D98@DB4X5b9-5F7GcbTP7zUZUq%}wCc)W z_UaE9O->Deu5HomM3%Ph^+n#ywp`6KNw2^_3!B#?#Te?3nhotlZ*S}q81FCJ)s@mA zZ$_et1HVAMfu? zw$uh6qj9KD5aC9JaM3k5{UsgjT`8&fOo!iKIjY}|BC1AIMsSZQrGgs^2;0iB zG- zw+q}*l8XSL^n3){J?5TRnPErL!^#1qAWYm=To$}Q+dIIQ0xtJA#cr?aU~l7VE=&s- zp}gO>@*&rIF~nH8vS3+=9;xJGN(wONEB0%F(L68sa7qW4u5dmU)Rvm|)kfj2Av5qH zA&D2=Q>f{bPrNKt|L!)1p}g2ZCB9W^;xQV4quopKCdR@^DwSr+N_0tNd<- zS-jtR>s(`$(}+gS&Fq*=$>5W26LW*E!(W4sK?JYGb0xLS%h&2JKiKLzy8#qS+bMzCXIeE81P#QfTQ&XCuQreMdm~Igvo{u z)}aTE6$dSLu;~3YfdfsugW070S(7TfT`+{CvAVZB?ksY1jmZD3PN0WEQ&W=!cGvu7 z4#WZr)=Wy}{RTe5>e`$f7A+Y)kq@JamdC2v3|+QAGzi;OcyC7IF@@94je4Q;JOjws zY|>8fKfZJ+BhesZZTIz1>+AK*l_vl$?BtmSkGMszSEE`2IVp9;`$W$&wwp&~qL@i}{ z&Ro-LhD%fh?S(rp_{XAWWe(8E1KVI0@X1e}mtS?|6XFCcgtI6}j^%`(i=f>NcSsm88L!WA0H%20bzTw}< zdE)$W3ZT7o#1S#Hw}EpqJWLjhu!V31W5FguhWpZ~A#-9S6dSf>F5msZdb8$Bp?weK z4QCcjwU#g0U2W7E_d$*Z?Y=crp1G(A8(~l=UJqK{H)Ny4vp5|L8M!)xNeKiY3}at2 zbN+_-(kC6Drk!PGI5=ZRzXUzeeRu|313=bMZZs)gWB(ui=-uH5X&VMgiB8w5J-vh# z?8^0oW%FPcTVaG>)lPg>$+yDQNimkx@e&!IdTR10pFx(EwRzDy^D#7iQ3@)GQDE;= zDR?PS`r;8Ur3pR0glNyA$DbUWS1-4hT;kU&lZkn6K8chSs)y2)rRK|JS zv&xoHL?d{_!^{DJ1WPaEegbM=t)CYHb|b~@xt9ruW*4?b6kK{&dC!lPY+PyOU7HH) z7Ny-O_Bs^~Ye#U@y<`Q=(o!i*jCCJ(nyD5wL_`StHV}pNVav7ttidwf?P34XUGK%MV(O+@DHtXwL1mR zfcqFo31GNQiC-E46@+^%^t+-?XR7xpFkj@Su$f~Yy?6irfY5<*!791o???=Xcd`5= zG+)Wz5dRT;>`XO>@p>}vut|A}E%p|hp4#(nd^TR<;SDnpeyeW?=b{Y0v)mJKm_Lwg zn3v_)B>b7%PE9+Fem)jMd-=$-RDI#7AEAQBWf*l_d>JzOXH4&vE`J6oG<8N8LL%p= zG1Fa9(&XRan-!GO-lymXn7p;*Zg}L4jF4t^b#s;=(z^;y3dV6UwwWLJ6B22o#k<|`Y8Mwx}Uz+bj z-e&@wW885a@@`I_>=!RZvlm9>+4Y+L~bOvT^qiC3(n03B4%Loy(}NcdJIw~McU&rXvBg;V7J z`c%ILrE*5b-^{{7h08-T>xnv^p{Ij`hH5!)oO3&Y{n#Vtzih-|U4vKAH)Rp-lke1W zS$?rj#5gAcCA^L3&5SFaADk`CwC^3AHP262H%8MDV^)NKsdoq6jpo}&Pf50tW?Wfh z6brh?vx~=`3WP9Y`Hd{2T9;>h1%LnBpZ_|=+&UGa+2Mz zCnd?|Ok;Vf+%C8PN7;V;T#K45u^zTQ7NvL-WuGey$}~H@r={TFn``v;rfNX0jiz0vObVflCL#1>B$iwrS9Ify3+mZJc~)N=b&5Emv8L6F zinvQNef(xKZ?w}1CDpuxf=YZUwbHfWo=%l|8QNRVH{7ZeN>^51{b(NZbgAUZwJdyM z=1>{CaE`Py->}I6b{ck9TLy{3$!8Ln`YJs^e%Pm8krD;oDlnT6=>8Qs0)lY|CCv?%2Y?yn(?= zP+voi6|%z%2PFFay=NAA#H~=|z;bu3^)*oRnIerMfV+Z22_;SY1C=RHNf*ol1nY1o zr4Jh*ZZJ3u)LOB+e@mPlxI*&!`DjV-{p-jTA#M>&a*TzMC|OotZyGEGMyFzL3WM-z zA%=<6^ZENT@Cl4KJrmRJ3b@|x8ZZ(b`_KFaNfPX`WilgEI|uH4KmNM>7aiUl?z(!e zB(MAKN|aF$(3B^EwhdQ000Vaf07k(LdjExfsX0)8(nKmsZj~qlYFwnCCm<#9FTd#| z7T)we3*0evZSnA(41Y;Tx;XMY>15h~iv4>&!Yl%EjX-E3zG3smkW7LZm@8Q~vrAhD z0Oy2zOrD~M5csRIq{>QL*6t0WcxknlG;Q}yc+;kM=29gMQ7v8}_eqO*0F7z)Ll_wB zQM~5RaQW&YYu3(~EgcqImYHYcjQCuPW4GN6^IRYrGGSDRUEZGe*yj{o{^Rson>ftI z--WUp^WRDyIhsnPK9&OV9|#?+m9M3%bk{l=xxTxGN>`VvQlH%X3hIXk8839kd{CC?1SF@t0lIBnucCAK+kFOggiN~>;CF@eY_&83JDa6M*?{U#OGa0Fq<{`;oc1ZBV_i%Hl%pp4wa$!Xs^4P7sZ|G#SBTRNFh-_VP~+_ zd*Nx;hxa3>nX5Fwo$&SWJLm2%T{jIMoF}Cp$TFQxj_X}4&Ns<;-T{YVbm{k=1J?K4 zkP2iKE!a}W#^|GSh+A`Sq+S{95RIX%S=bcG_HSI;k!`QwE ztf>N*37_7i^ovV)4sILu50doUDxpOydF!cA4dmcAs!dg^%davcby5^PBIg*hLEWmE zo2R&U*)IQ`+^6n~TG|dlO(}UkK@yh>dt&cRXZxrF7kw1K)AF|ny{Mfl2v$e!`dOVT zba#4fDx!$)q;LjDtgBP4%+Pa%01OAkj*FjkwQ!*HA^E$m*BwCj&$%s|2!#JG)|bfF z4nf)$r8W%d&>;153>T)t_+DtJe`!6uYGElxc0N4Q_T)Ex)ECtB3gH=I9fs1+IQ+^| z0m3GMNsj6fwd}J~QSt}`!h=zTqlXn#Rqmk#JDFr#+6McH`qX%vL`$nWU(OCYV}=}6 z720o?>~}9NOG0<49|*u*dnhp@xln#SD{9@F40S3lE2gfDr>TNz1Gq z&;;gYCd^a|VDm8KwXWtd9(G|P)$F>r)V``fMcS|zrPjG&#Cugcvv(UV1Wk0Gj^k7h zAE1YO{gShP*M2@s4X?sLR;)%ZxdQt`u&k~g-cP4m;+^)kY|zhl!K85Sc&U(^YvcFU z_}PY(&Y3$pu3uhjzys2T7BFKeX^R#tlK8^?AcYSQbtdM^5<)}xI6UKl#h;a^Ar((wl$yW3NIof^ss9I#O&1nMF z2jjaQq-ZD2+1G&U7N8jpc|25V8wtvSdbmutGV4tUzW!@bm;i?9Jl-JmSs|oRxXhSy z@%r!j=u*6vGJ{d2&2%O0i=Y8UeGa{wdmw?HvfDrHy_KKzRiRkOm1b-o!#ndqHTYZ^ zM%G`L5ja>An8l#2Q(xpMqXZot9VK{h*=oXBA1JS|`PDWuePgcMQ^s;A!`ofyqX+F4 zPw)I*aN#a3=` zqLFM~Yj>(P?`&9AZCMRyuh4sOp}q8K-~%hE7d}mj-!5L=E?DUt?y4Uf{0v_TT-Bbk zZLe7NiG3Q=+S$S?58L1h6@V|7*5t-2(R_wPzO~heir6rw4AB8X?QzxvWS%1B7!m)5 zZvU-R)WDj_su`9jtXM|GsXget^`%%~iU3zy0eoAQns^T(D=)us!q6v3Y$GePMlZXD zq2)z4$szUPgm)M!%kQZH4*!=h3*6qKWcdy=>2>^1+cOy((?vdhkfocxeu39*yFF0hzrB#r3hTz+o3%9Qnn7qHZjZGD@MCk)$z417)vgNPtvPWeR=#-HFP*@)JHLJ~owB)V-R%MLQCq z^JgJZ$o2;3r@8Cx2_me!D(WY^fzY%EkC-lK>B#Q6C8Zs(Bp&LFA*d7zxkT#2n#lG? zjV@oQK87@gLe?vo?HUlPE)PEhV1aG6Lhj5q!~1)eCa6)zFVm2bx^qzw;zc0OoGXmv zK8Fy$HB!ZWSYAE6gpmUkW_J%NceqF^c;l7t(2i}5jWN9~N8w%`uE@d}rIpCEX?NMN zSd6oLc$@dGeo~bJBdNf3QPEg2pu&9VEnK9Ch#`}hqe;s5yw=vKe^zyGQ}<75xW~AK z5K5{=&@tN`7?|HIn6MJ4?!B$N@m@M=^~KC6q#d&JCaK#vGLFq1xx${1m^deftB_O_ zucfy^Pen{i0~?y}&ZT*9{yidR)`bTCLmbzEA5hn;3mv4bCur9X7UI{9>OeJ?0XAjIi9n^3cGQm)rcvz_rIN z#nP5f({OTV(k$y)Y4&{ck)jB=iN6|~`(y->v7I%Un|MlH3kJE^4qJ_Gw*Kn@SftYz zDJBG#$k$wTQS-(6Kx23wjBVAuv`Qqj)HC~?Oj$5$td`MLvNj_yk6Ua+Z6h{)y5+)V z^fSI)poyFXD$VxBNF_K+M@ub)1A&Ghm6c!1`@3SyBO-GL$S3Z z<-V_7T9t9thU*JVsKK!I@^}LOD0!Ll@fBAJA`JQdJL?K;ws{Px zF}#o$ik2_FPFS5FVQSFnS28CKt*8}IY2<)ygi=F*{%HA)2kcVI8E}6!iZ{uA@)gLr zm>4>{FZr2AgXZ|rpb;1zd8L?yMCXU+7@W2#%mLr)@EmcI)L3N0LPbM&s6prDH-+=? zrA+MuZC%R2uE9Yz?9`V7RMNrv1FUe`hESvFkLk#cP#a~Ma>YTMg>iv_?92D=48P8G zV($o_cRHDbUJzm^{6a5bJvmztle+kkVe#g<(z^l!8c&LfomQVwMBJ&oH2HyM@kH-N z0!>*MA8l`<)a56YXx!Hs(?@CH&>40Y;|$9?V^{{?ehzFTG6)gQ63bdtP2{%)Aa{M) zd>nits>a6*8aAV*5hB%%)atM7qaLviitd@>KNB7%i%FAw4CG2mZ4r-ab_y>##fiXP znKQ=o)kte3{B1aZF|eerRD~Ywv~7}S9;y^cv6;?<(>H_{g|lY`Sn)?)EG8w|GjEWF z*rk5vnKxu4P7##e>o*dy{;5m)d&Xx0-8-53b9*X$Vp_<}6)^#}y{O}f+3tLW#+2Kt zhxq4cME{gx~Eg6K)x|9YC_9*rk}q9t*>^V zu=5WCvDR&Fe3rl3C%wcmhSRb83G0M6!N5c%lh3z^@%}A#>}I+K4cK#_f@s`-=PkaU zDdUeP8Up;zq9ASy46a{N+J!?d0{OQ9soZd-tg2(t#(7AH;&8=I)KC>SueS!b2gabY z#r39?$8*8>`cq@ORmn1~gn5TMU0K{#vRb=pS8I3bLY2yIUW$+RXXw4`x0m!1x&djq zkrm6PoGh6YLy?c-e$*ztb&|Q*=w8{2m-+fy_+=&%vs#&P6~)p12-XD=t-HFvg38s) z-$CV{vmFxcQaLQ|1xCxeSs7nTF>l9&?2!a(W&9&J53fNulozO>qnp57RR|c>b`9z7 z?Y^H!1V#fP>4Cd5s^q!ayi51CETu((QPN}iHU?H=;clJ@$!w>O*3N6L-LnV&IO43I zJus#9smbC+tQ_nV9yRHaFT&{sqrc&U)6rn#Ue5})esJi-aY&R@@z%Y)p$gC29Ka*Y z9CvDJs({6qBFTF}NaFc?lT#;erc9BX5^wcj_S@@{Wpbwf=?JT7MCPOCCuQaEs}ZLh zTs3Zd4^laHeuwppk(|RkFwh5UiqZ__Hvz^qjG9nRH+v}3c`9O?EAyj5(^N%cZ#sUN zktdyBD0p3u%aa*%Z$qAPD=fMJoTv z7m)(H^Q)r)@fYkmf#>>$Gi~*tj5*M&EK|vi5!w{<8!=LOe6t;|Eo^XW*EdLct2;L) z^!$g~NYzx5rA++IWM*_*d%)tW@9sLlI*0AhI;Y0r{!j0?qv)N(ccmS*<@gp%9V5`d zdLgA%X_$6%<5?6y-SkP}N^c$L$be$B0KMFG$Yxk5aTq5sWDREdjPc-7 z-N5cMWu`taZS5IK_-~Dc(V1i{W$wj@WZ`mbOq=G8mc()|b<+Cy0&}6$hC8D6*bKx6zApAn zjdkQEF10ZYdu=R$@v+;YA=c=_%%lsIBtpRe=w(3YtHJs2AN9XmKvZ4_GxXkHuAor0 zP!ukDa2TDSj=a0)IlMO%BMk|}@ZQPC4i`>iZYJA>s||0XFIG$J-mCBJTAl)1Z+J(8@O& zfnxroQrniCmN9v;pOX9*6({rlDbi;tWQCeMP&L?%s>GGKjJkWWo4m1}0IZ}T^@t4@ z|2_8HGG;uOIiuqLmb-u1%r)D=DWp)2*>zx|Hcx`#3$I)t&#F9oauX(iLbM{cgvpr^nTnq&zo{u zG2+@Nq{G>5o_?4<=80t5Pw*{uM3~NJ>8t8(+n$ivMd0TZc(0xNgtt$wYd^ox885)- zmJCV5n8lN!Sz#wff?}U|DPa}bp!xc5U8@57t#21BD1ky|JpMk`-yI%!q8^eGK8~F^ z95{c*D-ev3xupD#-J%ZhrcF1x%|)s{V5VEKUlO=7=ok{yDzjnACR_OgcpT*NM`lgr_@lG3 zA3wbW08#}Q9b>9t&d+93%eM*;?Qc4qpgTNsfT7LCC}K0_Zz}lxl+#AukR-Zts5>C! z{@uCTpn3Nr90SG^ArET{P`A4CU_*SHUDVmI`^<70&B|EDW&aV0JBPU7XjP!spPZ^5 zdEAn*Ko7P%qb7QZaFcKGYhHmt8|TxX=ww((W^g3niWy)iTpJIU8X zsPvHm0xUKmn3Ik~Sa$9EJU?P88gGoCU2j9DspL-S$~tP1Q9DE~{+Z9tLtCZQLvEQ} z#pa2MtpTgu4q>FBi3uvnhZxODz=Utz+(U=|(?mg0bFrA<;s2>5`ej@FQDor_SFs#? zgafsMkKAD|!)HUuC(X|W0&_!H$5KUj70wH>B#$f|`S&<=f9ZHHcc$zO>FWJGP~9+m z_xFIX7JUUA7_$nJgsnNJzPB?)Qk*f%aI4bwwT8`5fwm$IN>L&IIua`0?Ck7<@^U86 zdkP$LUf{;$6lu&vO+~4(b04L#3bg*6gsfi4;}4JEGe7m#mtsz~&cPCsFPS3`)jJRA@eXTzS)Rq4PGRyzZ9Ep!ow?B7u zqxnc=CZ+-}2IYbBabSlsei_IXfCVc@tDERPaL-exd5I+g&@fqZfQFr-tQFh@KFt+j z_YRHoz_c1>ZzUlr1@5^pc}kT3`7QG8_(jwncH{YPk#+D~Y(uXKqD&rtv)=THBI=hc zSQKdukLmveLCCUe;qm_N(tN)opA-rMs(4NjuZwqDR<}VR=xjm4f~vAvI((CwaDYPxRASuD@O){&WamP2>Daj=*8Sdq^zJ698ICxP1HHH<_`6rwV;ut|rCp@4 z*G`kcD@?yL7V$0Im_oH6-urZWD<-@DwCw?Nnsn#obVmJ4{;k$J_>?##Ep^Elhs???1~_hZPy#Fjoja2-1>c(y0+w z*tDyN8{Rd4)GSS;~ucjGqDyrgDc z7}nWT-oXy$xXADbLcT?|!XJ?w*;8r*p+oi9p-%|G*1`L^FG=*~l=ETO4kuglNND&i{WL65 zHQkFNi6XZWpPLZgxLcOxKfymZoYPs$jQ80cOx)74f1wMeEm!G-Y0F1jPzbXY%xVBGrFfM`?*8F_{VmSfr#tC0LY3=Fi!3L9&?vzcf63pejlf*caNojCui z7CQ4Jm-h(kQZI3m5}Y46@lVN9Qe8rl`E3dAXB?Jf7s1aMRwZ5~deLsa+U{hd0p$OP zwEPjHKQ^@g@?q9Og5uA4H*6S5<}XrXQz-o~%V=QZBsoJI{y=uxY`J#2_7=kFnnA`Z zOJM~096l}487EZ?L3A47?12Fkx~(iu%+%bBY2DlWV~WR79T7;_ z7UoUk@ZnMn^{}aVvLP?B=T509k6|-0O|t6f+>Z{bA>_t9g!KQ|ML$=FyV> zVOVtTW90ok@uer%kOxJsre!uv{fu-|XV(bwO{PqH>cY<=Ix4SGZL6iphdlWpFm!Hp zguG6XpK9W?UoI|^gJ_Lv-E`WZDvErNUsJ76UM0=zm>2SO_WTW3t+G4L(l-+%zOn6J z*0}wtK!nu7LhEr}eqwaAi%Q?7#f`28-{-^mr93z1w73*0RU70eAFT@- z5ugpFd2wdNi<2roap!rI_RR&GWpgD)cL&sN7geEK`uh6Bgbz(`v~|P>LDLKh#p9(r)x@!z4D($ zlMti{R!u0bzpr?^WeC-yiJ#T6n2a?RmJ+b)A~!KIQM5dhzl8LLiHe^2I!T}PhX0F; zyV~jgB|AJkXQ?(^O^ttfp?*oD8WcC>AQh~7au+VEwpAYNdkWlR(|xxQ zx-2f6EPE1iTNcY4N3NHYo|U^)|y}}9TRMj>L*rN++=+tS-M@~Hv zA<`Ob#X{jTW>CLN4XmHVreY6dzij^LVVUOXyV*s~pFe-Rzp!B$JSGlKY@RVry(}Bs z8Flh2iLPGX++jSuP9g_|h#<5x<(u4A6=xH5-s8^G$FyHK-cfH+6{%Wan%L|P6>(JM z9~N(mQ^+!T;iz#dQc;?dv0tH~>6De-VxG(36K`at-U*cllyx+f%nKCtMW?d7-Oz@o zX3^~@21XHMm0>E2wetoi@bVS8@AZ)8-=zpyVeL~-v>ETeooF-JubFt!w;jhUw(X03 z_{GjAU+<3_w^3aT(+FIlCNm9dPX&*R-S9|i!eYfzM(1Q?W)iv%kjlq=cA)S$N(xul zHSlixkJfg>heXgpAYX&~plT17cl@<(&%09G_IMOmZix6fxKLxl!L;Yv6&as@-Lt{_Ho6 z>h5YTXJ#Wm6uI=Tm-6hbc$e`-k(}~ULfTdr8TJaJmw2KEf_kg?oWM&XPDPAgy$TzB zKawLU>b@PiJiIuO+pOM*iX}JR8uiwROPZSqI!WjGG*Kv(dx5Zy$>nSpih@X*m+Jj| z+|;RKS=VU5>&@Sq%}DadIBT3hDI<}i3;om6mas5YfW_KHu(0<7mZX1;fDeyiSC{$FE;&_;Vjw-r!s!7czkge z^)PyfQ-Bo4G|L%bZf{;SSgu<8Je=S`4_0S|p!!xtAcyHqb}S2hqSp7=1Qxftni=HS zI?vsf#+yD3+ut!0I(h72d^O+$DlM0^>+J8s!?BTPio^6=LcADRZ7uWya+x#&P>6+34OzEybkHb|Tzxcwtlv0oDzz6e_} zvAB-;ORT~THbcc`a0jMSCfY66Xx>e36XYQEONx&vmk*Fr>foOClCDW@Xi0=2LE9U} z$A-tWYiMXVifb6O-?1+EkzySG*)#c4JT)_F1)H|~q><{of+uZp#Jmmwt26X41=+xd zJ?}CHh2PcWc9N&+x`p%Plhp$GnBhUzGR7Ae#Nby8-y_5URmkxqfd;P*Di!46r zC+7RIXV0`DXqTB-%f@SO>$^NYvo^L`nq=WHz$=OP_!+#nH+mOLSS#&f6*LX;4Dn?j zU?Blp^aB5zK=9u3^Yf*Z&)LX5!o10YJh#2Ax2TP-t3zfo6MYE8`WREq%j^=Ze!Dk& z1q8vTr^w%oJWKAt3q8#(Vy^wz$gHiI_nv50`z1lEM9Q(_M!1WtQdjLQFfwkLx! z_{K4kPcOyxi1)b}juF(Vja>EFjYa`!D@aD?)tgyUuXU3<$Wf&zIivY*2@e~bq$rN- z7kx0+pT`$SeYVS7#H*a8)6~b5b;}BBO{a< zlh1gBB4<=tCUhWr`N$>A|5{y+ z8ADy1ju5D?^tm~(3J8J}uV6D^c{syL1I$Z4JfKff^rgSxxeM?j*vc50+;Q0o$`B{| zxGi`hd}J$k) zZrW1aoQD0pr(fjJDZ!6KW5hchapz4BhNK6I(Cwf3zraM#w%z9Je@mAhXYf?b#V%wb z$u?%PSmQ~?*|FS-gxYdmrJMzg{JC(_CEfmX(qD71JZXKtU{f0=39+7!8Y1V2EDUx! zT+9#nrLJQK^j#!^4rz`T>t@3dF}IRP_|lJ87ri&#H(_g+i<1^sU? z1&$v-UM?71oa(*-f0eq!i&aA;(=lm+UQqi>HL(t6?deGGEeKwi z+|_Eto5JVa-8=c3Wb;o4F}AkGxEJct|59Si6k)HBsr*PnUfTsym1@L?XACb5yEU7x zpw-O)9i;#%Tr#YRe2vK5<19_l32$@mPgv=Tu!iPU5NzHQQVQ^hCK!NvNH-G_$=Ex& z>)hfmxbX7x-0Z!hf#mwe^c<(E7#IJ@#+X288J5sH1}BtAq6oKK9e( zlg|{!nFCxu5)1CRc{-bpRfh(H(uk`i%F%`NemCEj-GTlqBrQIr6-!LxQC{ACPr3>n zsa$#{KiR5z`3^snTwY6DyrI-HG+?s${Xn^~axJjorQpXRwvhM}hZVy>_1c|hc6x65 zI+QG!(}g1B*8TL4_&CH(V?--guFaTNPjeGdsNFU9mk*c`UmH!^dhnGK{&?UF|2rP!QQZnK!eOi~QR4>E_joccfNdq_Gr!ZWtBDY|t;KX`D~- z(ohPYVz86L&B?on6EWpUrc{&rgilIvuV&#=!|A%+FE5zB=CyX5{o?0n@A~D8rokPG z7Q2bq^r*yWOH=)=^Y_=j!t@fQbH1z(l8N{8s-DW{o{X_*JS!Cyw$S;xKdG00Eo*+h zR&8hZZhrRAxQD*JSjK^|mDA#)yPlnoK^+S_;E7SXUgW!$O9H98aJ_@xLHy$IvKUJL z7}&!>F7mEHp^1b{ASHZQrCrm%aZDrRU+v2%~$i9L6iMibz89&`-mbtN#X3oGMEham>o3-x$uJm zpN)$aV^j(OTKNlC9wKzo&l-6TBRZuzFmSE z5jU$1#kg3sh&RTsrRhc4Odp$`IxRU(nq|@0q8=WKc3eUiI< z+vY^zu=BA9{TCkgHoXljHKAgG8@Ma}{bMNxysuKoL2*_wvW{|Bf^fW*qx?u=gtxZW ze-(vVZ@VXW^4JBxDnOgR4;VOy$-%njO&KMbX$uvv%VMXW50Nw8T^Mbzm)=8@t$_ZZ zaGgi59eZ3un(hzqHENeRgL3P0Y11j6$qr_L>Xl_swkNqRHD%|+`djiFv>IEIg2g)4 zt-4&5>i5fCEcW#|=b5~MTFMRN(l!&{<$v|KnP?j`QJ_Vyv!~zoSh{*A1v(S|uIl5u zq0ev{+Qv&C9r!T&gaq<9RwcccQq(u{h9!fx<@$FK8?cXq?5Wd1VX{j>Y^^A)6vPMW zI`I!tYc+|)SY%cs(^-42CYEbCuv0Ty{T0aX`5ff?l;~fi4nEB^ zUY2>Qt^@{_SLMI~@SB90(x$XF9aL`kjPJbkm)-%iP6H8%wuGT)^s(K_jEz@Ma zLxDL#oSNmVjZeIYj*qOpT`yj#Wf+u!>I{uYN)(TO8*sgCy|%HfS?bA69FhKxwf{mZk=qjZ=+=^38l`ErYqCngptl z>D?04ibW563K45;SR!8C11qvgqGBR`$?zgZX@fS6rv(EW`F2kna|qkyIq*1WLsIT( zR78~I%_}WB6DQi<@$vAOi%oQ3O5jPG-qFWZv!eGBIB7_b_>`rgk~%g)>UyvnN=@}9Et8CsX~6{oiF*p5wv=2qE#**`Cxn3l98+PenPe98Sn=SEX{5DeWeUAnRGHCsF3 zqyq0kbu$4+%l$m_%5d@-XdV09wT=9ulL|Ml(t*5hy;Iq<;3ab%i^MEJm=|?uD%;u)VzFI^?FoX+>=Q{*R%pL(fc57k5O+I{6+G3 zwA*fLS1dR=&#VoUOoA)bv~va8n{qGhV{LL7E3m-WJt=tC((=pnYUOtRRS)Rs_C3s< zBee(G%v7%EvFA?K#6u-(dxxaf2$@;z2!icJO|(-HnkBClLdDwv*U1 zlTG>QCic)hVjQ`#zJ!Lkl`P!8T$DSATK>^70JoBQ@#EM$(Ok;dakqzvjfg=o-&9%n z8hlFlQLmquSakgYVLoQ9eMb_y#F2kR626L~{sodSy+ZvbB;hLW#g(Bo*nHX5=iAWT zC0zfn!s?&sgD7P`FPkNSthM~D;IL^*oRN=0C6NcU|A>^Lc;1*L5AX zZkz77!P(>32HeFiSQl@bk@w^JvpF?a{i6ESl@|x$gDR=XFUMHF(1KuTyBf(uh=(bR zYa*_TKJPF+k|*KGD;?hz1TZEfxsmX;oAT63U*I@C=PmeF2{9YRm)6WGC&Sx&_Y?>f zg8g@1UMztb#diZ09+D1QDR#eYp8hy4Tv@+Y8(uTNl|{-#CYz#=+>z||^LHwe%*o?< zqginC7J2<%Y((H#={SSGMSgriEA6`cy4*CcRu2rz6`s*|fUmd>qMu|>QvC33s#yC+ zJuKLP|8WFZln74H*$AcxfzqPT?9?K@uEYE;{S9>auL{HTP(3bu(#?ztQ;Eu8*B$ui zy+-u;EV`>jHY}dNKxBOG&KC0F&W9M@3`fGh$tP&o^b2jaFxzE7KPhhlkM{0b9{1e? z-^UQ?Z2!rbo=w1*p1pbV2GjYy4lPyCfQO|pyfTs*%$%;RZ+R7)jiMHMnrZ-Pu-*1$ zxj|-7_mO29CgCt|9(Ad+^{CHwZ-4{eVwu>u^{SF_J!LBScEw%f91MU8c4-g)fYS(v4RnfI3wC8e|M)H)Hc-kgO!I_jSM-=q z;1A2L0yC_+zUV8|-M~hUx}b?89Qgs4rnNF`3zo}&_@b6{XwEfz{>@POdyzqcwiq<& z>p#f_*yeD{;J?|$-{$B?&Cv*ZQQMM>5OX7+KJ~9((BCBikJpuAw~wM-`md*HH%rU# z+Fmod&5pECpETQR(c58}*M0^Ts#mW@GgVd9IlOVXkRntgHz}W!-6(l+sV87_EtGe1=&ujSeGnDx2A^5^-g&tyY9B*_($B@%TO3d#t>vU}{Y72Tw!(r&XH z56J@yHJ0G$H2cCl0}pT#M?kjndW=Sav8WoS%>$JnpsY9*v{*@*T?czYs60}=+G=Dn z28^TVtL-_WC3q`2rp`?xnV{!Jdfw#(1nmtM8kZ9~#*5+CAS0>G$wz)B3D@G?8jM*I zJn60+zbTYIDRXDU&btES<4Glt^Sl}1mAa0X!x=)Ul*4@_Lurra82Ss|t3NK=a&Jq& z1M%t7P8qtsgB_5M`!vLOp!7YW>==I{HMEjyj(mmKFF_)D6ndF6dM;~h)cWs~V(Z#U zRA)bLCfs4-2f-p}yvA3*l^qIIlA}NFi--Z&k$>6U9b>!<3KagzteP|PuP@@ea7a%>9Fmw-uO~9ddR3dV2i7!7fNwTwbM%j(7+Zq6|<)n9(%11J-vf0MY@l%(k&CMun z!TpBAbtG4UbqMd#&i^Bhs;8^gHkCDiIqb=1G#?`S5SAxEZ_oZOsMc6kRDg~C3p*Ri zB;`|ccwTZws+P5J!nF#wTipyDjM%0PyrRBRANFLlu1*JN$F;4g6_C7CcEANIdR^hZ z!N}xGkSHpw*xfK)?FOA?!WTXN>b;u3Hc+Vd)~MLr>`C}Tv)Mx9>$b{^KSYww!GYMC zuf@#X_;JG{24;Y>SbS7ze>b2t2J2l_(O||G)8uu$H2TnI!#~-FSUR#(C}sFIc*M2w znyn!NW#61rn0qcReenh{SC;-n5`08z?Go+0#N)w{UpPafLIyyQV2I?=YFq9|W3Ir! zAi3?CrE(=2#Xg$PoOVV-%3=QrQf(kzt-!izRAtCCDky>_3X0t)99TX*3l5(VmU^LX z2ki7b74({ui$ZL^=$1ei7Nu7!=#~t5K!-j}=e;9(p#d5O$+P8t80CGf_gMYF?lV)| zYqft-9Ju653$x&vED7}2GM_5_E({uUXD%$4k;J;|21RwoXL-sKUUd$6Y3e`Kv`42N zrp$nTZDKm;7?$n2+GzQqQgN@&D5dBIWq_iQdhLzT$`A60KgrcCb{<4@k!DXo|Ft%0 zXV0jCThG{YK2!gb3CgaPxA28XJoqHi$mi5y%)fN>z!W$Do({&Ks=H@qo^ixMXkNEG zqlcW6p&^s!Ie0a?dl9w7AyE9K_G3oxK=yc#x^y+oyso~JK-*F5ry=UCEa4m&XdGnu z;Vq3DY@rs7ehcZ+p~q5u?4e|yiM}8KXW09XrFJDrq<`Y|z3P#B)M4zXCYM~C8N`XE z$%aq2{KlPYpQRU0b9&B7AUlyS%l;k(O|fofiqrBkq!ioxj)-+FnIOqNKzedGm~5%` zQR1osT5cU}%rhMC_OaycJ)+|E4-)2y=BcASlHJ1frsj{2wEViVo<3Tg6-4%ldlMY| zTMP9J%n)+UY+wsh&&L!>!+R2StwN=t+`AXg>$Qnv{Whjm(R*yI;MwRD!4P-lgMyv> zwOX;ujX8!ZeCB@7Pt(8gg=)u4s`sPAlpdQP{&3ob^@F0L@)sab-YTy4rWD>02Q&aWFq7)RM7iUcf5FI#^gWGW`<3 zh3wfD02s8f`_j_O$W^}qfCJew-ERFQ^5{Cz=+YkCS{%=a`yh&u+`83Ch}M0YU2|n> zN!hC-T;lax9e;m|xjpLAYZz_lW(cea4Wdmmh6rj)Ie=T#ySJ%2@>4>w+Ta0K)v@6- z?MOycuRtPnTAq8A%Z_FdB_s)G>k~x8Lg#3M9YU@T!98uNDX;~u!lu-BZifQk2oM8) zf`{ci=aQlWvUnp@3UE=C>v>jQ7v>^@D8g(=CG)@JVcV+?s&`9p@;`LesOezl1xGSX z7*mN+xIgf2v(=?g&|+>5@)~gSQFV3o4cZfIFJiT$z)I_8ed43XD4lF)pb%Xem>YWi zjT+q{N(EQpBqY5Y@X``Dh=eR}-#)KbZnZO+3(wt~M)0VZ2af`4E0@OPw-2@(WEj&! zQ%xod8kNd611xkR>88-^H^{&DGlHyyrhNu%mua>t*masB{|m zGTnq2lKL&Xa}=JiT4hj_u(nK0wjiIrjX?bxd*MlpL~@QJ`@%cxxWkD+O)?iriTE9ILVF_k0hcF2?rfPr!(|_!3nZ%T*VmCl_nT;tb&R zvlCoocnn=nZYYaR8nR7(%OmAs%G~a~H_QiXdEa@_l>9s2=0g$1Daj&R!N-q^);x)w zE+2rv7zodH(V6O582w<2Y{$E{?oRr@!m(QTpovJfA1eUD$*bDd_&I=1rgtaAeg7-2 zk`B#dsNu9v_`7avs?cq}hn^*>+)&0Ufevggdr)zD;Z_mDZX;1h?qT3#K+5bsNL`R2b zv>uUdedN$B4~<76tmW}PXiid@*GlPXT#3TCA&$?R|Ih4EAHZ3+(!#-Xgrg1M_!2s- zy*2DN1A~L~$mDOf==%((dI2aph=xCkDR>+*n`x@EXVnJ^iIUwQ&G{j{u3bUwlJHuE zcfKg!RM@(YE@qY5-`zx(FJdZAfKwqyK;XgHc(|^6ay^^V(9k-XOTFj3+H@#O)FPZy z!946aE;g^4NHA~(NCW`Aeqew4-vA#J4B5{crR-v?_GqR@b->vnGC1`ai|Ncy6D9}c zITG;?d&1mj;ckm_75B659L`AVOSi-_XQ@w!E!?lkc&tQ(t-GYmm(P?VlZU*9<$LYB zBzqrZ9@R4bLTMin~!#lVpPOHFUu)wHJ|royu`qfv$ryjK+OH$$V>Q*2r38V2g25e@es|B z(Cf`-;nTp2(Lo!0XE36jH?2ZhOv*zs7o494jw!d%NFy_reC1!DBUIXFq^&w$(MFp{ zU+q;hH66}dEg{Yqn4b^ZM_}+5d>;`Kwyok2=;Kr|PAApThW=E)&zlIR8@n zyhF~$UsY_VCUA5@`CF@mG|(zxh7IZKb(^A#01r>R`nctgz0EV>wGP@VkoA#)d%y4f z2PENX>ERZ5*w5NKx_Rn|1AloL?IImlk}dH)Yb9C_|7Ww;NzMMnW19Jj+(;-wx00s2 z!Xs9-ev)E;RJeN$2wLH1KaN~DO3 z*vtdt%%JcJLJ9M6$*E^LEBZEs1zf;s6;>YZM1xBTvBQ%m#oH6hV+29q1jZcp*yV6# zwCw1!Ptbg>^5R8ypKpE~qDAA!g|ryy3z`K;_S72%?C{Jzs|$Ba`M#4OD&v?lWhMfN z+28g=`+Uz02JqH0jp$)n^Lo%3;jbWj@cuwRCXFY^`7!nDzC-z$nC=M?Jn$G<*_GY4 zx#g_~MkXA#^$o(kvyWD9L^sXw>}R^i>BhHvq$gD^MOVz!R{!cpnUg3O`%$tRiM*rU zIWp_bO$Q98WqyJjf3Ic|fE7D|`;pc)1tJ(zviFd=Ls-RD*Z>1C3Q)h}ZaTy*@@)OD z+){oMtFeYa*auM}hf634o`VKivHQ0MgwTL)rlv+Ns2$Mr+_>b*1BYEK_$j@6^B;o> z?BHkLDg{9z*uc9nLSh+-L^{ek=z`u&l5t3#6R>ZcrTu|2)Cuy-<{dA&?7yU#HMuXt z<8OD1>*kjWoFnqM+~?qx)SZ;yV<(bR?~s0;*Hi9On0NKqG}TLRCfS_z$oJFMI%0Fi zTcV$T{{8@9(u8nAcp;i*2DD1b<4#?M4*9HyTmhaNwXCp=Uo!=UeRL?~EFhhdoxU{I@K(qg4^0?~nDQ`^2{=MEvVv?oT```C|KDZ6gtR&SplU zHY!-3^XA!qN?W-yKQ8kf2yh)=Z9A@Gcu>CqttM8tWslkk#BR{YHT{w4ePq!=^~;xc zXn*{CyOJKq32>lOIkLO%xJNq^qQo0}fW+cEn_)Fz;FXbe2%WR(8-%0SB9B5k!$YDr z@@MfRZ`&AMwsR)0aY;rnfyut0)95w88g1+U-g<cOl2atS;yu|FgT&j{*cVGdY`i zETuCDhgin3{FY{$k8@$0Z!=61YIiDUJ|K!EerGI>rFdPz#>;E7uXr5i@0T@*t+mz* z$rUEA8jsvBY7nk}QdtQn4XQyp#XI%Jqu1)z%89ZW+5(DzRcBFa1^n*Zl=9*3fG&*R znOQYA_CTF`#6w235}f!o5>v4*#3qf4OE(eQ*FZykTZnt41Z@q|NP!6c_mKG=T#ePp z-|UrCzAO#U>V$hh%frKXFb-u;BM{3VUSN&-1j}@NP9(ukSJ;u3n9LsRICqW*8pag+cb5hYwWWaU<;Wgi`udVZk;Z2072ir@+ zFF6Jqix^xHAMiSCy*})Z{ZQNB!^RV81TjwdKYaE-^FhTDKWe+eT-sG1K+ZB_($_W# zjbQzvp<@O7h4w=?T|~#*wsZF27u-F`WG5VTsI7F<-!oDgv{=PNMfZ6vukTM9jAdKj zn>hH}>CT+~=5&Me>6w%cHkvr@YC9w@0@;c(grQejHJ_eS@0J~a>14eqJtYDrtby;u yVPQzpPTXJqmY3Dew7VY*bXm+AHXNOFozV7JYk(6+Ixf=ye>$4_8l`GhVgCc3VlpQH diff --git a/src/main/resources/assets/hbm/textures/models/weapons/maresleg.png b/src/main/resources/assets/hbm/textures/models/weapons/maresleg.png new file mode 100644 index 0000000000000000000000000000000000000000..b520a29b369be3da7cbe58679e0985cf2e99e3b3 GIT binary patch literal 4117 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 literal 0 HcmV?d00001 From 2bc76661b04cd0f12f9d2069f3af2efcee991f07 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 2 Sep 2024 16:44:24 +0200 Subject: [PATCH 04/20] fixes --- changelog | 6 +++++- src/main/java/com/hbm/blocks/network/FluidValve.java | 2 +- .../com/hbm/hazard/type/HazardTypeHydroactive.java | 3 ++- .../com/hbm/render/tileentity/RenderSolarBoiler.java | 2 +- .../hbm/tileentity/network/TileEntityFluidValve.java | 11 ++++++++++- .../hbm/tileentity/network/TileEntityPipeBaseNT.java | 5 ++--- 6 files changed, 21 insertions(+), 8 deletions(-) diff --git a/changelog b/changelog index b675028b3..c337927d4 100644 --- a/changelog +++ b/changelog @@ -9,4 +9,8 @@ ## Fixed * Fixed pumpjack gauges not syncing properly * Fixed some concrete variants not being revertable into uncolored concrete -* Fixed the ore density scanner not using proper translations for the HUD \ No newline at end of file +* Fixed the ore density scanner not using proper translations for the HUD +* Fixed the solar boiler's rays rendering on fast graphics instead of on fancy graphics +* Fixed hydroreactive items not exploding when submerged in water +* Fixed fluid valves visually disconnecting when switching state +* Fixed fluid valves no visually connecting when type is set \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/network/FluidValve.java b/src/main/java/com/hbm/blocks/network/FluidValve.java index 5a0b3d5b3..bfea2582e 100644 --- a/src/main/java/com/hbm/blocks/network/FluidValve.java +++ b/src/main/java/com/hbm/blocks/network/FluidValve.java @@ -54,6 +54,7 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { if(!player.isSneaking()) { int meta = world.getBlockMetadata(x, y, z); + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); if(meta == 0) { world.setBlockMetadataWithNotify(x, y, z, 1, 2); world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); @@ -62,7 +63,6 @@ public class FluidValve extends FluidDuctBase implements ILookOverlay { world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); } - TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); te.updateState(); return true; diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java index f7d6a3c49..a716f925c 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java @@ -6,6 +6,7 @@ import com.hbm.config.RadiationConfig; import com.hbm.hazard.modifier.HazardModifier; import com.hbm.util.I18nUtil; +import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +33,7 @@ public class HazardTypeHydroactive extends HazardTypeBase { if(RadiationConfig.disableHydro) return; - if(item.isWet()) { + if(item.isWet() || item.worldObj.getBlock((int) Math.floor(item.posX), (int) Math.floor(item.posY), (int) Math.floor(item.posZ)).getMaterial() == Material.water) { item.setDead(); item.worldObj.newExplosion(null, item.posX, item.posY + item.height * 0.5, item.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java index 54c3c1ad1..f15a7d778 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSolarBoiler.java @@ -38,7 +38,7 @@ public class RenderSolarBoiler extends TileEntitySpecialRenderer { GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); - if(te instanceof TileEntitySolarBoiler && !Minecraft.getMinecraft().gameSettings.fancyGraphics) { + if(te instanceof TileEntitySolarBoiler && Minecraft.getMinecraft().gameSettings.fancyGraphics) { TileEntitySolarBoiler boiler = (TileEntitySolarBoiler) te; Tessellator tess = Tessellator.instance; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java index 6e1a226dd..7d6ff74d8 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java @@ -1,16 +1,20 @@ package com.hbm.tileentity.network; import api.hbm.fluid.PipeNet; +import net.minecraft.block.Block; +import net.minecraft.world.World; public class TileEntityFluidValve extends TileEntityPipeBaseNT { @Override - public boolean canUpdate() { + public boolean shouldConnect() { return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate(); } public void updateState() { + this.blockMetadata = -1; // delete cache + if(this.getBlockMetadata() == 0 && this.network != null) { this.network.destroy(); this.network = null; @@ -24,4 +28,9 @@ public class TileEntityFluidValve extends TileEntityPipeBaseNT { } } } + + @Override + public boolean shouldRefresh(Block oldBlock, Block newBlock, int oldMeta, int newMeta, World world, int x, int y, int z) { + return oldBlock != newBlock; + } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java index 4db863014..b3004d9b0 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -28,7 +28,7 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor lastType = type; } - if(!worldObj.isRemote && canUpdate()) { + if(!worldObj.isRemote && shouldConnect()) { //we got here either because the net doesn't exist or because it's not valid, so that's safe to assume this.setPipeNet(type, null); @@ -101,8 +101,7 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor /** * Only update until a power net is formed, in >99% of the cases it should be the first tick. Everything else is handled by neighbors and the net itself. */ - @Override - public boolean canUpdate() { + public boolean shouldConnect() { return (this.network == null || !this.network.isValid()) && !this.isInvalid(); } From 13ffc6a66a25eb02bf8ae4e6323fd402e9fd64eb Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 2 Sep 2024 22:39:59 +0200 Subject: [PATCH 05/20] refactor, new keybind system --- changelog | 3 +- .../api/hbm/energymk2/IEnergyProviderMK2.java | 2 +- .../api/hbm/energymk2/IEnergyReceiverMK2.java | 2 +- .../java/api/hbm/fluid/IFluidConnector.java | 2 +- src/main/java/api/hbm/fluid/IFluidUser.java | 2 +- .../java/api/hbm/item/IButtonReceiver.java | 17 -- .../java/api/hbm/item/IClickReceiver.java | 20 -- .../com/hbm/blocks/bomb/BlockCrashedBomb.java | 2 +- .../com/hbm/blocks/bomb/BlockVolcano.java | 2 +- .../com/hbm/blocks/generic/BlockEmitter.java | 4 +- .../com/hbm/blocks/generic/PartEmitter.java | 2 +- .../hbm/blocks/machine/MachineCapacitor.java | 2 +- .../blocks/machine/MachineICFController.java | 2 +- .../blocks/machine/MachinePWRController.java | 2 +- .../hbm/blocks/machine/ZirnoxDestroyed.java | 2 +- .../blocks/machine/pile/BlockGraphite.java | 2 +- .../machine/rbmk/RBMKDebrisBurning.java | 2 +- .../machine/rbmk/RBMKDebrisRadiating.java | 2 +- .../hbm/entity/item/EntityFallingBlockNT.java | 15 +- .../com/hbm/entity/item/EntityFireworks.java | 2 +- .../hbm/entity/item/EntityMagnusCartus.java | 2 +- .../com/hbm/entity/logic/EntityBomber.java | 2 +- .../hbm/entity/logic/EntityDeathBlast.java | 2 +- .../java/com/hbm/entity/logic/EntityEMP.java | 2 +- .../entity/logic/EntityNukeExplosionMK3.java | 2 +- .../entity/missile/EntityMissileShuttle.java | 2 +- .../hbm/entity/mob/EntityCreeperNuclear.java | 2 +- .../hbm/entity/mob/EntityHunterChopper.java | 2 +- .../java/com/hbm/entity/mob/EntityPigeon.java | 2 +- .../com/hbm/entity/mob/EntityTaintCrab.java | 2 +- .../java/com/hbm/entity/mob/EntityUFO.java | 2 +- .../hbm/entity/mob/glyphid/EntityGlyphid.java | 2 +- .../mob/glyphid/EntityGlyphidNuclear.java | 2 +- .../entity/mob/siege/EntitySiegeCraft.java | 2 +- .../entity/projectile/EntityBombletZeta.java | 2 +- .../entity/projectile/EntityBulletBaseNT.java | 2 +- .../com/hbm/entity/projectile/EntityCog.java | 2 +- .../hbm/entity/projectile/EntityRubble.java | 2 +- .../hbm/entity/projectile/EntitySawblade.java | 2 +- .../com/hbm/explosion/ExplosionChaos.java | 24 --- .../com/hbm/explosion/ExplosionLarge.java | 2 +- .../com/hbm/explosion/ExplosionNukeSmall.java | 3 +- .../standard/ExplosionEffectAmat.java | 2 +- .../standard/ExplosionEffectStandard.java | 2 +- .../standard/PlayerProcessorStandard.java | 2 +- .../java/com/hbm/extprop/HbmLivingProps.java | 4 +- .../com/hbm/handler/EntityEffectHandler.java | 4 +- .../java/com/hbm/handler/HbmKeybinds.java | 19 +- .../java/com/hbm/handler/WeaponAbility.java | 2 +- .../handler/guncfg/BulletConfigFactory.java | 2 +- .../hbm/handler/guncfg/Gun12GaugeFactory.java | 2 +- .../handler/guncfg/Gun44MagnumFactory.java | 2 +- .../hbm/handler/guncfg/Gun4GaugeFactory.java | 2 +- .../hbm/handler/guncfg/Gun50BMGFactory.java | 2 +- .../hbm/handler/guncfg/Gun556mmFactory.java | 2 +- .../hbm/handler/guncfg/Gun75BoltFactory.java | 2 +- .../handler/guncfg/GunDetonatorFactory.java | 2 +- .../hbm/handler/guncfg/GunEnergyFactory.java | 4 +- .../hbm/handler/guncfg/GunFatmanFactory.java | 2 +- .../hbm/handler/guncfg/GunGrenadeFactory.java | 2 +- .../com/hbm/handler/guncfg/GunNPCFactory.java | 2 +- .../ChunkRadiationHandlerSimple.java | 2 +- .../java/com/hbm/inventory/gui/GUIAnvil.java | 2 +- .../java/com/hbm/inventory/gui/GUIBarrel.java | 2 +- .../inventory/gui/GUICombustionEngine.java | 2 +- .../com/hbm/inventory/gui/GUICompressor.java | 2 +- .../com/hbm/inventory/gui/GUICoreEmitter.java | 2 +- .../hbm/inventory/gui/GUICoreStabilizer.java | 2 +- .../hbm/inventory/gui/GUICounterTorch.java | 2 +- .../com/hbm/inventory/gui/GUICraneBoxer.java | 2 +- .../hbm/inventory/gui/GUICraneExtractor.java | 2 +- .../hbm/inventory/gui/GUICraneGrabber.java | 2 +- .../com/hbm/inventory/gui/GUICraneRouter.java | 2 +- .../com/hbm/inventory/gui/GUIDroneCrate.java | 2 +- .../inventory/gui/GUIElectrolyserFluid.java | 2 +- .../inventory/gui/GUIElectrolyserMetal.java | 2 +- .../java/com/hbm/inventory/gui/GUIFEL.java | 2 +- .../com/hbm/inventory/gui/GUIForceField.java | 2 +- .../java/com/hbm/inventory/gui/GUIFunnel.java | 2 +- .../java/com/hbm/inventory/gui/GUIHadron.java | 2 +- .../hbm/inventory/gui/GUIHeaterHeatex.java | 2 +- .../java/com/hbm/inventory/gui/GUIITER.java | 2 +- .../hbm/inventory/gui/GUILaunchPadRusted.java | 2 +- .../gui/GUIMachineArcFurnaceLarge.java | 2 +- .../hbm/inventory/gui/GUIMachineBattery.java | 2 +- .../inventory/gui/GUIMachineExcavator.java | 2 +- .../inventory/gui/GUIMachineFluidTank.java | 2 +- .../hbm/inventory/gui/GUIMachineGasFlare.java | 2 +- .../inventory/gui/GUIMachineLaunchTable.java | 2 +- .../gui/GUIMachineMissileAssembly.java | 2 +- .../hbm/inventory/gui/GUIMachineRadarNT.java | 2 +- .../inventory/gui/GUIMachineTurbineGas.java | 2 +- .../inventory/gui/GUIMachineWoodBurner.java | 2 +- .../com/hbm/inventory/gui/GUIMassStorage.java | 2 +- .../com/hbm/inventory/gui/GUIMicrowave.java | 2 +- .../com/hbm/inventory/gui/GUIMiningLaser.java | 2 +- .../java/com/hbm/inventory/gui/GUIMixer.java | 2 +- .../com/hbm/inventory/gui/GUINukeFstbmb.java | 2 +- .../com/hbm/inventory/gui/GUIOilburner.java | 2 +- .../java/com/hbm/inventory/gui/GUIPWR.java | 2 +- .../com/hbm/inventory/gui/GUIRBMKBoiler.java | 2 +- .../com/hbm/inventory/gui/GUIRBMKConsole.java | 2 +- .../com/hbm/inventory/gui/GUIRBMKControl.java | 2 +- .../hbm/inventory/gui/GUIRBMKControlAuto.java | 2 +- .../com/hbm/inventory/gui/GUIRadioRec.java | 2 +- .../hbm/inventory/gui/GUIReactorControl.java | 2 +- .../hbm/inventory/gui/GUIReactorResearch.java | 2 +- .../hbm/inventory/gui/GUIReactorZirnox.java | 2 +- .../java/com/hbm/inventory/gui/GUISILEX.java | 2 +- .../hbm/inventory/gui/GUIScreenBobmazon.java | 2 +- .../inventory/gui/GUIScreenDesignator.java | 2 +- .../com/hbm/inventory/gui/GUIScreenFluid.java | 2 +- .../inventory/gui/GUIScreenRadioTorch.java | 2 +- .../gui/GUIScreenRadioTorchLogic.java | 2 +- .../hbm/inventory/gui/GUIScreenSatCoord.java | 2 +- .../inventory/gui/GUIScreenSatInterface.java | 2 +- .../gui/GUIScreenTemplateFolder.java | 2 +- .../hbm/inventory/gui/GUISoyuzLauncher.java | 2 +- .../com/hbm/inventory/gui/GUITurretArty.java | 2 +- .../com/hbm/inventory/gui/GUITurretBase.java | 4 +- .../hbm/inventory/gui/GUITurretHIMARS.java | 2 +- .../java/com/hbm/inventory/gui/GUIWatz.java | 2 +- .../hbm/inventory/gui/GuiInfoContainer.java | 3 +- .../inventory/gui/GuiScreenRadioTelex.java | 2 +- .../java/com/hbm/items/IKeybindReceiver.java | 11 ++ src/main/java/com/hbm/items/ISyncButtons.java | 11 -- src/main/java/com/hbm/items/ModItems.java | 1 - .../com/hbm/items/armor/ArmorBJJetpack.java | 2 +- .../java/com/hbm/items/armor/ArmorDNT.java | 2 +- .../java/com/hbm/items/armor/ArmorDiesel.java | 2 +- .../com/hbm/items/armor/ItemModKnife.java | 2 +- .../java/com/hbm/items/armor/ItemModLens.java | 2 +- .../com/hbm/items/armor/JetpackBooster.java | 2 +- .../com/hbm/items/armor/JetpackBreak.java | 2 +- .../com/hbm/items/armor/JetpackRegular.java | 2 +- .../hbm/items/armor/JetpackVectorized.java | 2 +- .../java/com/hbm/items/food/ItemLemon.java | 2 +- .../hbm/items/machine/ItemFluidIDMulti.java | 2 +- .../com/hbm/items/special/ItemCigarette.java | 2 +- .../com/hbm/items/tool/ItemBlowtorch.java | 2 +- .../java/com/hbm/items/tool/ItemBoltgun.java | 2 +- .../java/com/hbm/items/tool/ItemChainsaw.java | 2 +- .../hbm/items/tool/ItemLaserDetonator.java | 2 +- .../com/hbm/items/tool/ItemOilDetector.java | 2 +- .../hbm/items/tool/ItemOreDensityScanner.java | 2 +- .../hbm/items/tool/ItemPollutionDetector.java | 2 +- .../com/hbm/items/tool/ItemPowerNetTool.java | 2 +- .../com/hbm/items/tool/ItemSatInterface.java | 2 +- .../com/hbm/items/tool/ItemToolAbility.java | 2 +- .../com/hbm/items/weapon/ItemAmmoArty.java | 2 +- .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 2 +- .../com/hbm/items/weapon/ItemCrucible.java | 2 +- .../com/hbm/items/weapon/ItemCryoCannon.java | 2 +- .../{gununified => }/ItemEnergyGunBase.java | 7 +- .../com/hbm/items/weapon/ItemGunBase.java | 6 +- .../hbm/items/weapon/ItemGunChemthrower.java | 2 +- .../com/hbm/items/weapon/ItemGunGauss.java | 2 +- .../com/hbm/items/weapon/ItemPlasmaSpear.java | 179 ------------------ .../hbm/items/weapon/gununified/GunFrame.java | 59 ------ .../weapon/gununified/GunRealoadable.java | 30 --- .../weapon/gununified/IReloadBehavior.java | 10 - .../weapon/gununified/IStatusBarProvider.java | 13 -- .../gununified/StatusBarDurability.java | 16 -- .../java/com/hbm/main/ModEventHandler.java | 4 +- .../com/hbm/main/ModEventHandlerClient.java | 43 +---- .../java/com/hbm/packet/PacketDispatcher.java | 7 +- .../com/hbm/packet/SyncButtonsPacket.java | 56 ------ .../{ => toclient}/AuxElectricityPacket.java | 2 +- .../packet/{ => toclient}/AuxGaugePacket.java | 2 +- .../{ => toclient}/AuxParticlePacket.java | 2 +- .../{ => toclient}/AuxParticlePacketNT.java | 2 +- .../{ => toclient}/BiomeSyncPacket.java | 2 +- .../hbm/packet/{ => toclient}/BufPacket.java | 2 +- .../ExplosionKnockbackPacket.java | 2 +- ...lientEffectsAndParticleHandlingPacket.java | 2 +- .../packet/{ => toclient}/ExtPropPacket.java | 2 +- .../{ => toclient}/GunAnimationPacket.java | 2 +- .../LoopedEntitySoundPacket.java | 2 +- .../{ => toclient}/LoopedSoundPacket.java | 2 +- .../hbm/packet/{ => toclient}/NBTPacket.java | 3 +- .../{ => toclient}/ParticleBurstPacket.java | 2 +- .../{ => toclient}/PermaSyncPacket.java | 4 +- .../{ => toclient}/PlayerInformPacket.java | 2 +- .../packet/{ => toclient}/SatPanelPacket.java | 2 +- .../{ => toclient}/TEDoorAnimationPacket.java | 2 +- .../hbm/packet/{ => toclient}/TEFFPacket.java | 2 +- .../TEMissileMultipartPacket.java | 2 +- .../packet/{ => toclient}/TESirenPacket.java | 2 +- .../packet/{ => toclient}/TEVaultPacket.java | 2 +- .../{ => toserver}/AnvilCraftPacket.java | 2 +- .../{ => toserver}/AuxButtonPacket.java | 2 +- .../{ => toserver}/GunButtonPacket.java | 2 +- .../{ => toserver}/ItemBobmazonPacket.java | 2 +- .../{ => toserver}/ItemDesignatorPacket.java | 2 +- .../{ => toserver}/ItemFolderPacket.java | 2 +- .../packet/{ => toserver}/KeybindPacket.java | 8 +- .../{ => toserver}/NBTControlPacket.java | 2 +- .../{ => toserver}/NBTItemControlPacket.java | 2 +- .../packet/{ => toserver}/SatCoordPacket.java | 2 +- .../packet/{ => toserver}/SatLaserPacket.java | 2 +- .../hbm/particle/helper/IParticleCreator.java | 2 +- .../item/weapon/ItemRenderWeaponGlass.java | 2 +- .../hbm/tileentity/IBufPacketReceiver.java | 2 +- .../hbm/tileentity/INBTPacketReceiver.java | 2 +- .../hbm/tileentity/TileEntityDoorGeneric.java | 2 +- .../hbm/tileentity/TileEntityMachineBase.java | 6 +- .../hbm/tileentity/TileEntityTickingBase.java | 4 +- .../hbm/tileentity/bomb/TileEntityCharge.java | 2 +- .../bomb/TileEntityCompactLauncher.java | 4 +- .../tileentity/bomb/TileEntityFireworks.java | 2 +- .../bomb/TileEntityLaunchTable.java | 4 +- .../hbm/tileentity/deco/TileEntityGeysir.java | 2 +- .../machine/TileEntityBlastDoor.java | 2 +- .../machine/TileEntityBroadcaster.java | 2 +- .../tileentity/machine/TileEntityChungus.java | 2 +- .../machine/TileEntityCrucible.java | 2 +- .../machine/TileEntityElectrolyser.java | 2 +- .../machine/TileEntityForceField.java | 2 +- .../machine/TileEntityFoundryOutlet.java | 2 +- .../machine/TileEntityFoundrySlagtap.java | 2 +- .../tileentity/machine/TileEntityHadron.java | 2 +- .../machine/TileEntityHadronPower.java | 2 +- .../hbm/tileentity/machine/TileEntityICF.java | 2 +- .../tileentity/machine/TileEntityITER.java | 2 +- .../machine/TileEntityMachineArcFurnace.java | 4 +- .../TileEntityMachineArcFurnaceLarge.java | 2 +- .../machine/TileEntityMachineArcWelder.java | 2 +- .../machine/TileEntityMachineAutosaw.java | 2 +- .../machine/TileEntityMachineDrain.java | 2 +- .../machine/TileEntityMachineGasCent.java | 2 +- .../TileEntityMachineMissileAssembly.java | 2 +- .../machine/TileEntityMachineOreSlopper.java | 2 +- .../machine/TileEntityMachineRTG.java | 2 +- .../machine/TileEntityMachineRadarNT.java | 2 +- .../machine/TileEntityMachineRadarScreen.java | 2 +- .../machine/TileEntityMachineShredder.java | 2 +- .../machine/TileEntityMachineSiren.java | 2 +- .../TileEntityMachineSolderingStation.java | 2 +- .../TileEntityMachineStrandCaster.java | 2 +- .../machine/TileEntityMachineTurbofan.java | 2 +- .../tileentity/machine/TileEntitySawmill.java | 2 +- .../machine/TileEntitySolarBoiler.java | 2 +- .../machine/TileEntityVaultDoor.java | 2 +- .../tileentity/machine/TileEntityWatz.java | 2 +- .../machine/TileEntityZirnoxDestroyed.java | 2 +- .../oil/TileEntityMachineFractionTower.java | 2 +- .../machine/pile/TileEntityPileFuel.java | 2 +- .../machine/rbmk/TileEntityCraneConsole.java | 2 +- .../machine/rbmk/TileEntityRBMKBase.java | 4 +- .../rbmk/TileEntityRBMKSlottedBase.java | 2 +- .../storage/TileEntityFileCabinet.java | 2 +- .../storage/TileEntityMachineFluidTank.java | 2 +- .../network/TileEntityDroneWaypoint.java | 2 +- .../TileEntityRequestNetworkContainer.java | 2 +- .../turret/TileEntityTurretArty.java | 2 +- .../turret/TileEntityTurretBaseNT.java | 2 +- .../turret/TileEntityTurretChekhov.java | 2 +- .../turret/TileEntityTurretFritz.java | 2 +- .../turret/TileEntityTurretHoward.java | 2 +- .../turret/TileEntityTurretHowardDamaged.java | 2 +- .../turret/TileEntityTurretJeremy.java | 2 +- .../turret/TileEntityTurretMaxwell.java | 2 +- .../turret/TileEntityTurretSentry.java | 2 +- .../turret/TileEntityTurretSentryDamaged.java | 2 +- .../turret/TileEntityTurretTauon.java | 2 +- src/main/java/com/hbm/util/ParticleUtil.java | 2 +- src/main/java/com/hbm/world/WorldUtil.java | 3 +- 267 files changed, 317 insertions(+), 762 deletions(-) delete mode 100644 src/main/java/api/hbm/item/IButtonReceiver.java delete mode 100644 src/main/java/api/hbm/item/IClickReceiver.java create mode 100644 src/main/java/com/hbm/items/IKeybindReceiver.java delete mode 100644 src/main/java/com/hbm/items/ISyncButtons.java rename src/main/java/com/hbm/items/weapon/{gununified => }/ItemEnergyGunBase.java (95%) delete mode 100644 src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java delete mode 100644 src/main/java/com/hbm/items/weapon/gununified/GunFrame.java delete mode 100644 src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java delete mode 100644 src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java delete mode 100644 src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java delete mode 100644 src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java delete mode 100644 src/main/java/com/hbm/packet/SyncButtonsPacket.java rename src/main/java/com/hbm/packet/{ => toclient}/AuxElectricityPacket.java (97%) rename src/main/java/com/hbm/packet/{ => toclient}/AuxGaugePacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/AuxParticlePacket.java (97%) rename src/main/java/com/hbm/packet/{ => toclient}/AuxParticlePacketNT.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/BiomeSyncPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/BufPacket.java (97%) rename src/main/java/com/hbm/packet/{ => toclient}/ExplosionKnockbackPacket.java (97%) rename src/main/java/com/hbm/packet/{ => toclient}/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/ExtPropPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/GunAnimationPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/LoopedEntitySoundPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/LoopedSoundPacket.java (99%) rename src/main/java/com/hbm/packet/{ => toclient}/NBTPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/ParticleBurstPacket.java (97%) rename src/main/java/com/hbm/packet/{ => toclient}/PermaSyncPacket.java (94%) rename src/main/java/com/hbm/packet/{ => toclient}/PlayerInformPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/SatPanelPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/TEDoorAnimationPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/TEFFPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/TEMissileMultipartPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/TESirenPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toclient}/TEVaultPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/AnvilCraftPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/AuxButtonPacket.java (99%) rename src/main/java/com/hbm/packet/{ => toserver}/GunButtonPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/ItemBobmazonPacket.java (99%) rename src/main/java/com/hbm/packet/{ => toserver}/ItemDesignatorPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/ItemFolderPacket.java (99%) rename src/main/java/com/hbm/packet/{ => toserver}/KeybindPacket.java (84%) rename src/main/java/com/hbm/packet/{ => toserver}/NBTControlPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/NBTItemControlPacket.java (98%) rename src/main/java/com/hbm/packet/{ => toserver}/SatCoordPacket.java (97%) rename src/main/java/com/hbm/packet/{ => toserver}/SatLaserPacket.java (97%) diff --git a/changelog b/changelog index c337927d4..767fe5efe 100644 --- a/changelog +++ b/changelog @@ -13,4 +13,5 @@ * Fixed the solar boiler's rays rendering on fast graphics instead of on fancy graphics * Fixed hydroreactive items not exploding when submerged in water * Fixed fluid valves visually disconnecting when switching state -* Fixed fluid valves no visually connecting when type is set \ No newline at end of file +* Fixed fluid valves no visually connecting when type is set +* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops \ No newline at end of file diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index c264d0120..6643e3fcd 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -1,7 +1,7 @@ package api.hbm.energymk2; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index 5ec931234..27bcc21f2 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -1,7 +1,7 @@ package api.hbm.energymk2; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index a6db68c2c..e299938c1 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -1,8 +1,8 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.tile.ILoadedTile; diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 4c98dfd14..3f5ab4f95 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -2,8 +2,8 @@ package api.hbm.fluid; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/api/hbm/item/IButtonReceiver.java b/src/main/java/api/hbm/item/IButtonReceiver.java deleted file mode 100644 index db1741b55..000000000 --- a/src/main/java/api/hbm/item/IButtonReceiver.java +++ /dev/null @@ -1,17 +0,0 @@ -package api.hbm.item; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IButtonReceiver { - - /** - * Called in ModEventHandlerClient for any keyboard input related to this item - * @param stack - * @param player - */ - @SideOnly(Side.CLIENT) - public void handleKeyboardInput(ItemStack stack, EntityPlayer player); -} diff --git a/src/main/java/api/hbm/item/IClickReceiver.java b/src/main/java/api/hbm/item/IClickReceiver.java deleted file mode 100644 index fd6830410..000000000 --- a/src/main/java/api/hbm/item/IClickReceiver.java +++ /dev/null @@ -1,20 +0,0 @@ -package api.hbm.item; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IClickReceiver { - - /** - * Called in ModEventHandlerClient for any mouse input related to this item - * @param stack - * @param player - * @param button - * @param state - * @return true if the event should be canceled - */ - @SideOnly(Side.CLIENT) - public boolean handleMouseInput(ItemStack stack, EntityPlayer player, int button, boolean state); -} diff --git a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java index 93683f0d2..f2a3f7783 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockCrashedBomb.java @@ -7,8 +7,8 @@ import com.hbm.config.BombConfig; import com.hbm.entity.logic.EntityBalefire; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.bomb.TileEntityCrashedBomb; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java index f2a8d73d7..8ae9a63a3 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockVolcano.java @@ -9,8 +9,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/blocks/generic/BlockEmitter.java b/src/main/java/com/hbm/blocks/generic/BlockEmitter.java index 4d6b10199..c9b09dae1 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockEmitter.java +++ b/src/main/java/com/hbm/blocks/generic/BlockEmitter.java @@ -4,9 +4,9 @@ import java.awt.Color; import java.util.List; import com.hbm.blocks.ITooltipProvider; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.tileentity.INBTPacketReceiver; import api.hbm.block.IToolable; diff --git a/src/main/java/com/hbm/blocks/generic/PartEmitter.java b/src/main/java/com/hbm/blocks/generic/PartEmitter.java index db823972c..771c9e37d 100644 --- a/src/main/java/com/hbm/blocks/generic/PartEmitter.java +++ b/src/main/java/com/hbm/blocks/generic/PartEmitter.java @@ -3,8 +3,8 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.ITooltipProvider; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ParticleUtil; import api.hbm.block.IToolable; diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java index f7a0fcfb8..f1662ec4e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -10,8 +10,8 @@ import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/blocks/machine/MachineICFController.java b/src/main/java/com/hbm/blocks/machine/MachineICFController.java index 321d8307d..10d851109 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineICFController.java +++ b/src/main/java/com/hbm/blocks/machine/MachineICFController.java @@ -11,8 +11,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockICFLaserComponent.EnumICFPart; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.machine.TileEntityICFController; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java index 4c9654659..0fcbc6117 100644 --- a/src/main/java/com/hbm/blocks/machine/MachinePWRController.java +++ b/src/main/java/com/hbm/blocks/machine/MachinePWRController.java @@ -9,8 +9,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.machine.TileEntityPWRController; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java b/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java index 73526c494..459e958fd 100644 --- a/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java +++ b/src/main/java/com/hbm/blocks/machine/ZirnoxDestroyed.java @@ -8,8 +8,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityZirnoxDestroyed; diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java index c5018700a..28ddcd06a 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java @@ -4,7 +4,7 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockFlammable; import com.hbm.items.ModItems; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import api.hbm.block.IToolable; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java index 0480adc74..dc2f70829 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisBurning.java @@ -4,8 +4,8 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java index 299cf9f3c..9aef21c0b 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisRadiating.java @@ -5,8 +5,8 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java index 150c4352f..6e1375bbc 100644 --- a/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java +++ b/src/main/java/com/hbm/entity/item/EntityFallingBlockNT.java @@ -109,6 +109,7 @@ public class EntityFallingBlockNT extends Entity { int x = MathHelper.floor_double(this.posX); int y = MathHelper.floor_double(this.posY); int z = MathHelper.floor_double(this.posZ); + int meta = this.getMeta(); if(this.fallingTicks == 1) { if(this.worldObj.getBlock(x, y, z) != this.getBlock()) { @@ -127,10 +128,10 @@ public class EntityFallingBlockNT extends Entity { if(this.worldObj.getBlock(x, y, z) != Blocks.piston_extension) { this.setDead(); - if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), this.getMeta(), 3)) { + if(!this.destroyOnLand && replacementCheck(x, y, z) && this.worldObj.setBlock(x, y, z, this.getBlock(), meta, 3)) { - if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, this.getMeta()); - if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, this.getMeta()); + if(this.getBlock() instanceof BlockFalling) ((BlockFalling) this.getBlock()).func_149828_a(this.worldObj, x, y, z, meta); + if(this.getBlock() instanceof BlockFallingNT) ((BlockFallingNT) this.getBlock()).onLand(this.worldObj, x, y, z, meta); if(this.tileNBT != null && this.getBlock() instanceof ITileEntityProvider) { TileEntity tileentity = this.worldObj.getTileEntity(x, y, z); @@ -153,13 +154,13 @@ public class EntityFallingBlockNT extends Entity { tileentity.markDirty(); } } - } else if(this.canDrop && !this.destroyOnLand) { - this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + } else if(this.canDrop && !this.destroyOnLand && this.getBlock().getItemDropped(meta, rand, 0) != null) { + this.entityDropItem(new ItemStack(this.getBlock().getItemDropped(meta, rand, 0), 1, this.getBlock().damageDropped(meta)), 0.0F); } } } else if(this.fallingTicks > 100 && !this.worldObj.isRemote && (y < 1 || y > 256) || this.fallingTicks > 600) { - if(this.canDrop) { - this.entityDropItem(new ItemStack(this.getBlock(), 1, this.getBlock().damageDropped(this.getMeta())), 0.0F); + if(this.canDrop && this.getBlock().getItemDropped(meta, rand, 0) != null) { + this.entityDropItem(new ItemStack(this.getBlock().getItemDropped(meta, rand, 0), 1, this.getBlock().damageDropped(meta)), 0.0F); } this.setDead(); diff --git a/src/main/java/com/hbm/entity/item/EntityFireworks.java b/src/main/java/com/hbm/entity/item/EntityFireworks.java index 64227e4aa..6602c2ef4 100644 --- a/src/main/java/com/hbm/entity/item/EntityFireworks.java +++ b/src/main/java/com/hbm/entity/item/EntityFireworks.java @@ -1,7 +1,7 @@ package com.hbm.entity.item; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java b/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java index 478363a7d..53f379cae 100644 --- a/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java +++ b/src/main/java/com/hbm/entity/item/EntityMagnusCartus.java @@ -1,8 +1,8 @@ package com.hbm.entity.item; import com.hbm.entity.cart.EntityMinecartBogie; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/logic/EntityBomber.java b/src/main/java/com/hbm/entity/logic/EntityBomber.java index 820bdfc3b..25cc3acb4 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBomber.java +++ b/src/main/java/com/hbm/entity/logic/EntityBomber.java @@ -11,8 +11,8 @@ import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.LoopedEntitySoundPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.LoopedEntitySoundPacket; import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 75fea35f7..e8da0ab89 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -2,8 +2,8 @@ package com.hbm.entity.logic; import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/logic/EntityEMP.java b/src/main/java/com/hbm/entity/logic/EntityEMP.java index 3ba75fc54..c322b4fa7 100644 --- a/src/main/java/com/hbm/entity/logic/EntityEMP.java +++ b/src/main/java/com/hbm/entity/logic/EntityEMP.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import api.hbm.energymk2.IEnergyHandlerMK2; import cofh.api.energy.IEnergyProvider; diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index 665d9550d..c72a26679 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -16,8 +16,8 @@ import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.explosion.ExplosionSolinium; import com.hbm.interfaces.Spaghetti; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java index bdee6f5f4..6c07d944d 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileShuttle.java @@ -8,8 +8,8 @@ import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.init.Blocks; diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java index ca78f32a9..8322f29b6 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java @@ -9,8 +9,8 @@ import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java b/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java index c5e3bb9f7..cffaee494 100644 --- a/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java +++ b/src/main/java/com/hbm/entity/mob/EntityHunterChopper.java @@ -5,8 +5,8 @@ import com.hbm.entity.projectile.EntityChopperMine; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.entity.IRadiationImmune; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/entity/mob/EntityPigeon.java b/src/main/java/com/hbm/entity/mob/EntityPigeon.java index ad6d203fc..34e19c294 100644 --- a/src/main/java/com/hbm/entity/mob/EntityPigeon.java +++ b/src/main/java/com/hbm/entity/mob/EntityPigeon.java @@ -8,8 +8,8 @@ import com.hbm.entity.mob.ai.EntityAIStopFlying; import com.hbm.entity.mob.ai.EntityAISwimmingConditional; import com.hbm.entity.mob.ai.EntityAIWanderConditional; import com.hbm.items.tool.ItemFertilizer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java index aa0851cc9..e6db43891 100644 --- a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java +++ b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java @@ -6,8 +6,8 @@ import java.util.List; import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.tileentity.machine.TileEntityTesla; diff --git a/src/main/java/com/hbm/entity/mob/EntityUFO.java b/src/main/java/com/hbm/entity/mob/EntityUFO.java index 4a8f46ee5..f30a84f93 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFO.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFO.java @@ -9,8 +9,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java index a3ac74fbf..423f68429 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphid.java @@ -15,8 +15,8 @@ import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.ModItems; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java index 7c1ce74e1..daad80877 100644 --- a/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java +++ b/src/main/java/com/hbm/entity/mob/glyphid/EntityGlyphidNuclear.java @@ -11,8 +11,8 @@ import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.main.MainRegistry; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java index 72c0e29de..47dfee456 100644 --- a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeCraft.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.entity.mob.EntityUFOBase; import com.hbm.entity.projectile.EntitySiegeLaser; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java index 1a21d96c2..8775e9510 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBombletZeta.java @@ -4,8 +4,8 @@ import com.hbm.config.BombConfig; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java index 2e44faf9f..d6370efb8 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -25,8 +25,8 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.items.weapon.ItemGunBase; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/entity/projectile/EntityCog.java b/src/main/java/com/hbm/entity/projectile/EntityCog.java index 84c27bb77..8fb460a3e 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityCog.java +++ b/src/main/java/com/hbm/entity/projectile/EntityCog.java @@ -2,8 +2,8 @@ package com.hbm.entity.projectile; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/entity/projectile/EntityRubble.java b/src/main/java/com/hbm/entity/projectile/EntityRubble.java index b19f7263b..4cc2daf1f 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRubble.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRubble.java @@ -2,7 +2,7 @@ package com.hbm.entity.projectile; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.ParticleBurstPacket; +import com.hbm.packet.toclient.ParticleBurstPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/entity/projectile/EntitySawblade.java b/src/main/java/com/hbm/entity/projectile/EntitySawblade.java index 9d4a3b592..fcc0c5a79 100644 --- a/src/main/java/com/hbm/entity/projectile/EntitySawblade.java +++ b/src/main/java/com/hbm/entity/projectile/EntitySawblade.java @@ -2,8 +2,8 @@ package com.hbm.entity.projectile; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/explosion/ExplosionChaos.java b/src/main/java/com/hbm/explosion/ExplosionChaos.java index ea23952ef..ded0a8193 100644 --- a/src/main/java/com/hbm/explosion/ExplosionChaos.java +++ b/src/main/java/com/hbm/explosion/ExplosionChaos.java @@ -70,29 +70,6 @@ public class ExplosionChaos { } } - public static void antiCheat(World world, int x, int y, int z, int bombStartStrength) { - - int r = bombStartStrength; - int r2 = r * r; - int r22 = r2 / 2; - for (int xx = -r; xx < r; xx++) { - int X = xx + x; - int XX = xx * xx; - for (int yy = -r; yy < r; yy++) { - int Y = yy + y; - int YY = XX + yy * yy; - for (int zz = -r; zz < r; zz++) { - int Z = zz + z; - int ZZ = YY + zz * zz; - if (ZZ < r22) { - if (rand.nextInt(15) == 0 && world.getBlock(X, Y, Z) != Blocks.air) - world.setBlock(X, Y, Z, ModBlocks.cheater_virus); - } - } - } - } - } - public static void hardenVirus(World world, int x, int y, int z, int bombStartStrength) { int r = bombStartStrength; @@ -405,7 +382,6 @@ public class ExplosionChaos { } public static void pDestruction(World world, int x, int y, int z) { - EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); world.spawnEntityInWorld(entityfallingblock); } diff --git a/src/main/java/com/hbm/explosion/ExplosionLarge.java b/src/main/java/com/hbm/explosion/ExplosionLarge.java index 2fff85b46..ae8f4e5cb 100644 --- a/src/main/java/com/hbm/explosion/ExplosionLarge.java +++ b/src/main/java/com/hbm/explosion/ExplosionLarge.java @@ -5,8 +5,8 @@ import java.util.Random; import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityShrapnel; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ParticleUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index 0734db2e5..cca47893b 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -5,8 +5,9 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; + import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java index 088c38a83..be83da6b2 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectAmat.java @@ -2,8 +2,8 @@ package com.hbm.explosion.vanillant.standard; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java index 79b5b6966..583eaa004 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/ExplosionEffectStandard.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IExplosionSFX; -import com.hbm.packet.ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.util.MathHelper; diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java index 186ea3b85..73f75de27 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/PlayerProcessorStandard.java @@ -5,8 +5,8 @@ import java.util.Map.Entry; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.interfaces.IPlayerProcessor; -import com.hbm.packet.ExplosionKnockbackPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.ExplosionKnockbackPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 81a44a47a..18c6a73fa 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -8,9 +8,9 @@ import com.hbm.config.RadiationConfig; import com.hbm.entity.mob.EntityDuck; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index a7f68661a..0810bb580 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -20,10 +20,10 @@ import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.ExtPropPacket; import com.hbm.potion.HbmPotion; -import com.hbm.packet.ExtPropPacket; import com.hbm.saveddata.AuxSavedData; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 6ae2507e1..1c2e4483b 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -1,18 +1,22 @@ package com.hbm.handler; import com.hbm.inventory.gui.GUICalculator; +import com.hbm.items.IKeybindReceiver; + import cpw.mods.fml.common.FMLCommonHandler; import org.lwjgl.input.Keyboard; import com.hbm.extprop.HbmPlayerProps; import com.hbm.main.MainRegistry; -import com.hbm.packet.KeybindPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.KeybindPacket; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; public class HbmKeybinds { @@ -64,6 +68,19 @@ public class HbmKeybinds { } } } + + public static void onPressedServer(EntityPlayer player, EnumKeybind key, boolean state) { + + // EXTPROP HANDLING + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.setKeyPressed(key, state); + + // ITEM HANDLING + ItemStack held = player.getHeldItem(); + if(held != null && held.getItem() instanceof IKeybindReceiver) { + ((IKeybindReceiver) held.getItem()).handleKeybind(player, held, key, state); + } + } public static enum EnumKeybind { JETPACK, diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 11e2621b3..46025acce 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -4,8 +4,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.items.ModItems; import com.hbm.items.tool.IItemAbility; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ContaminationUtil; diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index 5dac19082..b355567bf 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -14,8 +14,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorRegistry.HazardClass; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 0bb1f6103..a6d351802 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -11,8 +11,8 @@ import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index 9f7a5aca7..98ac02468 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -17,8 +17,8 @@ import com.hbm.lib.HbmCollection; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 786346617..80dd4fc6d 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -19,8 +19,8 @@ import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.ResourceManager; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 847a3f3ab..ac04b5aa4 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -14,8 +14,8 @@ import com.hbm.items.ItemAmmoEnums.AmmoLunaticSniper; import com.hbm.lib.HbmCollection; import com.hbm.lib.RefStrings; import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index 4c0f19804..34c25392a 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -12,8 +12,8 @@ import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java index 47ae1fb7d..8362c2605 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java @@ -10,8 +10,8 @@ import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index 2d76d18e6..f5b88310c 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -11,7 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.ChatBuilder; diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 0ea31f450..ed16b5fa1 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -19,9 +19,9 @@ import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.ExplosionKnockbackPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.ExplosionKnockbackPacket; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.tileentity.IRepairable; diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java index 5ed0b21db..123d99d7e 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java @@ -17,8 +17,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.lib.HbmCollection.EnumGunManufacturer; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 1d7f84c1f..2aa52a588 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -12,8 +12,8 @@ import com.hbm.items.ItemAmmoEnums.AmmoGrenade; import com.hbm.lib.HbmCollection; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.ResourceManager; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.render.anim.HbmAnimations.AnimType; diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index d7fff5e2b..2bdf1cb63 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -12,8 +12,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.BobMathUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java index 161dd5522..e09d50209 100644 --- a/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java +++ b/src/main/java/com/hbm/handler/radiation/ChunkRadiationHandlerSimple.java @@ -5,8 +5,8 @@ import java.util.Map.Entry; import com.hbm.blocks.ModBlocks; import com.hbm.config.RadiationConfig; -import com.hbm.packet.AuxParticlePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.material.Material; diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index 2b9bbe7ea..5ad9b2944 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -17,8 +17,8 @@ import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; import com.hbm.lib.RefStrings; -import com.hbm.packet.AnvilCraftPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AnvilCraftPacket; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.FontRenderer; diff --git a/src/main/java/com/hbm/inventory/gui/GUIBarrel.java b/src/main/java/com/hbm/inventory/gui/GUIBarrel.java index e739e81d6..bba645724 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIBarrel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIBarrel.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerBarrel; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityBarrel; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java index dc8f89785..d75127785 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java +++ b/src/main/java/com/hbm/inventory/gui/GUICombustionEngine.java @@ -9,8 +9,8 @@ import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineCombustionEngine; import com.hbm.util.EnumUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICompressor.java b/src/main/java/com/hbm/inventory/gui/GUICompressor.java index 66e72609b..9e2d4aa51 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICompressor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICompressor.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCompressor; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineCompressor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java b/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java index e8ac99bda..89502cc38 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICoreEmitter.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityCoreEmitter; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java b/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java index 99c6fb2be..30ec1aa1d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICoreStabilizer.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCoreStabilizer; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityCoreStabilizer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java index b4c4dd7b2..6a066a684 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java b/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java index e2faf5fa4..80dc88555 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneBoxer.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneBoxer; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneBoxer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java index e6937c829..7e8f74ab0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneExtractor; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java index ef1465205..6bff412fc 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneGrabber; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneGrabber; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java index f378237df..77798355b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneRouter; import com.hbm.lib.RefStrings; import com.hbm.module.ModulePatternMatcher; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneRouter; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java index cd99405b4..4e98d7c4a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneCrate.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerDroneCrate; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityDroneCrate; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java index 914228045..32a547130 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerElectrolyserFluid; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityElectrolyser; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java index 3e4eabfd9..670acabb0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerElectrolyserMetal; import com.hbm.inventory.material.Mats; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityElectrolyser; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIFEL.java b/src/main/java/com/hbm/inventory/gui/GUIFEL.java index 890cb3299..443c01cac 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFEL.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFEL.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFEL; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityFEL; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIForceField.java b/src/main/java/com/hbm/inventory/gui/GUIForceField.java index 506541074..e18aca9f1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIForceField.java +++ b/src/main/java/com/hbm/inventory/gui/GUIForceField.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerForceField; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityForceField; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java index 817be3b10..80fd75371 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIFunnel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIFunnel.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerFunnel; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineFunnel; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index b39db1804..92d97a872 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerHadron; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityHadron; import com.hbm.tileentity.machine.TileEntityHadron.EnumHadronState; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java b/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java index a5a2a781f..d4eefef9a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHeaterHeatex.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerHeaterHeatex; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityHeaterHeatex; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIITER.java b/src/main/java/com/hbm/inventory/gui/GUIITER.java index 4e9b1d85c..27f78ff5d 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIITER.java +++ b/src/main/java/com/hbm/inventory/gui/GUIITER.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerITER; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityITER; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java index a90bd4799..d3bf1c87f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java +++ b/src/main/java/com/hbm/inventory/gui/GUILaunchPadRusted.java @@ -10,8 +10,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerLaunchPadRusted; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.item.ItemRenderMissileGeneric; import com.hbm.tileentity.bomb.TileEntityLaunchPadRusted; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java index f1fdb4d91..7e50956a2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineArcFurnaceLarge.java @@ -11,8 +11,8 @@ import com.hbm.inventory.container.ContainerMachineArcFurnaceLarge; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineArcFurnaceLarge; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java index 11480d37d..2fa8c4bbe 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineBattery.java @@ -14,8 +14,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java index 4b78d4aa5..fe81cccba 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineExcavator; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineExcavator; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java b/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java index 54ddb47e9..9ef320390 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineFluidTank.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineFluidTank; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java index abcc30b6e..eca4887c6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineGasFlare.java @@ -5,8 +5,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineGasFlare; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.oil.TileEntityMachineGasFlare; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java b/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java index c5373d331..975fb7ad1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineLaunchTable.java @@ -6,8 +6,8 @@ import com.hbm.inventory.container.ContainerLaunchTable; import com.hbm.items.weapon.ItemCustomMissile; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.render.util.MissileMultipart; import com.hbm.render.util.MissilePronter; import com.hbm.tileentity.bomb.TileEntityLaunchTable; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java b/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java index c40100afa..d8aec81b6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineMissileAssembly.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineMissileAssembly; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.render.util.MissileMultipart; import com.hbm.render.util.MissilePart; import com.hbm.render.util.MissilePronter; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java index 68fd71f77..43fd1ba61 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRadarNT.java @@ -5,8 +5,8 @@ import java.util.Arrays; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java index 310bc7db0..fe6ecbdea 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineTurbineGas.java @@ -11,8 +11,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineTurbineGas; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java index 977f11d20..659febdab 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineWoodBurner.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineWoodBurner; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineWoodBurner; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java index dfa413f97..08d74a6c3 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMassStorage.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMassStorage; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.storage.TileEntityMassStorage; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java b/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java index bc64a398e..13a3ac0f7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMicrowave.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMicrowave; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityMicrowave; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java b/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java index 79681e6f8..6f5441984 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMiningLaser.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMiningLaser; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntityMachineMiningLaser; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index 79f6461d6..974e41635 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -9,8 +9,8 @@ import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.recipes.MixerRecipes; import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineMixer; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java b/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java index b03155b93..a3147d449 100644 --- a/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java +++ b/src/main/java/com/hbm/inventory/gui/GUINukeFstbmb.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerNukeFstbmb; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.bomb.TileEntityNukeBalefire; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java index 8d040b03f..d93949e1a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIOilburner.java +++ b/src/main/java/com/hbm/inventory/gui/GUIOilburner.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerOilburner; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityHeaterOilburner; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIPWR.java b/src/main/java/com/hbm/inventory/gui/GUIPWR.java index db21f4194..3220d178b 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPWR.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPWR.java @@ -9,8 +9,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPWR; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.util.GaugeUtil; import com.hbm.tileentity.machine.TileEntityPWRController; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java index 0b32f00e1..8a645908c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKBoiler.java @@ -6,8 +6,8 @@ import com.hbm.inventory.container.ContainerRBMKGeneric; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBoiler; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index b07d3a19c..7867f1bc2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -11,8 +11,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.RBMKColumn; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java index fecf9b8e3..b1c8f415e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControl.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerRBMKControl; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlManual; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java index 13ce7330f..acb1efae1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKControlAuto.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerRBMKControlAuto; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKControlAuto; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java index f9014122c..c1fb2b367 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRadioRec.java @@ -6,8 +6,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityRadioRec; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java index b141317da..b44711ee5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorControl.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorControl; import com.hbm.lib.RefStrings; import com.hbm.module.NumberDisplay; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorControl; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java index e02d155a5..e8d13b703 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorResearch.java @@ -7,8 +7,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorResearch; import com.hbm.lib.RefStrings; import com.hbm.module.NumberDisplay; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorResearch; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java index f09558da7..be0312a00 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java +++ b/src/main/java/com/hbm/inventory/gui/GUIReactorZirnox.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerReactorZirnox; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityReactorZirnox; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUISILEX.java b/src/main/java/com/hbm/inventory/gui/GUISILEX.java index 64b9f36bd..b36c07fcd 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISILEX.java +++ b/src/main/java/com/hbm/inventory/gui/GUISILEX.java @@ -10,8 +10,8 @@ import com.hbm.inventory.recipes.SILEXRecipes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntitySILEX; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java index a96b12b6a..14ed3b483 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java @@ -9,8 +9,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.ItemBobmazonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemBobmazonPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java b/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java index 67cae4179..7f9c35ac9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenDesignator.java @@ -8,8 +8,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; -import com.hbm.packet.ItemDesignatorPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemDesignatorPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index e72526ced..e25744def 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -12,8 +12,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIDMulti; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTItemControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTItemControlPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java index fc90751df..1f879d0a7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorch.java @@ -6,8 +6,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchBase; import com.hbm.tileentity.network.TileEntityRadioTorchSender; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java index c78ea3061..11b38f125 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenRadioTorchLogic.java @@ -7,8 +7,8 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchLogic; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java index af560d0d9..e7f4fe2bb 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -8,7 +8,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatCoordPacket; +import com.hbm.packet.toserver.SatCoordPacket; import com.hbm.saveddata.satellites.Satellite.CoordActions; import com.hbm.saveddata.satellites.Satellite.Interfaces; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java index 392f620f9..bba6b5b4f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java @@ -10,7 +10,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatLaserPacket; +import com.hbm.packet.toserver.SatLaserPacket; import com.hbm.saveddata.satellites.Satellite.InterfaceActions; import com.hbm.saveddata.satellites.Satellite.Interfaces; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index f58519d0a..a91652ef0 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -24,8 +24,8 @@ import com.hbm.items.machine.ItemStamp; import com.hbm.items.machine.ItemStamp.StampType; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.ItemFolderPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.ItemFolderPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; diff --git a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java index 644f6eff6..a1fdb30cc 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java +++ b/src/main/java/com/hbm/inventory/gui/GUISoyuzLauncher.java @@ -4,8 +4,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerSoyuzLauncher; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.machine.TileEntitySoyuzLauncher; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretArty.java b/src/main/java/com/hbm/inventory/gui/GUITurretArty.java index f53a71a13..04b188f14 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretArty.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretArty.java @@ -1,8 +1,8 @@ package com.hbm.inventory.gui; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.turret.TileEntityTurretArty; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretBase.java b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java index c4c79e551..c5964c108 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretBase.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretBase.java @@ -8,9 +8,9 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java b/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java index 1458112b9..2ca5524f1 100644 --- a/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java +++ b/src/main/java/com/hbm/inventory/gui/GUITurretHIMARS.java @@ -1,8 +1,8 @@ package com.hbm.inventory.gui; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.AuxButtonPacket; import com.hbm.tileentity.turret.TileEntityTurretBaseNT; import com.hbm.tileentity.turret.TileEntityTurretHIMARS; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatz.java b/src/main/java/com/hbm/inventory/gui/GUIWatz.java index c22046d29..cf190b93e 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWatz.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWatz.java @@ -6,8 +6,8 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerWatz; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.render.util.GaugeUtil; import com.hbm.render.util.GaugeUtil.Gauge; import com.hbm.tileentity.machine.TileEntityWatz; diff --git a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java index bec49c8d3..d58fa3c3c 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java +++ b/src/main/java/com/hbm/inventory/gui/GuiInfoContainer.java @@ -7,8 +7,9 @@ import codechicken.nei.api.INEIGuiHandler; import codechicken.nei.api.TaggedInventoryArea; import com.hbm.inventory.SlotPattern; import com.hbm.inventory.container.ContainerBase; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; + import cpw.mods.fml.common.Optional; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java index 316c6e9fb..c406fd3c9 100644 --- a/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java +++ b/src/main/java/com/hbm/inventory/gui/GuiScreenRadioTelex.java @@ -7,8 +7,8 @@ import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; -import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTelex; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/items/IKeybindReceiver.java b/src/main/java/com/hbm/items/IKeybindReceiver.java new file mode 100644 index 000000000..77ba05157 --- /dev/null +++ b/src/main/java/com/hbm/items/IKeybindReceiver.java @@ -0,0 +1,11 @@ +package com.hbm.items; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public interface IKeybindReceiver { + + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state); +} diff --git a/src/main/java/com/hbm/items/ISyncButtons.java b/src/main/java/com/hbm/items/ISyncButtons.java deleted file mode 100644 index e06e3e78c..000000000 --- a/src/main/java/com/hbm/items/ISyncButtons.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.items; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraftforge.client.event.MouseEvent; - -public interface ISyncButtons { - - public boolean canReceiveMouse(EntityPlayer player, ItemStack stack, MouseEvent event, int button, boolean buttonstate); - public void receiveMouse(EntityPlayer player, ItemStack stack, int button, boolean buttonstate); -} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index b7789ba87..7c7a2eb53 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -36,7 +36,6 @@ import com.hbm.items.weapon.ItemCustomMissilePart.*; import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.items.weapon.ItemMissile.MissileFuel; import com.hbm.items.weapon.ItemMissile.MissileTier; -import com.hbm.items.weapon.gununified.ItemEnergyGunBase; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java index 5882236e7..5702fed77 100644 --- a/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java +++ b/src/main/java/com/hbm/items/armor/ArmorBJJetpack.java @@ -3,8 +3,8 @@ package com.hbm.items.armor; import java.util.List; import com.hbm.extprop.HbmPlayerProps; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorBJ; import com.hbm.util.ArmorUtil; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 068ae49f1..88e9d3773 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -6,8 +6,8 @@ import java.util.UUID; import com.google.common.collect.Multimap; import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorDNT; import com.hbm.util.ArmorUtil; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/items/armor/ArmorDiesel.java b/src/main/java/com/hbm/items/armor/ArmorDiesel.java index e42510fc3..2bc61d99c 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDiesel.java +++ b/src/main/java/com/hbm/items/armor/ArmorDiesel.java @@ -6,8 +6,8 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.model.ModelArmorDiesel; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/items/armor/ItemModKnife.java b/src/main/java/com/hbm/items/armor/ItemModKnife.java index 9d61d7e2e..0c49f092f 100644 --- a/src/main/java/com/hbm/items/armor/ItemModKnife.java +++ b/src/main/java/com/hbm/items/armor/ItemModKnife.java @@ -5,8 +5,8 @@ import java.util.UUID; import com.hbm.handler.ArmorModHandler; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index a9df9cfff..7aeafb941 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ISatChip; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteScanner; diff --git a/src/main/java/com/hbm/items/armor/JetpackBooster.java b/src/main/java/com/hbm/items/armor/JetpackBooster.java index 09b90947b..f3dbc31bb 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBooster.java +++ b/src/main/java/com/hbm/items/armor/JetpackBooster.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/armor/JetpackBreak.java b/src/main/java/com/hbm/items/armor/JetpackBreak.java index 340fd2f09..f92b8798b 100644 --- a/src/main/java/com/hbm/items/armor/JetpackBreak.java +++ b/src/main/java/com/hbm/items/armor/JetpackBreak.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/armor/JetpackRegular.java b/src/main/java/com/hbm/items/armor/JetpackRegular.java index cbf04933b..9e23c4375 100644 --- a/src/main/java/com/hbm/items/armor/JetpackRegular.java +++ b/src/main/java/com/hbm/items/armor/JetpackRegular.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/armor/JetpackVectorized.java b/src/main/java/com/hbm/items/armor/JetpackVectorized.java index d95312f80..1017fd2a4 100644 --- a/src/main/java/com/hbm/items/armor/JetpackVectorized.java +++ b/src/main/java/com/hbm/items/armor/JetpackVectorized.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.extprop.HbmPlayerProps; import com.hbm.inventory.fluid.FluidType; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/food/ItemLemon.java b/src/main/java/com/hbm/items/food/ItemLemon.java index 17499655c..032fbf61a 100644 --- a/src/main/java/com/hbm/items/food/ItemLemon.java +++ b/src/main/java/com/hbm/items/food/ItemLemon.java @@ -3,8 +3,8 @@ package com.hbm.items.food; import java.util.List; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 612eb8442..0592359de 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -8,7 +8,7 @@ import com.hbm.inventory.gui.GUIScreenFluid; import com.hbm.items.IItemControlReceiver; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.util.ChatBuilder; import com.hbm.util.I18nUtil; diff --git a/src/main/java/com/hbm/items/special/ItemCigarette.java b/src/main/java/com/hbm/items/special/ItemCigarette.java index 092885af4..b38fd2d29 100644 --- a/src/main/java/com/hbm/items/special/ItemCigarette.java +++ b/src/main/java/com/hbm/items/special/ItemCigarette.java @@ -5,8 +5,8 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index e690582c0..57698b4a0 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -8,8 +8,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.block.IToolable; import api.hbm.block.IToolable.ToolType; diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java index 0b4ef3dd2..16eb83a0b 100644 --- a/src/main/java/com/hbm/items/tool/ItemBoltgun.java +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -5,8 +5,8 @@ import com.hbm.items.IAnimatedItem; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.util.EntityDamageUtil; diff --git a/src/main/java/com/hbm/items/tool/ItemChainsaw.java b/src/main/java/com/hbm/items/tool/ItemChainsaw.java index a2d4dfb38..b20f5ba3b 100644 --- a/src/main/java/com/hbm/items/tool/ItemChainsaw.java +++ b/src/main/java/com/hbm/items/tool/ItemChainsaw.java @@ -2,8 +2,8 @@ package com.hbm.items.tool; import com.hbm.inventory.fluid.FluidType; import com.hbm.items.IHeldSoundProvider; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayerMP; diff --git a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java index 4fee946c8..eddb41ace 100644 --- a/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java +++ b/src/main/java/com/hbm/items/tool/ItemLaserDetonator.java @@ -11,7 +11,7 @@ import com.hbm.interfaces.IHoldableWeapon; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import com.hbm.util.ChatBuilder; diff --git a/src/main/java/com/hbm/items/tool/ItemOilDetector.java b/src/main/java/com/hbm/items/tool/ItemOilDetector.java index 45d41af10..3b9cf86b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemOilDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemOilDetector.java @@ -5,7 +5,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.client.resources.I18n; diff --git a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java index 12483fac7..5fd3ac58f 100644 --- a/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java +++ b/src/main/java/com/hbm/items/tool/ItemOreDensityScanner.java @@ -3,7 +3,7 @@ package com.hbm.items.tool; import com.hbm.items.special.ItemBedrockOreBase; import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java index 1776249cf..c83ca9459 100644 --- a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java +++ b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java @@ -4,7 +4,7 @@ import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionData; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java index a5907f3f5..660c0ed82 100644 --- a/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java +++ b/src/main/java/com/hbm/items/tool/ItemPowerNetTool.java @@ -3,8 +3,8 @@ package com.hbm.items.tool; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ChatBuilder; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/items/tool/ItemSatInterface.java b/src/main/java/com/hbm/items/tool/ItemSatInterface.java index f67a8cc9e..512bfcc72 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatInterface.java +++ b/src/main/java/com/hbm/items/tool/ItemSatInterface.java @@ -6,7 +6,7 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemSatChip; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SatPanelPacket; +import com.hbm.packet.toclient.SatPanelPacket; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.IGUIProvider; diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 43b6c885e..99ce2d356 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -13,7 +13,7 @@ import com.hbm.handler.ToolAbility; import com.hbm.handler.ToolAbility.*; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.util.ChatBuilder; import com.hbm.handler.WeaponAbility; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index d6482e22f..0014cb736 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -23,8 +23,8 @@ import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; import com.hbm.particle.helper.ExplosionCreator; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 61ad4299d..f50d3ba0f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -15,8 +15,8 @@ import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.helper.ExplosionCreator; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/items/weapon/ItemCrucible.java b/src/main/java/com/hbm/items/weapon/ItemCrucible.java index 0fbfb1a64..14e0818cf 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCrucible.java +++ b/src/main/java/com/hbm/items/weapon/ItemCrucible.java @@ -6,8 +6,8 @@ import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.items.IEquipReceiver; import com.hbm.items.tool.ItemSwordAbility; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ShadyUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java index 6a69055ab..4831b4556 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java +++ b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java @@ -5,8 +5,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.inventory.fluid.Fluids; -import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import net.minecraft.enchantment.Enchantment; diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java similarity index 95% rename from src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java rename to src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java index 554f5a6ea..ffbc0388d 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemEnergyGunBase.java @@ -1,4 +1,4 @@ -package com.hbm.items.weapon.gununified; +package com.hbm.items.weapon; import java.util.List; @@ -9,10 +9,9 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.packet.toserver.GunButtonPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; import com.hbm.render.util.RenderScreenOverlay.Crosshair; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index e40e9889c..56e9d3be8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -19,10 +19,10 @@ import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; import com.hbm.lib.HbmCollection; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.GunAnimationPacket; -import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.packet.toserver.GunButtonPacket; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java index 110ed0f3e..3a9ec6fba 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java @@ -10,8 +10,8 @@ import com.hbm.interfaces.IHoldableWeapon; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.machine.ItemFluidIcon; -import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; import com.hbm.render.util.RenderScreenOverlay.Crosshair; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index 7dd20b1a0..b3c7e83c0 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -5,8 +5,8 @@ import com.hbm.handler.GunConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.GunAnimationPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.sound.AudioWrapper; diff --git a/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java b/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java deleted file mode 100644 index 38b210a38..000000000 --- a/src/main/java/com/hbm/items/weapon/ItemPlasmaSpear.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.items.ISyncButtons; -import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; - -import api.hbm.fluid.IFillableItem; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.client.event.MouseEvent; - -public class ItemPlasmaSpear extends Item implements IFillableItem, ISyncButtons { - - public static final int maxFuel = 3_000; - - @Override - public boolean showDurabilityBar(ItemStack stack) { - return getFill(stack) < maxFuel; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) { - return 1 - (double) getFill(stack) / (double) maxFuel; - } - - @Override - public int getFill(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - setFill(stack, maxFuel); - return maxFuel; - } - - return stack.stackTagCompound.getInteger("fuel"); - } - - public void setFill(ItemStack stack, int fill) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("fuel", fill); - } - - public static ItemStack getEmptyTool(Item item) { - ItemPlasmaSpear tool = (ItemPlasmaSpear) item; - ItemStack stack = new ItemStack(item); - tool.setFill(stack, 0); - return stack; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) return stack; - - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setBoolean("melee", !stack.stackTagCompound.getBoolean("melee")); - world.playSoundAtEntity(player, "random.orb", 0.25F, 1.25F); - - return stack; - } - - @Override - public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { - - if(stack.hasTagCompound() && !stack.stackTagCompound.getBoolean("melee")) { - return true; //cancel hitting, it's ranged - } - - return false; - } - - @Override - public boolean onEntitySwing(EntityLivingBase entityLiving, ItemStack stack) { - - if(!(entityLiving instanceof EntityPlayerMP)) - return false; - - if(getFill(stack) <= 0) - return false; - - if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("melee")) { - return true; //cancel hitting, it's ranged - } - - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "anim"); - nbt.setString("mode", "lSwing"); - PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(nbt, 0, 0, 0), (EntityPlayerMP)entityLiving); - - return false; - } - - @Override - public boolean canReceiveMouse(EntityPlayer player, ItemStack stack, MouseEvent event, int button, boolean buttonstate) { - - if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("melee")) { - return false; - } - - if(button == 0) { - event.setCanceled(true); - return true; - } - - return false; - } - - @Override - public void receiveMouse(EntityPlayer player, ItemStack stack, int button, boolean buttonstate) { - Vec3 start = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight() - player.yOffset, player.posZ); - Vec3 look = player.getLookVec(); - Vec3 end = start.addVector(look.xCoord * 100, look.yCoord * 100, look.zCoord * 100); - - List targets = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox( - Math.min(start.xCoord, end.xCoord), - Math.min(start.yCoord, end.yCoord), - Math.min(start.zCoord, end.zCoord), - Math.max(start.xCoord, end.xCoord), - Math.max(start.yCoord, end.yCoord), - Math.max(start.zCoord, end.zCoord) - )); - - for(Entity target : targets) { - - AxisAlignedBB aabb = target.boundingBox; - MovingObjectPosition hitMop = aabb.calculateIntercept(start, end); - - if(hitMop != null) { - target.attackEntityFrom(new EntityDamageSource(ModDamageSource.s_laser, player).setDamageBypassesArmor(), 15F); - } - } - } - - @Override - public boolean acceptsFluid(FluidType type, ItemStack stack) { - return type == Fluids.SCHRABIDIC; - } - - @Override - public int tryFill(FluidType type, int amount, ItemStack stack) { - - int fill = this.getFill(stack); - int toFill = this.maxFuel - fill; - toFill = Math.min(toFill, amount); - toFill = Math.min(toFill, 10); - - this.setFill(stack, fill + toFill); - - return amount - toFill; - } - - @Override public boolean providesFluid(FluidType type, ItemStack stack) { return false; } - @Override public int tryEmpty(FluidType type, int amount, ItemStack stack) { return 0; } - - @Override - public FluidType getFirstFluidType(ItemStack stack) { - return Fluids.SCHRABIDIC; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java b/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java deleted file mode 100644 index ad2ab4f0d..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/GunFrame.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.util.Tuple.Pair; -import com.hbm.util.Tuple.Triplet; - -import api.hbm.item.IClickReceiver; -import api.hbm.item.IGunHUDProvider; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; - -@Deprecated -public abstract class GunFrame extends Item implements IGunHUDProvider, IClickReceiver { - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isCurrentItem) { - - if(entity instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) entity; - - if(world.isRemote) { - this.updatePlayerClient(stack, world, player, slot, isCurrentItem); - } else { - this.updatePlayerServer(stack, world, player, slot, isCurrentItem); - } - } - } - - public void updatePlayerClient(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { } - public void updatePlayerServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { } - - @Override - @SideOnly(Side.CLIENT) - public boolean handleMouseInput(ItemStack stack, EntityPlayer player, int button, boolean state) { - return false; - } - - @Override - public List> getStatusBars(ItemStack stack, EntityPlayer player) { - return new ArrayList(); - } - - @Override - public List> getAmmoInfo(ItemStack stack, EntityPlayer player) { - return null; - } - - public static double getDurabilityBar(ItemStack stack) { - return 1.0D; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java b/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java deleted file mode 100644 index d1cfc831f..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/GunRealoadable.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import org.lwjgl.input.Keyboard; - -import com.hbm.handler.HbmKeybinds; - -import api.hbm.item.IButtonReceiver; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public class GunRealoadable extends GunFrame implements IButtonReceiver { - - private IReloadBehavior reload; - public static boolean lastReload = false; - - @Override - @SideOnly(Side.CLIENT) - public void handleKeyboardInput(ItemStack stack, EntityPlayer player) { - - boolean reload = Keyboard.isKeyDown(HbmKeybinds.reloadKey.getKeyCode()); - - if(this.reload != null) { - this.reload.tryStartReload(stack, player); - } - - lastReload = reload; - } -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java b/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java deleted file mode 100644 index 1bc6e3d19..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/IReloadBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IReloadBehavior { - - public boolean tryStartReload(ItemStack stack, EntityPlayer player); - public boolean updateRelaod(ItemStack stack, EntityPlayer player); -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java b/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java deleted file mode 100644 index 6d91fce96..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/IStatusBarProvider.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.List; - -import com.hbm.util.Tuple.Triplet; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public interface IStatusBarProvider { - - public void provideBars(ItemStack stack, EntityPlayer player, List> bars); -} diff --git a/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java b/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java deleted file mode 100644 index 9a47d0664..000000000 --- a/src/main/java/com/hbm/items/weapon/gununified/StatusBarDurability.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hbm.items.weapon.gununified; - -import java.util.List; - -import com.hbm.util.Tuple.Triplet; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; - -public class StatusBarDurability implements IStatusBarProvider { - - @Override - public void provideBars(ItemStack stack, EntityPlayer player, List> bars) { - //TODO - } -} diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 4f0d2f55b..2141b15e3 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -57,8 +57,8 @@ import com.hbm.lib.HbmCollection; import com.hbm.lib.ModDamageSource; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.PermaSyncPacket; -import com.hbm.packet.PlayerInformPacket; +import com.hbm.packet.toclient.PermaSyncPacket; +import com.hbm.packet.toclient.PlayerInformPacket; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; import com.hbm.tileentity.machine.TileEntityMachineRadarNT; diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 317e05ba7..6c2efa833 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -33,7 +33,6 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.gui.GUIArmorTable; import com.hbm.inventory.gui.GUIScreenPreview; import com.hbm.inventory.gui.GUIScreenWikiRender; -import com.hbm.items.ISyncButtons; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; import com.hbm.items.armor.ArmorFSBPowered; @@ -46,10 +45,9 @@ import com.hbm.items.machine.ItemRBMKPellet; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; -import com.hbm.packet.AuxButtonPacket; -import com.hbm.packet.GunButtonPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.SyncButtonsPacket; +import com.hbm.packet.toserver.AuxButtonPacket; +import com.hbm.packet.toserver.GunButtonPacket; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.Animation; import com.hbm.render.block.ct.CTStitchReceiver; @@ -80,9 +78,6 @@ import com.hbm.util.ArmorUtil; import com.hbm.util.ArmorRegistry.HazardClass; import com.mojang.authlib.minecraft.MinecraftProfileTexture.Type; -import api.hbm.item.IButtonReceiver; -import api.hbm.item.IClickReceiver; - import com.hbm.sound.MovingSoundPlayerLoop.EnumHbmSound; import cpw.mods.fml.client.FMLClientHandler; @@ -91,7 +86,6 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent; -import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; @@ -593,15 +587,6 @@ public class ModEventHandlerClient { Item held = player.getHeldItem().getItem(); - if(held instanceof IClickReceiver) { - IClickReceiver rec = (IClickReceiver) held; - - if(rec.handleMouseInput(player.getHeldItem(), player, event.button, event.buttonstate)) { - event.setCanceled(true); - return; - } - } - if(held instanceof ItemGunBase) { if(event.button == 0) @@ -620,30 +605,6 @@ public class ModEventHandlerClient { item.startActionClient(player.getHeldItem(), player.worldObj, player, false); } } - - if(held instanceof ISyncButtons) { - ISyncButtons rec = (ISyncButtons) held; - - if(rec.canReceiveMouse(player, player.getHeldItem(), event, event.button, event.buttonstate)) { - PacketDispatcher.wrapper.sendToServer(new SyncButtonsPacket(event.buttonstate, event.button)); - } - } - } - } - - @SubscribeEvent - public void keyEvent(KeyInputEvent event) { - - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - - if(player.getHeldItem() != null) { - - Item held = player.getHeldItem().getItem(); - - if(held instanceof IButtonReceiver) { - IButtonReceiver rec = (IButtonReceiver) held; - rec.handleKeyboardInput(player.getHeldItem(), player); - } } } diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index e2dea4a51..12c8de1da 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -1,6 +1,8 @@ package com.hbm.packet; import com.hbm.lib.RefStrings; +import com.hbm.packet.toclient.*; +import com.hbm.packet.toserver.*; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.simpleimpl.SimpleNetworkWrapper; @@ -11,8 +13,7 @@ public class PacketDispatcher { //Mark 1 Packet Sending Device public static final SimpleNetworkWrapper wrapper = NetworkRegistry.INSTANCE.newSimpleChannel(RefStrings.MODID); - public static final void registerPackets() - { + public static final void registerPackets() { int i = 0; //Sound packet that keeps client and server separated @@ -71,8 +72,6 @@ public class PacketDispatcher { wrapper.registerMessage(ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.Handler.class, ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.class, i++, Side.CLIENT); //Packet to send NBT data from clients to the serverside held item wrapper.registerMessage(NBTItemControlPacket.Handler.class, NBTItemControlPacket.class, i++, Side.SERVER); - //sends a button press to the held item, assuming it is an ISyncButtons - wrapper.registerMessage(SyncButtonsPacket.Handler.class, SyncButtonsPacket.class, i++, Side.SERVER); //General syncing for global values wrapper.registerMessage(PermaSyncPacket.Handler.class, PermaSyncPacket.class, i++, Side.CLIENT); //Syncs biome information for single positions or entire chunks diff --git a/src/main/java/com/hbm/packet/SyncButtonsPacket.java b/src/main/java/com/hbm/packet/SyncButtonsPacket.java deleted file mode 100644 index b460a4141..000000000 --- a/src/main/java/com/hbm/packet/SyncButtonsPacket.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.hbm.packet; - -import com.hbm.items.ISyncButtons; - -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.network.simpleimpl.IMessage; -import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; -import cpw.mods.fml.common.network.simpleimpl.MessageContext; -import cpw.mods.fml.relauncher.Side; -import io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SyncButtonsPacket implements IMessage { - - boolean state; - int button; - - public SyncButtonsPacket() { } - - public SyncButtonsPacket(boolean s, int b) { - state = s; - button = b; - } - - @Override - public void fromBytes(ByteBuf buf) { - state = buf.readBoolean(); - button = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeBoolean(state); - buf.writeInt(button); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SyncButtonsPacket m, MessageContext ctx) { - - if(FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) - return null; - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ISyncButtons) { - - ISyncButtons item = (ISyncButtons)p.getHeldItem().getItem(); - item.receiveMouse(p, p.getHeldItem(), m.button, m.state); - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/AuxElectricityPacket.java b/src/main/java/com/hbm/packet/toclient/AuxElectricityPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/AuxElectricityPacket.java rename to src/main/java/com/hbm/packet/toclient/AuxElectricityPacket.java index 39c27e7e1..571f925ce 100644 --- a/src/main/java/com/hbm/packet/AuxElectricityPacket.java +++ b/src/main/java/com/hbm/packet/toclient/AuxElectricityPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import api.hbm.energymk2.IEnergyHandlerMK2; import cpw.mods.fml.common.network.simpleimpl.IMessage; diff --git a/src/main/java/com/hbm/packet/AuxGaugePacket.java b/src/main/java/com/hbm/packet/toclient/AuxGaugePacket.java similarity index 98% rename from src/main/java/com/hbm/packet/AuxGaugePacket.java rename to src/main/java/com/hbm/packet/toclient/AuxGaugePacket.java index 17af20444..190a7f4b4 100644 --- a/src/main/java/com/hbm/packet/AuxGaugePacket.java +++ b/src/main/java/com/hbm/packet/toclient/AuxGaugePacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.interfaces.Spaghetti; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; diff --git a/src/main/java/com/hbm/packet/AuxParticlePacket.java b/src/main/java/com/hbm/packet/toclient/AuxParticlePacket.java similarity index 97% rename from src/main/java/com/hbm/packet/AuxParticlePacket.java rename to src/main/java/com/hbm/packet/toclient/AuxParticlePacket.java index 1483e297d..317e121c0 100644 --- a/src/main/java/com/hbm/packet/AuxParticlePacket.java +++ b/src/main/java/com/hbm/packet/toclient/AuxParticlePacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.main.MainRegistry; diff --git a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java b/src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java similarity index 98% rename from src/main/java/com/hbm/packet/AuxParticlePacketNT.java rename to src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java index f3b311e3a..beace3830 100644 --- a/src/main/java/com/hbm/packet/AuxParticlePacketNT.java +++ b/src/main/java/com/hbm/packet/toclient/AuxParticlePacketNT.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; diff --git a/src/main/java/com/hbm/packet/BiomeSyncPacket.java b/src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/BiomeSyncPacket.java rename to src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java index 203ddc281..3f529e1c3 100644 --- a/src/main/java/com/hbm/packet/BiomeSyncPacket.java +++ b/src/main/java/com/hbm/packet/toclient/BiomeSyncPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/BufPacket.java b/src/main/java/com/hbm/packet/toclient/BufPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/BufPacket.java rename to src/main/java/com/hbm/packet/toclient/BufPacket.java index 7ff502c9d..2e9b32c12 100644 --- a/src/main/java/com/hbm/packet/BufPacket.java +++ b/src/main/java/com/hbm/packet/toclient/BufPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.tileentity.IBufPacketReceiver; diff --git a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java b/src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java rename to src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java index 9d0aa99c2..0a4972bfe 100644 --- a/src/main/java/com/hbm/packet/ExplosionKnockbackPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ExplosionKnockbackPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java b/src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java rename to src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java index c8300a0da..142a3fb26 100644 --- a/src/main/java/com/hbm/packet/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ExplosionVanillaNewTechnologyCompressedAffectedBlockPositionDataForClientEffectsAndParticleHandlingPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/com/hbm/packet/ExtPropPacket.java b/src/main/java/com/hbm/packet/toclient/ExtPropPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/ExtPropPacket.java rename to src/main/java/com/hbm/packet/toclient/ExtPropPacket.java index 641bc9b68..0364bf7e9 100644 --- a/src/main/java/com/hbm/packet/ExtPropPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ExtPropPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; diff --git a/src/main/java/com/hbm/packet/GunAnimationPacket.java b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/GunAnimationPacket.java rename to src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java index c744f72fd..58389f2f4 100644 --- a/src/main/java/com/hbm/packet/GunAnimationPacket.java +++ b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.items.weapon.ItemGunBase; import com.hbm.render.anim.BusAnimation; diff --git a/src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java b/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java rename to src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java index 0d364608f..f5282515a 100644 --- a/src/main/java/com/hbm/packet/LoopedEntitySoundPacket.java +++ b/src/main/java/com/hbm/packet/toclient/LoopedEntitySoundPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.entity.logic.EntityBomber; import com.hbm.sound.MovingSoundBomber; diff --git a/src/main/java/com/hbm/packet/LoopedSoundPacket.java b/src/main/java/com/hbm/packet/toclient/LoopedSoundPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/LoopedSoundPacket.java rename to src/main/java/com/hbm/packet/toclient/LoopedSoundPacket.java index 0312680a0..5533245d1 100644 --- a/src/main/java/com/hbm/packet/LoopedSoundPacket.java +++ b/src/main/java/com/hbm/packet/toclient/LoopedSoundPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.interfaces.Spaghetti; import com.hbm.sound.*; diff --git a/src/main/java/com/hbm/packet/NBTPacket.java b/src/main/java/com/hbm/packet/toclient/NBTPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/NBTPacket.java rename to src/main/java/com/hbm/packet/toclient/NBTPacket.java index 3bd5afbcb..65b15e8af 100644 --- a/src/main/java/com/hbm/packet/NBTPacket.java +++ b/src/main/java/com/hbm/packet/toclient/NBTPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; @@ -14,7 +14,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.PacketBuffer; import net.minecraft.tileentity.TileEntity; - @Deprecated // rest in peace sweet little prince public class NBTPacket implements IMessage { diff --git a/src/main/java/com/hbm/packet/ParticleBurstPacket.java b/src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/ParticleBurstPacket.java rename to src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java index c6b58a8b7..6be55c831 100644 --- a/src/main/java/com/hbm/packet/ParticleBurstPacket.java +++ b/src/main/java/com/hbm/packet/toclient/ParticleBurstPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/PermaSyncPacket.java b/src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java similarity index 94% rename from src/main/java/com/hbm/packet/PermaSyncPacket.java rename to src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java index 2415e3696..dcf7ee365 100644 --- a/src/main/java/com/hbm/packet/PermaSyncPacket.java +++ b/src/main/java/com/hbm/packet/toclient/PermaSyncPacket.java @@ -1,4 +1,6 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; + +import com.hbm.packet.PermaSyncHandler; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; diff --git a/src/main/java/com/hbm/packet/PlayerInformPacket.java b/src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/PlayerInformPacket.java rename to src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java index 01bb8b599..0cdb23d20 100644 --- a/src/main/java/com/hbm/packet/PlayerInformPacket.java +++ b/src/main/java/com/hbm/packet/toclient/PlayerInformPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.main.MainRegistry; diff --git a/src/main/java/com/hbm/packet/SatPanelPacket.java b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/SatPanelPacket.java rename to src/main/java/com/hbm/packet/toclient/SatPanelPacket.java index 89252d7e1..3a1a343d3 100644 --- a/src/main/java/com/hbm/packet/SatPanelPacket.java +++ b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import java.io.IOException; diff --git a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java b/src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEDoorAnimationPacket.java rename to src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java index 7321aa015..3511f0d07 100644 --- a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEDoorAnimationPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.interfaces.IAnimatedDoor; diff --git a/src/main/java/com/hbm/packet/TEFFPacket.java b/src/main/java/com/hbm/packet/toclient/TEFFPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEFFPacket.java rename to src/main/java/com/hbm/packet/toclient/TEFFPacket.java index 4549dfc11..26de5bd91 100644 --- a/src/main/java/com/hbm/packet/TEFFPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEFFPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.tileentity.machine.TileEntityForceField; import cpw.mods.fml.common.network.simpleimpl.IMessage; diff --git a/src/main/java/com/hbm/packet/TEMissileMultipartPacket.java b/src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEMissileMultipartPacket.java rename to src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java index 9bf955906..e25d5bbac 100644 --- a/src/main/java/com/hbm/packet/TEMissileMultipartPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEMissileMultipartPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.handler.MissileStruct; import com.hbm.tileentity.bomb.TileEntityCompactLauncher; diff --git a/src/main/java/com/hbm/packet/TESirenPacket.java b/src/main/java/com/hbm/packet/toclient/TESirenPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TESirenPacket.java rename to src/main/java/com/hbm/packet/toclient/TESirenPacket.java index bdd3d0ea0..8e6f79825 100644 --- a/src/main/java/com/hbm/packet/TESirenPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TESirenPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.items.machine.ItemCassette.SoundType; import com.hbm.items.machine.ItemCassette.TrackType; diff --git a/src/main/java/com/hbm/packet/TEVaultPacket.java b/src/main/java/com/hbm/packet/toclient/TEVaultPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/TEVaultPacket.java rename to src/main/java/com/hbm/packet/toclient/TEVaultPacket.java index 2b0139e92..84721d0b9 100644 --- a/src/main/java/com/hbm/packet/TEVaultPacket.java +++ b/src/main/java/com/hbm/packet/toclient/TEVaultPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toclient; import com.hbm.tileentity.machine.TileEntityBlastDoor; import com.hbm.tileentity.machine.TileEntityVaultDoor; diff --git a/src/main/java/com/hbm/packet/AnvilCraftPacket.java b/src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/AnvilCraftPacket.java rename to src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java index d8b1049a4..1a33e48a6 100644 --- a/src/main/java/com/hbm/packet/AnvilCraftPacket.java +++ b/src/main/java/com/hbm/packet/toserver/AnvilCraftPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; diff --git a/src/main/java/com/hbm/packet/AuxButtonPacket.java b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/AuxButtonPacket.java rename to src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java index c80dfd5ef..7f41feeb1 100644 --- a/src/main/java/com/hbm/packet/AuxButtonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/AuxButtonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.config.MobConfig; import com.hbm.entity.mob.EntityDuck; diff --git a/src/main/java/com/hbm/packet/GunButtonPacket.java b/src/main/java/com/hbm/packet/toserver/GunButtonPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/GunButtonPacket.java rename to src/main/java/com/hbm/packet/toserver/GunButtonPacket.java index a9688de1d..0dc5f0e99 100644 --- a/src/main/java/com/hbm/packet/GunButtonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/GunButtonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.weapon.ItemGunBase; diff --git a/src/main/java/com/hbm/packet/ItemBobmazonPacket.java b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/ItemBobmazonPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java index c665f8891..9866b4596 100644 --- a/src/main/java/com/hbm/packet/ItemBobmazonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.util.Random; diff --git a/src/main/java/com/hbm/packet/ItemDesignatorPacket.java b/src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/ItemDesignatorPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java index 126325b16..8acdcc808 100644 --- a/src/main/java/com/hbm/packet/ItemDesignatorPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemDesignatorPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ModItems; diff --git a/src/main/java/com/hbm/packet/ItemFolderPacket.java b/src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java similarity index 99% rename from src/main/java/com/hbm/packet/ItemFolderPacket.java rename to src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java index 7f70ce19a..e6258ba19 100644 --- a/src/main/java/com/hbm/packet/ItemFolderPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemFolderPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.AssemblerRecipes; diff --git a/src/main/java/com/hbm/packet/KeybindPacket.java b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java similarity index 84% rename from src/main/java/com/hbm/packet/KeybindPacket.java rename to src/main/java/com/hbm/packet/toserver/KeybindPacket.java index 3b3f2a80c..cc57de872 100644 --- a/src/main/java/com/hbm/packet/KeybindPacket.java +++ b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java @@ -1,6 +1,6 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; -import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds; import com.hbm.handler.HbmKeybinds.EnumKeybind; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -39,9 +39,7 @@ public class KeybindPacket implements IMessage { public IMessage onMessage(KeybindPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - HbmPlayerProps props = HbmPlayerProps.getData(p); - - props.setKeyPressed(EnumKeybind.values()[m.key], m.pressed); + HbmKeybinds.onPressedServer(p, EnumKeybind.values()[m.key], m.pressed); return null; } diff --git a/src/main/java/com/hbm/packet/NBTControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTControlPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/NBTControlPacket.java rename to src/main/java/com/hbm/packet/toserver/NBTControlPacket.java index 226b3eae1..52ca6261c 100644 --- a/src/main/java/com/hbm/packet/NBTControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTControlPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.io.IOException; diff --git a/src/main/java/com/hbm/packet/NBTItemControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java similarity index 98% rename from src/main/java/com/hbm/packet/NBTItemControlPacket.java rename to src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java index 7f03f6894..3bae1121a 100644 --- a/src/main/java/com/hbm/packet/NBTItemControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import java.io.IOException; diff --git a/src/main/java/com/hbm/packet/SatCoordPacket.java b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/SatCoordPacket.java rename to src/main/java/com/hbm/packet/toserver/SatCoordPacket.java index 0d165165d..b36ef3245 100644 --- a/src/main/java/com/hbm/packet/SatCoordPacket.java +++ b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; diff --git a/src/main/java/com/hbm/packet/SatLaserPacket.java b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java similarity index 97% rename from src/main/java/com/hbm/packet/SatLaserPacket.java rename to src/main/java/com/hbm/packet/toserver/SatLaserPacket.java index 1dc430a7b..9b0bacea8 100644 --- a/src/main/java/com/hbm/packet/SatLaserPacket.java +++ b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java @@ -1,4 +1,4 @@ -package com.hbm.packet; +package com.hbm.packet.toserver; import com.hbm.items.ISatChip; import com.hbm.items.tool.ItemSatInterface; diff --git a/src/main/java/com/hbm/particle/helper/IParticleCreator.java b/src/main/java/com/hbm/particle/helper/IParticleCreator.java index 2dbae2da1..f55ef2f05 100644 --- a/src/main/java/com/hbm/particle/helper/IParticleCreator.java +++ b/src/main/java/com/hbm/particle/helper/IParticleCreator.java @@ -2,8 +2,8 @@ package com.hbm.particle.helper; import java.util.Random; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java index aa8e186e4..418636da7 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponGlass.java @@ -3,7 +3,7 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; import com.hbm.handler.BulletConfiguration; -import com.hbm.items.weapon.gununified.ItemEnergyGunBase; +import com.hbm.items.weapon.ItemEnergyGunBase; import com.hbm.main.ResourceManager; import net.minecraft.client.Minecraft; diff --git a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java index 688962e83..04d1fe52a 100644 --- a/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java +++ b/src/main/java/com/hbm/tileentity/IBufPacketReceiver.java @@ -1,7 +1,7 @@ package com.hbm.tileentity; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java b/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java index fa230a3ba..a22b501e8 100644 --- a/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java +++ b/src/main/java/com/hbm/tileentity/INBTPacketReceiver.java @@ -1,7 +1,7 @@ package com.hbm.tileentity; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index a8f856310..d05ac0843 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -10,7 +10,7 @@ import com.hbm.interfaces.IAnimatedDoor; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEDoorAnimationPacket; +import com.hbm.packet.toclient.TEDoorAnimationPacket; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.machine.TileEntityLockableBase; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index d9a17469d..d34c5ee38 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -1,9 +1,9 @@ package com.hbm.tileentity; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.BufPacket; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxGaugePacket; +import com.hbm.packet.toclient.BufPacket; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java index 1d1871c2e..bfd9a6ced 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityTickingBase.java @@ -1,8 +1,8 @@ package com.hbm.tileentity; -import com.hbm.packet.BufPacket; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; +import com.hbm.packet.toclient.NBTPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import io.netty.buffer.ByteBuf; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java index 6467ac91e..0577276c8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCharge.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.bomb; import com.hbm.blocks.bomb.BlockChargeBase; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.tileentity.INBTPacketReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java index 25ad4ef2a..60b75b91f 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCompactLauncher.java @@ -16,9 +16,9 @@ import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.BufPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java index be34e001c..ed97928b7 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityFireworks.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.bomb; import com.hbm.entity.item.EntityFireworks; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 67db230ec..e9e8ef8d2 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -17,9 +17,9 @@ import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartSize; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.BufPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java index 122e52ba3..ac6bfec24 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityGeysir.java @@ -7,8 +7,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.entity.particle.EntityOrangeFX; import com.hbm.entity.projectile.EntityShrapnel; import com.hbm.entity.projectile.EntityWaterSplash; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java index e13795a69..d22bd4150 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.DummyBlockBlast; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEVaultPacket; +import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java index 0c580bf65..744e3bab9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBroadcaster.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.LoopedSoundPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index 0ab6d68b2..254554c45 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -13,8 +13,8 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Coolable; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.main.MainRegistry; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 1fb87fc69..3e2450404 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -18,8 +18,8 @@ import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.CrucibleRecipes; import com.hbm.inventory.recipes.CrucibleRecipes.CrucibleRecipe; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index 18cf9f14a..aa1db0589 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -23,8 +23,8 @@ import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecip import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java index 417c24894..91d89b53e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityForceField.java @@ -8,7 +8,7 @@ import com.hbm.inventory.gui.GUIForceField; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEFFPacket; +import com.hbm.packet.toclient.TEFFPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java index 1414283fe..8c795202b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundryOutlet.java @@ -2,8 +2,8 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.inventory.material.NTMMaterial; import com.hbm.util.CrucibleUtil; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java index ba297333f..ecf625688 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.inventory.material.Mats.MaterialStack; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.Compat; import api.hbm.block.ICrucibleAcceptor; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 167f550c8..acd6246fb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -15,8 +15,8 @@ import com.hbm.inventory.recipes.HadronRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityHadronDiode.DiodeConfig; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java index f044f3fad..d4b0ff25f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadronPower.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.machine.BlockHadronPower; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java index 4f4c3d65d..62d4ae6a7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityICF.java @@ -11,8 +11,8 @@ import com.hbm.inventory.gui.GUIICF; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemICFPellet; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CompatEnergyControl; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 9b0a0ed60..714f7471b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -21,8 +21,8 @@ import com.hbm.items.ModItems; import com.hbm.items.special.ItemFusionShield; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java index 2162cfeb8..bff0afcdb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnace.java @@ -6,9 +6,9 @@ import com.hbm.inventory.container.ContainerMachineArcFurnace; import com.hbm.inventory.gui.GUIMachineArcFurnace; import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxElectricityPacket; +import com.hbm.packet.toclient.AuxGaugePacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java index abd5b4ec2..c1e92720a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcFurnaceLarge.java @@ -21,8 +21,8 @@ import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 6a3132006..5eb5af98f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -14,8 +14,8 @@ import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IConditionalInvAccess; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java index 3ec39159b..ab03bac81 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutosaw.java @@ -9,8 +9,8 @@ import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java index 9a6dc8f21..e14c4060b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDrain.java @@ -12,8 +12,8 @@ import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.fauxpointtwelve.DirPos; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java index b3179241c..92fb4d7a7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineGasCent.java @@ -11,8 +11,8 @@ import com.hbm.inventory.recipes.GasCentrifugeRecipes.PseudoFluidType; import com.hbm.items.ModItems; import com.hbm.items.machine.IItemFluidIdentifier; import com.hbm.lib.Library; -import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.LoopedSoundPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BufferUtil; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index 4ffd642d6..9560bbd23 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -8,7 +8,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart; import com.hbm.items.weapon.ItemCustomMissilePart.FuelType; import com.hbm.items.weapon.ItemCustomMissilePart.PartType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEMissileMultipartPacket; +import com.hbm.packet.toclient.TEMissileMultipartPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java index 90e1ec36e..4d6aad8ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineOreSlopper.java @@ -18,8 +18,8 @@ import com.hbm.items.special.ItemBedrockOreNew.BedrockOreType; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index 56ab3442f..6172e954e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -4,8 +4,8 @@ import com.hbm.config.VersatileConfig; import com.hbm.inventory.container.ContainerMachineRTG; import com.hbm.inventory.gui.GUIMachineRTG; import com.hbm.items.machine.ItemRTGPellet; -import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxElectricityPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.CompatEnergyControl; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 0eb956fe3..219971f9f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -18,8 +18,8 @@ import com.hbm.items.ModItems; import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteHorizons; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java index ba08f0d82..f4dfafdd3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarScreen.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import api.hbm.entity.RadarEntry; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java index 9ac85cf5c..53cf6a7d4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineShredder.java @@ -5,8 +5,8 @@ import com.hbm.inventory.gui.GUIMachineShredder; import com.hbm.inventory.recipes.ShredderRecipes; import com.hbm.items.machine.ItemBlades; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxElectricityPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java index a2ebd812f..9cd3671b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSiren.java @@ -8,7 +8,7 @@ import com.hbm.items.machine.ItemCassette; import com.hbm.items.machine.ItemCassette.SoundType; import com.hbm.items.machine.ItemCassette.TrackType; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TESirenPacket; +import com.hbm.packet.toclient.TESirenPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 3ccf6ef70..b085ee613 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -14,8 +14,8 @@ import com.hbm.inventory.recipes.SolderingRecipes.SolderingRecipe; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 71caf6423..235cc9c1f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -11,8 +11,8 @@ import com.hbm.inventory.material.Mats; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMold; import com.hbm.items.machine.ItemScraps; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.util.fauxpointtwelve.DirPos; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index d0e1306bc..875a2698e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -18,8 +18,8 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java index f0b6a5500..cd7a8ad37 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java @@ -8,8 +8,8 @@ import com.hbm.entity.projectile.EntitySawblade; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter.InventoryCraftingAuto; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index c2803d6c6..6ed4b7556 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -5,8 +5,8 @@ import java.util.HashSet; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java index 8ca80eb24..8fa592af5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.DummyBlockVault; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.TEVaultPacket; +import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index 9168d4387..a7ebcfd70 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -18,8 +18,8 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemWatzPellet; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java b/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java index 4fb2be3ef..562109830 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityZirnoxDestroyed.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine; import java.util.List; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index 9052dd9fc..527b14b1a 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -5,8 +5,8 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.FractionRecipes; import com.hbm.lib.Library; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index 15233ad0c..288faa0ea 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.block.IPileNeutronReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 57bc990bc..cf1d2d8bf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -6,8 +6,8 @@ import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.CompatHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.machine.ItemRBMKRod; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.tileentity.INBTPacketReceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index 44703c013..9adb5b1a8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -9,9 +9,9 @@ import com.hbm.entity.effect.EntitySpear; import com.hbm.entity.projectile.EntityRBMKDebris; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.IOverpressurable; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java index 7c6278c84..5b2e0b519 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKSlottedBase.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.machine.rbmk; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java index fc1451df5..42122c5ed 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityFileCabinet.java @@ -2,8 +2,8 @@ package com.hbm.tileentity.machine.storage; import com.hbm.inventory.container.ContainerFileCabinet; import com.hbm.inventory.gui.GUIFileCabinet; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IGUIProvider; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 51a133253..6d20ef764 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -19,8 +19,8 @@ import com.hbm.inventory.gui.GUIMachineFluidTank; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.IPersistentNBT; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java index cb08c5bb8..33b68fc4e 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityDroneWaypoint.java @@ -4,8 +4,8 @@ import java.util.List; import com.hbm.entity.item.EntityDeliveryDrone; import com.hbm.util.ParticleUtil; -import com.hbm.packet.BufPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BufPacket; import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.util.fauxpointtwelve.BlockPos; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java index 71fc659f9..28c66c658 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRequestNetworkContainer.java @@ -1,7 +1,7 @@ package com.hbm.tileentity.network; -import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.NBTPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 156472346..b598e0a99 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -11,8 +11,8 @@ import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemAmmoArty; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.Optional; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 2ec8a6b26..6cea0933e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -21,8 +21,8 @@ import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemTurretBiometry; import com.hbm.lib.Library; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java index 6ca6c4e35..64f329a79 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretChekhov.java @@ -7,8 +7,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretChekhov; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 924ec352c..cf55b19c6 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -15,8 +15,8 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUITurretFritz; import com.hbm.items.ModItems; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 5afbd8afa..f726cdff3 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -10,8 +10,8 @@ import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.SpentCasing; import com.hbm.util.EntityDamageUtil; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java index 26536ffb5..c3e9d7655 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHowardDamaged.java @@ -3,8 +3,8 @@ package com.hbm.tileentity.turret; import com.hbm.config.WeaponConfig; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.util.EntityDamageUtil; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index f89b81cbd..e5c323f2b 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -7,8 +7,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java index 91dc3e9ab..43dacb564 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretMaxwell.java @@ -8,8 +8,8 @@ import com.hbm.inventory.gui.GUITurretMaxwell; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.potion.HbmPotion; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.util.BobMathUtil; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java index 09b8d22ee..76420c588 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentry.java @@ -8,8 +8,8 @@ import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.inventory.container.ContainerTurretBase; import com.hbm.inventory.gui.GUITurretSentry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java index acb7898cb..bc3dc51ff 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretSentryDamaged.java @@ -2,8 +2,8 @@ package com.hbm.tileentity.turret; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java index d25acbc74..10d95d561 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretTauon.java @@ -7,8 +7,8 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.gui.GUITurretTauon; import com.hbm.lib.ModDamageSource; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/hbm/util/ParticleUtil.java b/src/main/java/com/hbm/util/ParticleUtil.java index 45898c14d..2c654de56 100644 --- a/src/main/java/com/hbm/util/ParticleUtil.java +++ b/src/main/java/com/hbm/util/ParticleUtil.java @@ -1,8 +1,8 @@ package com.hbm.util; import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; diff --git a/src/main/java/com/hbm/world/WorldUtil.java b/src/main/java/com/hbm/world/WorldUtil.java index b06cf9d86..4f23a6865 100644 --- a/src/main/java/com/hbm/world/WorldUtil.java +++ b/src/main/java/com/hbm/world/WorldUtil.java @@ -1,7 +1,8 @@ package com.hbm.world; -import com.hbm.packet.BiomeSyncPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.BiomeSyncPacket; + import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.Entity; import net.minecraft.util.MathHelper; From a3c56e0a11970fc017f11405a3a69a65a2caadf8 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 3 Sep 2024 16:00:41 +0200 Subject: [PATCH 06/20] gun stuff --- changelog | 1 + .../hbm/items/weapon/sedna/BulletConfig.java | 20 +++++++ .../com/hbm/items/weapon/sedna/GunConfig.java | 5 ++ .../hbm/items/weapon/sedna/ItemGunBase.java | 54 +++++++++++++++++++ .../items/weapon/sedna/mags/IMagazine.java | 5 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 +- 7 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/GunConfig.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java diff --git a/changelog b/changelog index 767fe5efe..575a54ee4 100644 --- a/changelog +++ b/changelog @@ -5,6 +5,7 @@ * Removed forgotten bricks * Updated CMB brick texture * The ICF machine block now renders with its 3d model in the creative inventory +* "Toggle backpack" keybind is now called "toggle jetpack" to reduce confusion ## Fixed * Fixed pumpjack gauges not syncing properly diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java new file mode 100644 index 000000000..4d1be717c --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -0,0 +1,20 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.inventory.RecipesCommon.ComparableStack; + +public class BulletConfig { + + public ComparableStack ammo; + public int ammoCount = 1; + public float velocity = 5F; + public float spread = 0F; + public float wear = 1F; + public int projectilesMin; + public int projectilesMax; + + public float damageMult = 1.0F; + public float headshotMult = 1.0F; + + public double gravity = 0; + public int expires = 100; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java new file mode 100644 index 000000000..02edce2a9 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -0,0 +1,5 @@ +package com.hbm.items.weapon.sedna; + +public class GunConfig { + // ??? +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java new file mode 100644 index 000000000..666c92bde --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -0,0 +1,54 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.IKeybindReceiver; +import com.hbm.util.EnumUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemGunBase implements IKeybindReceiver { + + public static final String KEY_TIMER = "timer"; + public static final String KEY_STATE = "state"; + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_TYPE = "magtype"; + + public static enum GunState { + IDLE, //gun can be fired or reloaded + WINDUP, //fire button is down, added delay before fire + JUST_FIRED, //gun has been fired, cooldown + RELOADING //gun is currently reloading + } + + @Override + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { + + } + + //TODO: move into the IMagazine impl + /*// MAG TYPE // + public static int getMagType(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_TYPE + index); } + public static void setMagType(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_TYPE + index, value); } + + // MAG COUNT // + public static int getMagCount(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_COUNT + index, value); }*/ + + // GUN STATE TIMER // + public static int getTimer(ItemStack stack) { return getValueInt(stack, KEY_TIMER); } + public static void setTimer(ItemStack stack, int value) { setValueInt(stack, KEY_TIMER, value); } + + // GUN STATE // + public static GunState getState(ItemStack stack) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE)); } + public static void setState(ItemStack stack, GunState value) { setValueByte(stack, KEY_STATE, (byte) value.ordinal()); } + + + /// UTIL /// + public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getInteger(name); return 0; } + public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); } + + public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getByte(name); return 0; } + public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java new file mode 100644 index 000000000..85998ca8f --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -0,0 +1,5 @@ +package com.hbm.items.weapon.sedna.mags; + +public interface IMagazine { + +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 026f86d95..9a0f2e0cc 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -654,7 +654,7 @@ hbm.key.craneMoveDown=Kran rückwärts hbm.key.craneMoveLeft=Kran nach links hbm.key.craneMoveRight=Kran nach rechts hbm.key.craneMoveUp=Kran vorwärts -hbm.key.toggleBack=Rucksack umschalten +hbm.key.toggleBack=Jetpack umschalten hbm.key.toggleHUD=HUD umschalten hbm.key.reload=Nachladen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 336ad59dc..2e7c34e4a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1350,7 +1350,7 @@ hbm.key.craneMoveLeft=Move Crane Left hbm.key.craneMoveRight=Move Crane Right hbm.key.craneMoveUp=Move Crane Forward hbm.key.dash=Dash (Unbind from Crouch in config) -hbm.key.toggleBack=Toggle Backpack +hbm.key.toggleBack=Toggle Jetpack hbm.key.toggleHUD=Toggle HUD hbm.key.reload=Reload From d227c9d89b195dd4a70f9a6efed0e6638fa28818 Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 3 Sep 2024 22:45:18 +0200 Subject: [PATCH 07/20] more gun crap --- .../java/com/hbm/handler/HbmKeybinds.java | 8 ++- .../hbm/items/weapon/sedna/BulletConfig.java | 16 +++++- .../com/hbm/items/weapon/sedna/GunConfig.java | 32 +++++++++++- .../hbm/items/weapon/sedna/ItemGunBase.java | 11 ---- .../com/hbm/items/weapon/sedna/Receiver.java | 20 ++++++++ .../items/weapon/sedna/mags/IMagazine.java | 14 +++++ .../sedna/mags/MagazineStandardBase.java | 51 +++++++++++++++++++ .../hbm/items/weapon/sedna/package-info.java | 24 +++++++++ 8 files changed, 160 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/Receiver.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/package-info.java diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 1c2e4483b..ee460eda8 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -86,13 +86,17 @@ public class HbmKeybinds { JETPACK, TOGGLE_JETPACK, TOGGLE_HEAD, - RELOAD, DASH, TRAIN, CRANE_UP, CRANE_DOWN, CRANE_LEFT, CRANE_RIGHT, - CRANE_LOAD + CRANE_LOAD, + + GUN_PRIMARY, + GUN_SECONDARY, + GUN_TERITARY, + RELOAD, } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 4d1be717c..ce49ad85d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -1,20 +1,32 @@ package com.hbm.items.weapon.sedna; +import java.util.ArrayList; +import java.util.List; + import com.hbm.inventory.RecipesCommon.ComparableStack; public class BulletConfig { + public static List configs = new ArrayList(); + + public final int id; + public ComparableStack ammo; public int ammoCount = 1; public float velocity = 5F; public float spread = 0F; public float wear = 1F; - public int projectilesMin; - public int projectilesMax; + public int projectilesMin = 1; + public int projectilesMax = 1; public float damageMult = 1.0F; public float headshotMult = 1.0F; public double gravity = 0; public int expires = 100; + + public BulletConfig() { + this.id = configs.size(); + configs.add(this); + } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 02edce2a9..51fe69541 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -1,5 +1,35 @@ package com.hbm.items.weapon.sedna; +import java.util.function.Function; + +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.util.Tuple.Triplet; + +import net.minecraft.item.ItemStack; + public class GunConfig { - // ??? + + /** List of receivers used by the gun, primary and secondary are usually indices 0 and 1 respectively, if applicable */ + public Receiver[] receivers; + public float durability; + /** Lambda function that determines what receiver the gun should use when a keybind is hit */ + public Function, Receiver> receiverDecider; + + public GunConfig setReceivers(Receiver... receivers) { + this.receivers = receivers; + return this; + } + + public Receiver getReceiver(ItemStack stack, EnumKeybind keybind) { + + if(receiverDecider != null) { + return receiverDecider.apply(new Triplet(stack, keybind, this)); + } + + return null; + } + + /* Standard implementations for receiver deciders */ + public static Function, Receiver> receiverDeciderSingle = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : null; }; + public static Function, Receiver> receiverDeciderDouble = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : x.getY() == EnumKeybind.GUN_SECONDARY ? x.getZ().receivers[1] : null; }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java index 666c92bde..d094b5fe3 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -12,8 +12,6 @@ public class ItemGunBase implements IKeybindReceiver { public static final String KEY_TIMER = "timer"; public static final String KEY_STATE = "state"; - public static final String KEY_MAG_COUNT = "magcount"; - public static final String KEY_MAG_TYPE = "magtype"; public static enum GunState { IDLE, //gun can be fired or reloaded @@ -27,15 +25,6 @@ public class ItemGunBase implements IKeybindReceiver { } - //TODO: move into the IMagazine impl - /*// MAG TYPE // - public static int getMagType(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_TYPE + index); } - public static void setMagType(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_TYPE + index, value); } - - // MAG COUNT // - public static int getMagCount(ItemStack stack, int index) { return getValueInt(stack, KEY_MAG_COUNT + index); } - public static void setMagCount(ItemStack stack, int index, int value) { setValueInt(stack, KEY_MAG_COUNT + index, value); }*/ - // GUN STATE TIMER // public static int getTimer(ItemStack stack) { return getValueInt(stack, KEY_TIMER); } public static void setTimer(ItemStack stack, int value) { setValueInt(stack, KEY_TIMER, value); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java new file mode 100644 index 000000000..d74f88ca8 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -0,0 +1,20 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.items.weapon.sedna.mags.IMagazine; + +public class Receiver { + + protected float baseDamage; + protected int delayAfterFire; + protected int roundsPerCycle = 1; + protected boolean refireOnHold = false; + protected int burstSize = 1; + protected int delayAfterBurst; + + protected IMagazine magazine; + + public Receiver setMag(IMagazine magazine) { + this.magazine = magazine; + return this; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java index 85998ca8f..1a0aeaeec 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -1,5 +1,19 @@ package com.hbm.items.weapon.sedna.mags; +import net.minecraft.item.ItemStack; + public interface IMagazine { + /** What ammo is loaded currently */ + public Object getType(ItemStack stack); + /** How much ammo this mag can carry */ + public int getCapacity(ItemStack stack); + /** How much ammo is currently loaded */ + public int getAmount(ItemStack stack); + /** Sets the mag's ammo level */ + public void setAmount(ItemStack stack, int amount); + /** The action done at the end of one reload cycle, either loading one shell or replacing the whole mag */ + public void reloadAction(ItemStack stack); + /** The stack that should be displayed for the ammo HUD */ + public ItemStack getIcon(ItemStack stack); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java new file mode 100644 index 000000000..09875ffe5 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java @@ -0,0 +1,51 @@ +package com.hbm.items.weapon.sedna.mags; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.Receiver; + +import net.minecraft.item.ItemStack; + +/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item */ +public abstract class MagazineStandardBase implements IMagazine { + + public static final String KEY_MAG_COUNT = "magcount"; + public static final String KEY_MAG_TYPE = "magtype"; + + protected List acceptedBullets = new ArrayList(); + + /** A number so the gun tell multiple mags apart */ + public int index; + /** How much ammo this mag can hold */ + public int capacity; + public Receiver parent; + + public MagazineStandardBase(int index, int capacity) { + this.index = index; + this.capacity = capacity; + } + + @Override + public Object getType(ItemStack stack) { + int type = getMagType(stack, index); + if(type >= 0 && type < BulletConfig.configs.size()) { + return BulletConfig.configs.get(type); + } + return null; + } + + @Override public int getCapacity(ItemStack stack) { return capacity; } + @Override public int getAmount(ItemStack stack) { return getMagCount(stack, index); } + @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } + + // MAG TYPE // + public static int getMagType(ItemStack stack, int index) { return ItemGunBase.getValueInt(stack, KEY_MAG_TYPE + index); } + public static void setMagType(ItemStack stack, int index, int value) { ItemGunBase.setValueInt(stack, KEY_MAG_TYPE + index, value); } + + // MAG COUNT // + public static int getMagCount(ItemStack stack, int index) { return ItemGunBase.getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBase.setValueInt(stack, KEY_MAG_COUNT + index, value); } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/package-info.java b/src/main/java/com/hbm/items/weapon/sedna/package-info.java new file mode 100644 index 000000000..a23713eca --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/package-info.java @@ -0,0 +1,24 @@ +/** + * + */ +/** + * @author hbm + * + */ +package com.hbm.items.weapon.sedna; + +/* + +The MK2 unified gun system SEDNA + +ItemGunBase - NBT, timer, keybind handling + | GunConfig (1) - durability and sights + | Receiver (n) - base damage, fire modes + | Magazine (1) - NBT, reload management + | BulletConfig (n) - ammo stats + +Based on this system, alt fire that should logically use the same receiver actually use two different receivers, and +by extension two different mag fields. In this case, make sure to use the same mag instance (or an identical one) +on either receiver to ensure that both receivers access the same ammo pool and accept the same ammo types. + +*/ \ No newline at end of file From c64ca0d40c15a160b48cc53e2e827b42340db642 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 4 Sep 2024 16:48:58 +0200 Subject: [PATCH 08/20] more gun code --- src/main/java/com/hbm/blocks/ModBlocks.java | 15 ++++---- .../java/com/hbm/handler/HbmKeybinds.java | 30 ++++++---------- .../com/hbm/handler/HbmKeybindsServer.java | 25 ++++++++++++++ .../com/hbm/items/weapon/sedna/GunConfig.java | 21 +++++++++--- .../hbm/items/weapon/sedna/ItemGunBase.java | 34 +++++++++++++++++++ src/main/java/com/hbm/main/ClientProxy.java | 3 ++ src/main/java/com/hbm/main/MainRegistry.java | 1 + .../hbm/packet/toserver/KeybindPacket.java | 4 +-- 8 files changed, 98 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/hbm/handler/HbmKeybindsServer.java diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 7a1a9f6e2..46eec14fd 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -893,7 +893,6 @@ public class ModBlocks { public static Block watz_element; public static Block watz_cooler; public static Block watz_end; - public static Block watz_conductor; public static Block balefire; public static Block fire_digamma; @@ -1997,7 +1996,6 @@ public class ModBlocks { watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); - watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -3310,6 +3308,12 @@ public class ModBlocks { GameRegistry.registerBlock(plasma, ItemBlockLore.class, plasma.getUnlocalizedName()); GameRegistry.registerBlock(iter, iter.getUnlocalizedName()); GameRegistry.registerBlock(plasma_heater, plasma_heater.getUnlocalizedName()); + + register(watz_element); + register(watz_cooler); + register(watz_end); + register(watz); + register(watz_pump); register(machine_icf_press); register(icf_laser_component); @@ -3317,13 +3321,6 @@ public class ModBlocks { register(icf_block); register(icf_component); register(icf); - - GameRegistry.registerBlock(watz_element, watz_element.getUnlocalizedName()); - GameRegistry.registerBlock(watz_cooler, watz_cooler.getUnlocalizedName()); - register(watz_end); - GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); - GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); - GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); //E GameRegistry.registerBlock(balefire, balefire.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index ee460eda8..7aa5525b1 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -1,7 +1,6 @@ package com.hbm.handler; import com.hbm.inventory.gui.GUICalculator; -import com.hbm.items.IKeybindReceiver; import cpw.mods.fml.common.FMLCommonHandler; import org.lwjgl.input.Keyboard; @@ -15,8 +14,6 @@ import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import net.minecraft.client.settings.KeyBinding; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; public class HbmKeybinds { @@ -25,10 +22,14 @@ public class HbmKeybinds { public static KeyBinding calculatorKey = new KeyBinding(category + ".calculator", Keyboard.KEY_N, category); public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); - public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category); public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category); + public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); + public static KeyBinding gunPrimaryKey = new KeyBinding(category + ".gunPrimary", -100, category); + public static KeyBinding gunSecondaryKey = new KeyBinding(category + ".gunSecondary", -99, category); + public static KeyBinding gunTertiaryKey = new KeyBinding(category + ".gunTertitary", -98, category); + public static KeyBinding craneUpKey = new KeyBinding(category + ".craneMoveUp", Keyboard.KEY_UP, category); public static KeyBinding craneDownKey = new KeyBinding(category + ".craneMoveDown", Keyboard.KEY_DOWN, category); public static KeyBinding craneLeftKey = new KeyBinding(category + ".craneMoveLeft", Keyboard.KEY_LEFT, category); @@ -39,10 +40,14 @@ public class HbmKeybinds { ClientRegistry.registerKeyBinding(calculatorKey); ClientRegistry.registerKeyBinding(jetpackKey); ClientRegistry.registerKeyBinding(hudKey); - ClientRegistry.registerKeyBinding(reloadKey); ClientRegistry.registerKeyBinding(dashKey); ClientRegistry.registerKeyBinding(trainKey); + ClientRegistry.registerKeyBinding(reloadKey); + ClientRegistry.registerKeyBinding(gunPrimaryKey); + ClientRegistry.registerKeyBinding(gunSecondaryKey); + ClientRegistry.registerKeyBinding(gunTertiaryKey); + ClientRegistry.registerKeyBinding(craneUpKey); ClientRegistry.registerKeyBinding(craneDownKey); ClientRegistry.registerKeyBinding(craneLeftKey); @@ -68,19 +73,6 @@ public class HbmKeybinds { } } } - - public static void onPressedServer(EntityPlayer player, EnumKeybind key, boolean state) { - - // EXTPROP HANDLING - HbmPlayerProps props = HbmPlayerProps.getData(player); - props.setKeyPressed(key, state); - - // ITEM HANDLING - ItemStack held = player.getHeldItem(); - if(held != null && held.getItem() instanceof IKeybindReceiver) { - ((IKeybindReceiver) held.getItem()).handleKeybind(player, held, key, state); - } - } public static enum EnumKeybind { JETPACK, @@ -96,7 +88,7 @@ public class HbmKeybinds { GUN_PRIMARY, GUN_SECONDARY, - GUN_TERITARY, + GUN_TERTIARY, RELOAD, } } diff --git a/src/main/java/com/hbm/handler/HbmKeybindsServer.java b/src/main/java/com/hbm/handler/HbmKeybindsServer.java new file mode 100644 index 000000000..46b76a22c --- /dev/null +++ b/src/main/java/com/hbm/handler/HbmKeybindsServer.java @@ -0,0 +1,25 @@ +package com.hbm.handler; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.IKeybindReceiver; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class HbmKeybindsServer { + + /** Can't put this in HbmKeybinds because it's littered with clientonly stuff */ + public static void onPressedServer(EntityPlayer player, EnumKeybind key, boolean state) { + + // EXTPROP HANDLING + HbmPlayerProps props = HbmPlayerProps.getData(player); + props.setKeyPressed(key, state); + + // ITEM HANDLING + ItemStack held = player.getHeldItem(); + if(held != null && held.getItem() instanceof IKeybindReceiver) { + ((IKeybindReceiver) held.getItem()).handleKeybind(player, held, key, state); + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 51fe69541..063961ada 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -1,5 +1,6 @@ package com.hbm.items.weapon.sedna; +import java.util.function.BiConsumer; import java.util.function.Function; import com.hbm.handler.HbmKeybinds.EnumKeybind; @@ -13,23 +14,33 @@ public class GunConfig { public Receiver[] receivers; public float durability; /** Lambda function that determines what receiver the gun should use when a keybind is hit */ - public Function, Receiver> receiverDecider; + //public Function, Receiver> receiverDecider; + /** Lambda functions for clicking shit */ + public BiConsumer onPressPrimary; + public BiConsumer onPressSecondary; + public BiConsumer onPressTertiary; + public BiConsumer onPressReload; + /** Lambda functions for releasing the aforementioned shit */ + public BiConsumer onReleasePrimary; + public BiConsumer onReleaseSecondary; + public BiConsumer onReleaseTertiary; + public BiConsumer onReleaseReload; public GunConfig setReceivers(Receiver... receivers) { this.receivers = receivers; return this; } - public Receiver getReceiver(ItemStack stack, EnumKeybind keybind) { + /*public Receiver getReceiver(ItemStack stack, EnumKeybind keybind) { if(receiverDecider != null) { return receiverDecider.apply(new Triplet(stack, keybind, this)); } return null; - } + }*/ /* Standard implementations for receiver deciders */ - public static Function, Receiver> receiverDeciderSingle = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : null; }; - public static Function, Receiver> receiverDeciderDouble = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : x.getY() == EnumKeybind.GUN_SECONDARY ? x.getZ().receivers[1] : null; }; + //public static Function, Receiver> receiverDeciderSingle = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : null; }; + //public static Function, Receiver> receiverDeciderDouble = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : x.getY() == EnumKeybind.GUN_SECONDARY ? x.getZ().receivers[1] : null; }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java index d094b5fe3..4df3d7080 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -12,6 +12,17 @@ public class ItemGunBase implements IKeybindReceiver { public static final String KEY_TIMER = "timer"; public static final String KEY_STATE = "state"; + public static final String KEY_PRIMARY = "mouse1"; + public static final String KEY_SECONDARY = "mouse2"; + public static final String KEY_TERTIARY = "mouse3"; + public static final String KEY_RELOAD = "reload"; + + /** NEVER ACCESS DIRECTLY - USE GETTER */ + private GunConfig config_DNA; + + public GunConfig getConfig(ItemStack stack) { + return config_DNA; + } public static enum GunState { IDLE, //gun can be fired or reloaded @@ -23,6 +34,16 @@ public class ItemGunBase implements IKeybindReceiver { @Override public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { + GunConfig config = getConfig(stack); + + if(keybind == EnumKeybind.GUN_PRIMARY && state && !getPrimary(stack)) { if(config.onPressPrimary != null) config.onPressPrimary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && !state && getPrimary(stack)) { if(config.onReleasePrimary != null) config.onReleasePrimary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && state && !getSecondary(stack)) { if(config.onPressSecondary != null) config.onPressSecondary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && !state && getSecondary(stack)) { if(config.onReleaseSecondary != null) config.onReleaseSecondary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && state && !getTertiary(stack)) { if(config.onPressTertiary != null) config.onPressTertiary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && !state && getTertiary(stack)) { if(config.onReleaseTertiary != null) config.onReleaseTertiary.accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && state && !getReloadKey(stack)) { if(config.onPressReload != null) config.onPressReload.accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && !state && getReloadKey(stack)) { if(config.onReleaseReload != null) config.onReleaseReload.accept(stack, config); return; } } // GUN STATE TIMER // @@ -33,6 +54,16 @@ public class ItemGunBase implements IKeybindReceiver { public static GunState getState(ItemStack stack) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE)); } public static void setState(ItemStack stack, GunState value) { setValueByte(stack, KEY_STATE, (byte) value.ordinal()); } + // BUTTON STATES // + public static boolean getPrimary(ItemStack stack) { return getValueBool(stack, KEY_PRIMARY); } + public static void setPrimary(ItemStack stack, boolean value) { setValueBool(stack, KEY_PRIMARY, value); } + public static boolean getSecondary(ItemStack stack) { return getValueBool(stack, KEY_SECONDARY); } + public static void setSecondary(ItemStack stack, boolean value) { setValueBool(stack, KEY_SECONDARY, value); } + public static boolean getTertiary(ItemStack stack) { return getValueBool(stack, KEY_TERTIARY); } + public static void setTertiary(ItemStack stack, boolean value) { setValueBool(stack, KEY_TERTIARY, value); } + public static boolean getReloadKey(ItemStack stack) { return getValueBool(stack, KEY_RELOAD); } + public static void setReloadKey(ItemStack stack, boolean value) { setValueBool(stack, KEY_RELOAD, value); } + /// UTIL /// public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getInteger(name); return 0; } @@ -40,4 +71,7 @@ public class ItemGunBase implements IKeybindReceiver { public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getByte(name); return 0; } public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); } + + public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getBoolean(name); return false; } + public static void setValueBool(ItemStack stack, String name, boolean value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setBoolean(name, value); } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index c84df18c8..375ec3d16 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -2110,6 +2110,9 @@ public class ClientProxy extends ServerProxy { case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); case CRANE_RIGHT: return HbmKeybinds.craneRightKey.getIsKeyPressed(); case CRANE_LOAD: return HbmKeybinds.craneLoadKey.getIsKeyPressed(); + case GUN_PRIMARY: return HbmKeybinds.gunPrimaryKey.getIsKeyPressed(); + case GUN_SECONDARY: return HbmKeybinds.gunSecondaryKey.getIsKeyPressed(); + case GUN_TERTIARY: return HbmKeybinds.gunTertiaryKey.getIsKeyPressed(); } return false; diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 5a88ba3bf..acdda9f2e 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1422,6 +1422,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.gas7"); ignoreMappings.add("hbm:item.gas8"); ignoreMappings.add("hbm:tile.brick_forgotten"); + ignoreMappings.add("hbm:tile.watz_conductor"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/toserver/KeybindPacket.java b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java index cc57de872..945d21e69 100644 --- a/src/main/java/com/hbm/packet/toserver/KeybindPacket.java +++ b/src/main/java/com/hbm/packet/toserver/KeybindPacket.java @@ -1,7 +1,7 @@ package com.hbm.packet.toserver; -import com.hbm.handler.HbmKeybinds; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.HbmKeybindsServer; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -39,7 +39,7 @@ public class KeybindPacket implements IMessage { public IMessage onMessage(KeybindPacket m, MessageContext ctx) { EntityPlayer p = ctx.getServerHandler().playerEntity; - HbmKeybinds.onPressedServer(p, EnumKeybind.values()[m.key], m.pressed); + HbmKeybindsServer.onPressedServer(p, EnumKeybind.values()[m.key], m.pressed); return null; } From 833ae407e5d56fdeeb43169386f370345e065416 Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 4 Sep 2024 21:46:08 +0200 Subject: [PATCH 09/20] eh --- .../com/hbm/items/weapon/sedna/GunConfig.java | 23 +++------ .../hbm/items/weapon/sedna/ItemGunBase.java | 48 +++++++++++++++---- .../com/hbm/items/weapon/sedna/Receiver.java | 2 + 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 063961ada..60abf5931 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -1,10 +1,8 @@ package com.hbm.items.weapon.sedna; import java.util.function.BiConsumer; -import java.util.function.Function; -import com.hbm.handler.HbmKeybinds.EnumKeybind; -import com.hbm.util.Tuple.Triplet; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.item.ItemStack; @@ -13,6 +11,8 @@ public class GunConfig { /** List of receivers used by the gun, primary and secondary are usually indices 0 and 1 respectively, if applicable */ public Receiver[] receivers; public float durability; + public int drawDuration = 0; + public Crosshair crosshair; /** Lambda function that determines what receiver the gun should use when a keybind is hit */ //public Function, Receiver> receiverDecider; /** Lambda functions for clicking shit */ @@ -26,21 +26,12 @@ public class GunConfig { public BiConsumer onReleaseTertiary; public BiConsumer onReleaseReload; + public float getDurability(ItemStack stack) { + return durability; + } + public GunConfig setReceivers(Receiver... receivers) { this.receivers = receivers; return this; } - - /*public Receiver getReceiver(ItemStack stack, EnumKeybind keybind) { - - if(receiverDecider != null) { - return receiverDecider.apply(new Triplet(stack, keybind, this)); - } - - return null; - }*/ - - /* Standard implementations for receiver deciders */ - //public static Function, Receiver> receiverDeciderSingle = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : null; }; - //public static Function, Receiver> receiverDeciderDouble = (x) -> { return x.getY() == EnumKeybind.GUN_PRIMARY ? x.getZ().receivers[0] : x.getY() == EnumKeybind.GUN_SECONDARY ? x.getZ().receivers[1] : null; }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java index 4df3d7080..38f0a4e62 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -4,12 +4,16 @@ import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.IKeybindReceiver; import com.hbm.util.EnumUtil; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; -public class ItemGunBase implements IKeybindReceiver { +public class ItemGunBase extends Item implements IKeybindReceiver { + public static final String KEY_DRAWN = "drawn"; public static final String KEY_TIMER = "timer"; public static final String KEY_STATE = "state"; public static final String KEY_PRIMARY = "mouse1"; @@ -25,6 +29,7 @@ public class ItemGunBase implements IKeybindReceiver { } public static enum GunState { + DRAWING, //initial delay after selecting IDLE, //gun can be fired or reloaded WINDUP, //fire button is down, added delay before fire JUST_FIRED, //gun has been fired, cooldown @@ -36,16 +41,41 @@ public class ItemGunBase implements IKeybindReceiver { GunConfig config = getConfig(stack); - if(keybind == EnumKeybind.GUN_PRIMARY && state && !getPrimary(stack)) { if(config.onPressPrimary != null) config.onPressPrimary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_PRIMARY && !state && getPrimary(stack)) { if(config.onReleasePrimary != null) config.onReleasePrimary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && state && !getSecondary(stack)) { if(config.onPressSecondary != null) config.onPressSecondary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && !state && getSecondary(stack)) { if(config.onReleaseSecondary != null) config.onReleaseSecondary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && state && !getTertiary(stack)) { if(config.onPressTertiary != null) config.onPressTertiary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && !state && getTertiary(stack)) { if(config.onReleaseTertiary != null) config.onReleaseTertiary.accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && state && !getReloadKey(stack)) { if(config.onPressReload != null) config.onPressReload.accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && !state && getReloadKey(stack)) { if(config.onReleaseReload != null) config.onReleaseReload.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && state && !getPrimary(stack)) { if(config.onPressPrimary != null) config.onPressPrimary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && !state && getPrimary(stack)) { if(config.onReleasePrimary != null) config.onReleasePrimary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && state && !getSecondary(stack)) { if(config.onPressSecondary != null) config.onPressSecondary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && !state && getSecondary(stack)) { if(config.onReleaseSecondary != null) config.onReleaseSecondary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && state && !getTertiary(stack)) { if(config.onPressTertiary != null) config.onPressTertiary.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && !state && getTertiary(stack)) { if(config.onReleaseTertiary != null) config.onReleaseTertiary.accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && state && !getReloadKey(stack)) { if(config.onPressReload != null) config.onPressReload.accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && !state && getReloadKey(stack)) { if(config.onReleaseReload != null) config.onReleaseReload.accept(stack, config); return; } } + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { + if(world.isRemote) return; + + GunConfig config = this.getConfig(stack); + + if(!isHeld) { + this.setState(stack, GunState.DRAWING); + this.setTimer(stack, config.drawDuration); + return; + } + + int timer = this.getTimer(stack); + if(timer > 0) this.setTimer(stack, timer - 1); + if(timer <= 1) nextState(); + } + + public void nextState() { + // run the decider + } + + // GUN DRAWN // + public static boolean getIsDrawn(ItemStack stack) { return getValueBool(stack, KEY_DRAWN); } + public static void setIsDrawn(ItemStack stack, boolean value) { setValueBool(stack, KEY_DRAWN, value); } + // GUN STATE TIMER // public static int getTimer(ItemStack stack) { return getValueInt(stack, KEY_TIMER); } public static void setTimer(ItemStack stack, int value) { setValueInt(stack, KEY_TIMER, value); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index d74f88ca8..e09f0ec22 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -1,5 +1,6 @@ package com.hbm.items.weapon.sedna; +import com.hbm.handler.CasingEjector; import com.hbm.items.weapon.sedna.mags.IMagazine; public class Receiver { @@ -10,6 +11,7 @@ public class Receiver { protected boolean refireOnHold = false; protected int burstSize = 1; protected int delayAfterBurst; + protected CasingEjector ejector = null; protected IMagazine magazine; From 32ab93f146bfa3ec5031582086445f7482dfb59e Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 5 Sep 2024 16:59:14 +0200 Subject: [PATCH 10/20] gun crap --- src/main/java/com/hbm/items/ModItems.java | 14 ++-- .../hbm/items/weapon/sedna/BulletConfig.java | 6 +- .../com/hbm/items/weapon/sedna/GunConfig.java | 67 ++++++++++++------ .../hbm/items/weapon/sedna/GunFactory.java | 25 +++++++ .../hbm/items/weapon/sedna/ItemGunBase.java | 25 ++++--- .../com/hbm/items/weapon/sedna/Receiver.java | 16 +++-- .../items/weapon/sedna/mags/IMagazine.java | 3 +- .../sedna/mags/MagazineRevolverDrum.java | 28 ++++++++ .../sedna/mags/MagazineStandardBase.java | 2 + .../hbm/textures/models/weapons/debug_gun.png | Bin 0 -> 4269 bytes .../hbm/textures/models/weapons/lil_pip.png | Bin 4498 -> 0 bytes 11 files changed, 141 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/GunFactory.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png delete mode 100644 src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 7c7a2eb53..d25b15108 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -36,6 +36,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.*; import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.items.weapon.ItemMissile.MissileFuel; import com.hbm.items.weapon.ItemMissile.MissileTier; +import com.hbm.items.weapon.sedna.GunFactory; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; @@ -1608,11 +1609,9 @@ public class ModItems { public static Item gun_m2; public static Item gun_lunatic_marksman; public static Item gun_uac_pistol; - - // We'll figure this part out later - //public static Item gun_llr, gun_mlr, gun_hlr, gun_twr, gun_lunatic, gun_lunatic_shotty; - //public static Item gun_uac_pistol, gun_uac_dmr, gun_uac_carbine, gun_uac_lmg; - //public static Item gun_benelli, gun_benelli_mod, gun_g36, spear_bishamonten, pagoda; + + public static Item gun_debug; + public static Item ammo_debug; public static Item crucible; @@ -5458,6 +5457,8 @@ public class ModItems { mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel"); memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim"); + GunFactory.init(); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid), new ItemStack(Items.bucket)); FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic), new ItemStack(Items.bucket)); @@ -6995,6 +6996,9 @@ public class ModItems { GameRegistry.registerItem(gun_glass_cannon, gun_glass_cannon.getUnlocalizedName()); GameRegistry.registerItem(gun_lunatic_marksman, gun_lunatic_marksman.getUnlocalizedName()); + GameRegistry.registerItem(gun_debug, gun_debug.getUnlocalizedName()); + GameRegistry.registerItem(ammo_debug, ammo_debug.getUnlocalizedName()); + //Ammo GameRegistry.registerItem(gun_b92_ammo, gun_b92_ammo.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456_ammo, gun_xvl1456_ammo.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index ce49ad85d..9cc858b8b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.inventory.RecipesCommon.ComparableStack; +import net.minecraft.item.Item; + public class BulletConfig { public static List configs = new ArrayList(); @@ -12,7 +14,7 @@ public class BulletConfig { public final int id; public ComparableStack ammo; - public int ammoCount = 1; + public int ammoReloadCount = 1; public float velocity = 5F; public float spread = 0F; public float wear = 1F; @@ -29,4 +31,6 @@ public class BulletConfig { this.id = configs.size(); configs.add(this); } + + public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 60abf5931..91bdffc24 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -8,30 +8,55 @@ import net.minecraft.item.ItemStack; public class GunConfig { + /* FIELDS */ + /** List of receivers used by the gun, primary and secondary are usually indices 0 and 1 respectively, if applicable */ - public Receiver[] receivers; - public float durability; - public int drawDuration = 0; - public Crosshair crosshair; - /** Lambda function that determines what receiver the gun should use when a keybind is hit */ - //public Function, Receiver> receiverDecider; + protected Receiver[] receivers; + protected float durability; + protected int drawDuration = 0; + protected Crosshair crosshair; /** Lambda functions for clicking shit */ - public BiConsumer onPressPrimary; - public BiConsumer onPressSecondary; - public BiConsumer onPressTertiary; - public BiConsumer onPressReload; + protected BiConsumer onPressPrimary; + protected BiConsumer onPressSecondary; + protected BiConsumer onPressTertiary; + protected BiConsumer onPressReload; /** Lambda functions for releasing the aforementioned shit */ - public BiConsumer onReleasePrimary; - public BiConsumer onReleaseSecondary; - public BiConsumer onReleaseTertiary; - public BiConsumer onReleaseReload; + protected BiConsumer onReleasePrimary; + protected BiConsumer onReleaseSecondary; + protected BiConsumer onReleaseTertiary; + protected BiConsumer onReleaseReload; - public float getDurability(ItemStack stack) { - return durability; - } + /* GETTERS */ + + public Receiver[] getReceivers(ItemStack stack) { return receivers; } + public float getDurability(ItemStack stack) { return durability; } + public int getDrawDuration(ItemStack stack) { return drawDuration; } + public Crosshair getCrosshair(ItemStack stack) { return crosshair; } + + public BiConsumer getPressPrimary(ItemStack stack) { return this.onPressPrimary; } + public BiConsumer getPressSecondary(ItemStack stack) { return this.onPressSecondary; } + public BiConsumer getPressTertiary(ItemStack stack) { return this.onPressTertiary; } + public BiConsumer getPressReload(ItemStack stack) { return this.onPressReload; } + + public BiConsumer getReleasePrimary(ItemStack stack) { return this.onReleasePrimary; } + public BiConsumer getReleaseSecondary(ItemStack stack) { return this.onReleaseSecondary; } + public BiConsumer getReleaseTertiary(ItemStack stack) { return this.onReleaseTertiary; } + public BiConsumer getReleaseReload(ItemStack stack) { return this.onReleaseReload; } - public GunConfig setReceivers(Receiver... receivers) { - this.receivers = receivers; - return this; - } + /* SETTERS */ + + public GunConfig rec(Receiver... receivers) { this.receivers = receivers; return this; } + public GunConfig dura(float dura) { this.durability = dura; return this; } + public GunConfig draw(int draw) { this.drawDuration = draw; return this; } + public GunConfig crosshair(Crosshair crosshair) { this.crosshair = crosshair; return this; } + + public GunConfig pp(BiConsumer lambda) { this.onPressPrimary = lambda; return this; } + public GunConfig ps(BiConsumer lambda) { this.onPressSecondary = lambda; return this; } + public GunConfig pt(BiConsumer lambda) { this.onPressTertiary = lambda; return this; } + public GunConfig pr(BiConsumer lambda) { this.onPressReload = lambda; return this; } + + public GunConfig rp(BiConsumer lambda) { this.onReleasePrimary = lambda; return this; } + public GunConfig rs(BiConsumer lambda) { this.onReleaseSecondary = lambda; return this; } + public GunConfig rt(BiConsumer lambda) { this.onReleaseTertiary = lambda; return this; } + public GunConfig rr(BiConsumer lambda) { this.onReleaseReload = lambda; return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java new file mode 100644 index 000000000..d27913133 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java @@ -0,0 +1,25 @@ +package com.hbm.items.weapon.sedna; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.mags.MagazineRevolverDrum; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; + +import net.minecraft.item.Item; + +public class GunFactory { + + public static void init() { + + ModItems.ammo_debug = new Item().setUnlocalizedName("ammo_debug").setTextureName(RefStrings.MODID + ":ammo_45"); + + BulletConfig ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug); + + ModItems.gun_debug = new ItemGunBase(new GunConfig() + .dura(600).draw(15).crosshair(Crosshair.L_CLASSIC) + .rec(new Receiver() + .dmg(10F).delay(10).mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug))) + ).setUnlocalizedName("gun_debug").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java index 38f0a4e62..1a82c51ba 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -27,6 +27,11 @@ public class ItemGunBase extends Item implements IKeybindReceiver { public GunConfig getConfig(ItemStack stack) { return config_DNA; } + + public ItemGunBase(GunConfig cfg) { + this.setMaxStackSize(1); + this.config_DNA = cfg; + } public static enum GunState { DRAWING, //initial delay after selecting @@ -37,18 +42,18 @@ public class ItemGunBase extends Item implements IKeybindReceiver { } @Override - public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) { + public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean newState) { GunConfig config = getConfig(stack); - if(keybind == EnumKeybind.GUN_PRIMARY && state && !getPrimary(stack)) { if(config.onPressPrimary != null) config.onPressPrimary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_PRIMARY && !state && getPrimary(stack)) { if(config.onReleasePrimary != null) config.onReleasePrimary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && state && !getSecondary(stack)) { if(config.onPressSecondary != null) config.onPressSecondary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && !state && getSecondary(stack)) { if(config.onReleaseSecondary != null) config.onReleaseSecondary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && state && !getTertiary(stack)) { if(config.onPressTertiary != null) config.onPressTertiary.accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && !state && getTertiary(stack)) { if(config.onReleaseTertiary != null) config.onReleaseTertiary.accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && state && !getReloadKey(stack)) { if(config.onPressReload != null) config.onPressReload.accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && !state && getReloadKey(stack)) { if(config.onReleaseReload != null) config.onReleaseReload.accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && !newState && getSecondary(stack)) { if(config.getReleaseSecondary(stack) != null) config.getReleaseSecondary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && newState && !getTertiary(stack)) { if(config.getPressTertiary(stack) != null) config.getPressTertiary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && !newState && getTertiary(stack)) { if(config.getReleaseTertiary(stack) != null) config.getReleaseTertiary(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && newState && !getReloadKey(stack)) { if(config.getPressReload(stack) != null) config.getPressReload(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.RELOAD && !newState && getReloadKey(stack)) { if(config.getReleaseReload(stack) != null) config.getReleaseReload(stack).accept(stack, config); return; } } @Override @@ -59,7 +64,7 @@ public class ItemGunBase extends Item implements IKeybindReceiver { if(!isHeld) { this.setState(stack, GunState.DRAWING); - this.setTimer(stack, config.drawDuration); + this.setTimer(stack, config.getDrawDuration(stack)); return; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index e09f0ec22..fbc3ec079 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -10,13 +10,15 @@ public class Receiver { protected int roundsPerCycle = 1; protected boolean refireOnHold = false; protected int burstSize = 1; - protected int delayAfterBurst; + protected int delayAfterBurst = 0; protected CasingEjector ejector = null; - protected IMagazine magazine; - - public Receiver setMag(IMagazine magazine) { - this.magazine = magazine; - return this; - } + + public Receiver dmg(float dmg) { this.baseDamage = dmg; return this; } + public Receiver delay(int delay) { this.delayAfterFire = delay; return this; } + public Receiver rounds(int rounds) { this.roundsPerCycle = rounds; return this; } + public Receiver auto(boolean auto) { this.refireOnHold = auto; return this; } + public Receiver burst(int size, int delay) { this.burstSize = size; this.delayAfterBurst = delay; return this; } + public Receiver burst(CasingEjector ejector) { this.ejector = ejector; return this; } + public Receiver mag(IMagazine magazine) { this.magazine = magazine; return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java index 1a0aeaeec..27f659513 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -1,5 +1,6 @@ package com.hbm.items.weapon.sedna.mags; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; public interface IMagazine { @@ -13,7 +14,7 @@ public interface IMagazine { /** Sets the mag's ammo level */ public void setAmount(ItemStack stack, int amount); /** The action done at the end of one reload cycle, either loading one shell or replacing the whole mag */ - public void reloadAction(ItemStack stack); + public void reloadAction(ItemStack stack, EntityPlayer player); /** The stack that should be displayed for the ammo HUD */ public ItemStack getIcon(ItemStack stack); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java new file mode 100644 index 000000000..fc9a7f6ae --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java @@ -0,0 +1,28 @@ +package com.hbm.items.weapon.sedna.mags; + +import com.hbm.items.weapon.sedna.BulletConfig; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** Uses individual bullets which are loaded all at once */ +public class MagazineRevolverDrum extends MagazineStandardBase { + + public MagazineRevolverDrum(int index, int capacity) { + super(index, capacity); + } + + @Override + public void reloadAction(ItemStack stack, EntityPlayer player) { + + } + + @Override + public ItemStack getIcon(ItemStack stack) { + Object o = this.getType(stack); + if(o instanceof BulletConfig) { + return ((BulletConfig) o).ammo.toStack(); + } + return null; + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java index 09875ffe5..b066e2f91 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java @@ -27,6 +27,8 @@ public abstract class MagazineStandardBase implements IMagazine { this.index = index; this.capacity = capacity; } + + public MagazineStandardBase addConfigs(BulletConfig... cfgs) { for(BulletConfig cfg : cfgs) acceptedBullets.add(cfg); return this; } @Override public Object getType(ItemStack stack) { diff --git a/src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png b/src/main/resources/assets/hbm/textures/models/weapons/debug_gun.png new file mode 100644 index 0000000000000000000000000000000000000000..49b083ca93ce5336ae48c8025ab8fb8941f3c248 GIT binary patch literal 4269 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png b/src/main/resources/assets/hbm/textures/models/weapons/lil_pip.png deleted file mode 100644 index 7709cf279f7b811835c6c58a0a5625c1744e76e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4498 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 From 77cb82b50244c7184b79ea1678c456507c3759e5 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 6 Sep 2024 15:20:08 +0200 Subject: [PATCH 11/20] item rendering code is stored in the balls --- changelog | 3 +- .../com/hbm/handler/BossSpawnHandler.java | 5 +- .../java/com/hbm/inventory/RecipesCommon.java | 15 +++- .../items/weapon/sedna/mags/IMagazine.java | 4 + .../sedna/mags/MagazineRevolverDrum.java | 54 ++++++++++++ .../sedna/mags/MagazineStandardBase.java | 13 ++- src/main/java/com/hbm/main/ClientProxy.java | 3 + .../com/hbm/main/ModEventHandlerClient.java | 6 +- .../com/hbm/main/ModEventHandlerRenderer.java | 24 ++++++ .../java/com/hbm/main/ResourceManager.java | 1 + .../item/weapon/sedna/ItemRenderDebug.java | 44 ++++++++++ .../weapon/sedna/ItemRenderWeaponBase.java | 82 +++++++++++++++++++ 12 files changed, 241 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java create mode 100644 src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java diff --git a/changelog b/changelog index 575a54ee4..c26beadfa 100644 --- a/changelog +++ b/changelog @@ -15,4 +15,5 @@ * Fixed hydroreactive items not exploding when submerged in water * Fixed fluid valves visually disconnecting when switching state * Fixed fluid valves no visually connecting when type is set -* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops \ No newline at end of file +* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops +* Added even more exception handling to CompStacks, hopefully fixing an incompatibility with Mana Metal \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 485de324f..fa14f7d41 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -245,8 +245,9 @@ public class BossSpawnHandler { Vec3 vec; if(repell) { vec = Vec3.createVectorHelper(meteor.posX - player.posX, 0, meteor.posZ - player.posZ).normalize(); - vec.xCoord = vec.xCoord * meteorRand.nextDouble() - 0.5D; - vec.zCoord = vec.zCoord * meteorRand.nextDouble() - 0.5D; + double vel = meteorRand.nextDouble(); + vec.xCoord = vec.xCoord * vel; + vec.zCoord = vec.zCoord * vel; meteor.safe = true; } else { vec = Vec3.createVectorHelper(meteorRand.nextDouble() - 0.5D, 0, 0); diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index 85a43f6bf..c2f5914db 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -116,10 +116,17 @@ public class RecipesCommon { this.stacksize = 1; return; } - this.item = stack.getItem(); - if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in - this.stacksize = stack.stackSize; - this.meta = stack.getItemDamage(); + try { + this.item = stack.getItem(); + if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in + this.stacksize = stack.stackSize; + this.meta = stack.getItemDamage(); + } catch(Exception ex) { + this.item = ModItems.nothing; + if(!GeneralConfig.enableSilentCompStackErrors) { + ex.printStackTrace(); + } + } } public ComparableStack makeSingular() { diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java index 27f659513..90d6a2337 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/IMagazine.java @@ -7,12 +7,16 @@ public interface IMagazine { /** What ammo is loaded currently */ public Object getType(ItemStack stack); + /** Sets the mag's ammo type */ + public void setType(ItemStack stack, Object type); /** How much ammo this mag can carry */ public int getCapacity(ItemStack stack); /** How much ammo is currently loaded */ public int getAmount(ItemStack stack); /** Sets the mag's ammo level */ public void setAmount(ItemStack stack, int amount); + /** If a reload can even be initiated, i.e. the player even has bullets to load */ + public boolean canReload(ItemStack stack, EntityPlayer player); /** The action done at the end of one reload cycle, either loading one shell or replacing the whole mag */ public void reloadAction(ItemStack stack, EntityPlayer player); /** The stack that should be displayed for the ammo HUD */ diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java index fc9a7f6ae..628d1a73d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineRevolverDrum.java @@ -12,9 +12,63 @@ public class MagazineRevolverDrum extends MagazineStandardBase { super(index, capacity); } + /** Returns true if the player has the same ammo if partially loaded, or any valid ammo if not */ + @Override + public boolean canReload(ItemStack stack, EntityPlayer player) { + + for(ItemStack slot : player.inventory.mainInventory) { + + if(slot != null) { + if(this.getAmount(stack) == 0) { + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } else { + BulletConfig config = (BulletConfig) this.getType(stack); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } + if(config.ammo.matchesRecipe(slot, true)) return true; + } + } + } + + return false; + } + + /** Reloads all rounds at once. If the mag is empty, the mag's type will change to the first valid ammo type */ @Override public void reloadAction(ItemStack stack, EntityPlayer player) { + for(int i = 0; i < player.inventory.mainInventory.length; i++) { + ItemStack slot = player.inventory.mainInventory[i]; + + if(slot != null) { + + //mag is empty, assume next best type + if(this.getAmount(stack) == 0) { + + for(BulletConfig config : this.acceptedBullets) { + if(config.ammo.matchesRecipe(slot, true)) { + this.setType(stack, config); + int toLoad = Math.min(this.getCapacity(stack), slot.stackSize); + this.setAmount(stack, toLoad); + player.inventory.decrStackSize(i, toLoad); + break; + } + } + //mag has a type set, only load that + } else { + BulletConfig config = (BulletConfig) this.getType(stack); + if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT + + if(config.ammo.matchesRecipe(slot, true)) { + int alreadyLoaded = this.getAmount(stack); + int toLoad = Math.min(this.getCapacity(stack) - alreadyLoaded, slot.stackSize); + this.setAmount(stack, toLoad + alreadyLoaded); + player.inventory.decrStackSize(i, toLoad); + } + } + } + } } @Override diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java index b066e2f91..4ce6a9eb9 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java @@ -9,7 +9,7 @@ import com.hbm.items.weapon.sedna.Receiver; import net.minecraft.item.ItemStack; -/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item */ +/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item. Type methods deal with BulletConfigs */ public abstract class MagazineStandardBase implements IMagazine { public static final String KEY_MAG_COUNT = "magcount"; @@ -33,12 +33,19 @@ public abstract class MagazineStandardBase implements IMagazine { @Override public Object getType(ItemStack stack) { int type = getMagType(stack, index); - if(type >= 0 && type < BulletConfig.configs.size()) { - return BulletConfig.configs.get(type); + if(type >= 0 && type < acceptedBullets.size()) { + return acceptedBullets.get(type); } return null; } + @Override + public void setType(ItemStack stack, Object type) { + if(!(type instanceof BulletConfig)) return; + int i = acceptedBullets.indexOf(type); + if(i >= 0) setMagType(stack, index, i); + } + @Override public int getCapacity(ItemStack stack) { return capacity; } @Override public int getAmount(ItemStack stack) { return getMagCount(stack, index); } @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 375ec3d16..7bd969303 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -104,6 +104,7 @@ import com.hbm.render.item.*; import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType; import com.hbm.render.item.block.*; import com.hbm.render.item.weapon.*; +import com.hbm.render.item.weapon.sedna.*; import com.hbm.render.loader.HmfModelLoader; import com.hbm.render.model.ModelPigeon; import com.hbm.render.tileentity.*; @@ -602,6 +603,8 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo()); + //SEDNA + MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 6c2efa833..9b2bddb31 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1071,8 +1071,8 @@ public class ModEventHandlerClient { @SideOnly(Side.CLIENT) @SubscribeEvent - public void onMouseClicked(InputEvent.KeyInputEvent event) { - + public void onMouseClicked(InputEvent.MouseInputEvent event) { + Minecraft mc = Minecraft.getMinecraft(); if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { boolean state = Mouse.getEventButtonState(); @@ -1083,7 +1083,7 @@ public class ModEventHandlerClient { KeyBinding key = (KeyBinding) o; if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { - + key.pressed = state; if(state) { key.pressTime++; diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 7fb0fc35b..9cb14eac5 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -8,7 +8,9 @@ import com.hbm.config.RadiationConfig; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; +import com.hbm.items.weapon.sedna.ItemGunBase; import com.hbm.packet.PermaSyncHandler; +import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase; import com.hbm.render.model.ModelMan; import com.hbm.world.biome.BiomeGenCraterBase; @@ -33,11 +35,15 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.client.event.DrawBlockHighlightEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.common.ForgeModContainer; @@ -409,6 +415,24 @@ public class ModEventHandlerRenderer { } } + @SubscribeEvent + public void onRenderHand(RenderHandEvent event) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + ItemStack held = player.getHeldItem(); + + if(held != null) { + IItemRenderer renderer = MinecraftForgeClient.getItemRenderer(held, ItemRenderType.EQUIPPED_FIRST_PERSON); + + if(renderer instanceof ItemRenderWeaponBase) { + renderer.renderItem(ItemRenderType.FIRST_PERSON_MAP, held, null /*RenderBlocks*/, player); + //Minecraft.getMinecraft().entityRenderer.itemRenderer.renderItemInFirstPerson(event.partialTicks); + + event.setCanceled(true); + } + } + } + private static boolean fogInit = false; private static int fogX; private static int fogZ; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index aa3ff784d..07f22e0cb 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -951,6 +951,7 @@ public class ResourceManager { public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png"); public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png"); public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png"); + public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java new file mode 100644 index 000000000..4e52a079a --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java @@ -0,0 +1,44 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; + +public class ItemRenderDebug extends ItemRenderWeaponBase { + + @Override + public void renderFirstPerson(ItemStack stack) { + + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); + ResourceManager.lilmac.renderPart("Gun"); + ResourceManager.lilmac.renderPart("Cylinder"); + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + ResourceManager.lilmac.renderPart("Pivot"); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glShadeModel(GL11.GL_FLAT); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glRotated(90, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); + ResourceManager.lilmac.renderPart("Gun"); + ResourceManager.lilmac.renderPart("Cylinder"); + ResourceManager.lilmac.renderPart("Bullets"); + ResourceManager.lilmac.renderPart("Casings"); + ResourceManager.lilmac.renderPart("Pivot"); + ResourceManager.lilmac.renderPart("Hammer"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java new file mode 100644 index 000000000..20f044464 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -0,0 +1,82 @@ +package com.hbm.render.item.weapon.sedna; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.util.glu.Project; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public abstract class ItemRenderWeaponBase implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type != ItemRenderType.FIRST_PERSON_MAP; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION; + } + + @SuppressWarnings("incomplete-switch") //shut the fuck up + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + GL11.glPushMatrix(); + switch(type) { + case EQUIPPED_FIRST_PERSON: setupFirstPerson(item); renderFirstPerson(item); break; + case EQUIPPED: setupThirdPerson(item); renderOther(item, type); break; + case INVENTORY: setupInv(item); renderOther(item, type); break; + case ENTITY: setupEntity(item); renderOther(item, type); break; + } + GL11.glPopMatrix(); + } + + public void setupFirstPerson(ItemStack stack) { + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + float f1 = 0.07F; + Minecraft mc = Minecraft.getMinecraft(); + float farPlaneDistance = mc.gameSettings.renderDistanceChunks * 16; + float interp = 0; + + Project.gluPerspective(1, (float)mc.displayWidth / (float)mc.displayHeight, 0.05F, farPlaneDistance * 2.0F); + + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + + GL11.glPushMatrix(); + //this.hurtCameraEffect(interp); + + if (mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) + { + //this.enableLightmap((double)p_78476_1_); + this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, stack, null, mc.thePlayer); + //this.disableLightmap((double)p_78476_1_); + } + + GL11.glPopMatrix(); + + //GL11.glRotated(90, 0, 1, 0); + //GL11.glRotated(40, -1, 0, 0); + } + + public void setupThirdPerson(ItemStack stack) { + + } + + public void setupInv(ItemStack stack) { + GL11.glScaled(1, 1, -1); + GL11.glTranslated(8, 8, 0); + GL11.glRotated(225, 0, 0, 1); + GL11.glRotated(90, 0, 1, 0); + } + + public void setupEntity(ItemStack stack) { + + } + + public abstract void renderFirstPerson(ItemStack stack); + public abstract void renderOther(ItemStack stack, ItemRenderType type); +} From 49d49d47e33da0a06de5487c2ef19fdc72825353 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 6 Sep 2024 22:11:53 +0200 Subject: [PATCH 12/20] this commit has a working faux first person item renderer --- .../com/hbm/main/ModEventHandlerRenderer.java | 13 +- .../weapon/sedna/ItemRenderWeaponBase.java | 151 +++++++++++++++--- src/main/resources/META-INF/HBM_at.cfg | 3 + 3 files changed, 135 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 9cb14eac5..693c8e20c 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -8,7 +8,6 @@ import com.hbm.config.RadiationConfig; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; -import com.hbm.items.weapon.sedna.ItemGunBase; import com.hbm.packet.PermaSyncHandler; import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase; import com.hbm.render.model.ModelMan; @@ -418,16 +417,14 @@ public class ModEventHandlerRenderer { @SubscribeEvent public void onRenderHand(RenderHandEvent event) { - EntityPlayer player = Minecraft.getMinecraft().thePlayer; - ItemStack held = player.getHeldItem(); + //can't use plaxer.getHeldItem() here because the item rendering persists for a few frames after hitting the switch key + ItemStack toRender = Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender; - if(held != null) { - IItemRenderer renderer = MinecraftForgeClient.getItemRenderer(held, ItemRenderType.EQUIPPED_FIRST_PERSON); + if(toRender != null) { + IItemRenderer renderer = MinecraftForgeClient.getItemRenderer(toRender, ItemRenderType.EQUIPPED_FIRST_PERSON); if(renderer instanceof ItemRenderWeaponBase) { - renderer.renderItem(ItemRenderType.FIRST_PERSON_MAP, held, null /*RenderBlocks*/, player); - //Minecraft.getMinecraft().entityRenderer.itemRenderer.renderItemInFirstPerson(event.partialTicks); - + ((ItemRenderWeaponBase) renderer).setPerspectiveAndRender(toRender, event.partialTicks); event.setCanceled(true); } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index 20f044464..66f862e0f 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -1,13 +1,27 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import org.lwjgl.util.glu.Project; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; +import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.client.renderer.ActiveRenderInfo; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; import net.minecraftforge.client.IItemRenderer; public abstract class ItemRenderWeaponBase implements IItemRenderer { + + public static float interp; @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { @@ -31,49 +45,138 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { } GL11.glPopMatrix(); } + + public void setPerspectiveAndRender(ItemStack stack, float interp) { + + this.interp = interp; + + Minecraft mc = Minecraft.getMinecraft(); + EntityRenderer entityRenderer = mc.entityRenderer; + float farPlaneDistance = mc.gameSettings.renderDistanceChunks * 16; + + GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); + GL11.glMatrixMode(GL11.GL_PROJECTION); + GL11.glLoadIdentity(); + + Project.gluPerspective(this.getFOVModifier(interp, false), (float) mc.displayWidth / (float) mc.displayHeight, 0.05F, farPlaneDistance * 2.0F); + + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glLoadIdentity(); + + GL11.glPushMatrix(); + + if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) { + entityRenderer.enableLightmap(interp); + this.setupTransformsAndRender(stack); + entityRenderer.disableLightmap(interp); + } + + GL11.glPopMatrix(); + + if(mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping()) { + entityRenderer.itemRenderer.renderOverlays(interp); + } + } + + private float getFOVModifier(float interp, boolean useFOVSetting) { + + Minecraft mc = Minecraft.getMinecraft(); + EntityLivingBase entityplayer = (EntityLivingBase) mc.renderViewEntity; + float fov = 70.0F; + + if(useFOVSetting) fov = mc.gameSettings.fovSetting; + + if(entityplayer.getHealth() <= 0.0F) { + float f2 = (float) entityplayer.deathTime + interp; + fov /= (1.0F - 500.0F / (f2 + 500.0F)) * 2.0F + 1.0F; + } + + Block block = ActiveRenderInfo.getBlockAtEntityViewpoint(mc.theWorld, entityplayer, interp); + if(block.getMaterial() == Material.water) fov = fov * 60.0F / 70.0F; + + return fov; + } - public void setupFirstPerson(ItemStack stack) { - GL11.glMatrixMode(GL11.GL_PROJECTION); - GL11.glLoadIdentity(); - float f1 = 0.07F; - Minecraft mc = Minecraft.getMinecraft(); - float farPlaneDistance = mc.gameSettings.renderDistanceChunks * 16; - float interp = 0; + protected void setupTransformsAndRender(ItemStack itemstack) { + Minecraft mc = Minecraft.getMinecraft(); + EntityPlayer player = mc.thePlayer; - Project.gluPerspective(1, (float)mc.displayWidth / (float)mc.displayHeight, 0.05F, farPlaneDistance * 2.0F); + float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * interp; + GL11.glPushMatrix(); + GL11.glRotatef(pitch, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp, 0.0F, 1.0F, 0.0F); + RenderHelper.enableStandardItemLighting(); + GL11.glPopMatrix(); + EntityPlayerSP entityplayersp = (EntityPlayerSP) player; + float armPitch = entityplayersp.prevRenderArmPitch + (entityplayersp.renderArmPitch - entityplayersp.prevRenderArmPitch) * interp; + float armYaw = entityplayersp.prevRenderArmYaw + (entityplayersp.renderArmYaw - entityplayersp.prevRenderArmYaw) * interp; + GL11.glRotatef((player.rotationPitch - armPitch) * 0.1F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef((player.rotationYaw - armYaw) * 0.1F, 0.0F, 1.0F, 0.0F); + int i = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = i % 65536; + int k = i / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glLoadIdentity(); + if(itemstack != null) { + int l = itemstack.getItem().getColorFromItemStack(itemstack, 0); + float r = (float) (l >> 16 & 255) / 255.0F; + float g = (float) (l >> 8 & 255) / 255.0F; + float b = (float) (l & 255) / 255.0F; + GL11.glColor4f(r, g, b, 1.0F); + } - GL11.glPushMatrix(); - //this.hurtCameraEffect(interp); + float f8; + float f13; - if (mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode()) - { - //this.enableLightmap((double)p_78476_1_); - this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, stack, null, mc.thePlayer); - //this.disableLightmap((double)p_78476_1_); - } + GL11.glPushMatrix(); + + f13 = 0.8F; - GL11.glPopMatrix(); - + float swing = player.getSwingProgress(interp); + float swingZ = MathHelper.sin(swing * (float) Math.PI); + float swingX = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); + GL11.glTranslatef(-swingX * 0.4F, MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI * 2.0F) * 0.2F, -swingZ * 0.2F); + + GL11.glTranslatef(0.7F * f13, -0.65F * f13 - (1.0F - 1/* raiseprogress */) * 0.6F, -0.9F * f13); + GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + float swingYaw = MathHelper.sin(swing * swing * (float) Math.PI); + float swingPitchRoll = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); + GL11.glRotatef(-swingYaw * 20.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-swingPitchRoll * 20.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-swingPitchRoll * 80.0F, 1.0F, 0.0F, 0.0F); + + f8 = 0.4F; + GL11.glScalef(f8, f8, f8); + + this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, itemstack, null, player); + + GL11.glPopMatrix(); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + RenderHelper.disableStandardItemLighting(); + } + + protected void setupFirstPerson(ItemStack stack) { //GL11.glRotated(90, 0, 1, 0); //GL11.glRotated(40, -1, 0, 0); } - public void setupThirdPerson(ItemStack stack) { - + protected void setupThirdPerson(ItemStack stack) { + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); } - public void setupInv(ItemStack stack) { + protected void setupInv(ItemStack stack) { GL11.glScaled(1, 1, -1); GL11.glTranslated(8, 8, 0); GL11.glRotated(225, 0, 0, 1); GL11.glRotated(90, 0, 1, 0); } - public void setupEntity(ItemStack stack) { + protected void setupEntity(ItemStack stack) { } diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 09bf2e8c3..c84644c46 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -34,3 +34,6 @@ public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # ha # ChunkProviderServer public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload + +# ItemRenderer +public net.minecraft.client.renderer.ItemRenderer.field_78453_b # itemToRender \ No newline at end of file From 5d1d96e43698def1ab15b3fedb7532169abe947f Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Sep 2024 17:45:57 +0200 Subject: [PATCH 13/20] the almighty state machine --- .../java/com/hbm/handler/HbmKeybinds.java | 16 + .../com/hbm/handler/HbmKeybindsServer.java | 3 +- .../java/com/hbm/items/IKeybindReceiver.java | 1 + .../com/hbm/items/weapon/sedna/GunConfig.java | 58 +- .../hbm/items/weapon/sedna/GunFactory.java | 9 +- .../hbm/items/weapon/sedna/ItemGunBase.java | 73 +- .../com/hbm/items/weapon/sedna/Receiver.java | 41 +- .../weapon/sedna/factory/GunStateDecider.java | 89 + .../hbm/items/weapon/sedna/factory/Lego.java | 57 + .../sedna/mags/MagazineStandardBase.java | 2 - .../item/weapon/sedna/ItemRenderDebug.java | 27 + .../weapon/sedna/ItemRenderWeaponBase.java | 102 +- .../hbm/models/weapons/flamethrower.obj | 4043 +++++++++++++++++ .../textures/models/weapons/flamethrower.png | Bin 0 -> 10898 bytes 14 files changed, 4440 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java create mode 100644 src/main/resources/assets/hbm/models/weapons/flamethrower.obj create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 7aa5525b1..5e24afd77 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -13,6 +13,7 @@ import com.hbm.packet.toserver.KeybindPacket; import cpw.mods.fml.client.registry.ClientRegistry; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; +import cpw.mods.fml.common.gameevent.InputEvent.MouseInputEvent; import net.minecraft.client.settings.KeyBinding; public class HbmKeybinds { @@ -55,6 +56,21 @@ public class HbmKeybinds { ClientRegistry.registerKeyBinding(craneLoadKey); } + @SubscribeEvent + public void mouseEvent(MouseInputEvent event) { + HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me()); + + for(EnumKeybind key : EnumKeybind.values()) { + boolean last = props.getKeyPressed(key); + boolean current = MainRegistry.proxy.getIsKeyPressed(key); + + if(last != current) { + PacketDispatcher.wrapper.sendToServer(new KeybindPacket(key, current)); + props.setKeyPressed(key, current); + } + } + } + @SubscribeEvent public void keyEvent(KeyInputEvent event) { if (calculatorKey.getIsKeyPressed()) { // handle the calculator client-side only diff --git a/src/main/java/com/hbm/handler/HbmKeybindsServer.java b/src/main/java/com/hbm/handler/HbmKeybindsServer.java index 46b76a22c..a8f5a99d6 100644 --- a/src/main/java/com/hbm/handler/HbmKeybindsServer.java +++ b/src/main/java/com/hbm/handler/HbmKeybindsServer.java @@ -19,7 +19,8 @@ public class HbmKeybindsServer { // ITEM HANDLING ItemStack held = player.getHeldItem(); if(held != null && held.getItem() instanceof IKeybindReceiver) { - ((IKeybindReceiver) held.getItem()).handleKeybind(player, held, key, state); + IKeybindReceiver rec = (IKeybindReceiver) held.getItem(); + if(rec.canHandleKeybind(player, held, key)) rec.handleKeybind(player, held, key, state); } } } diff --git a/src/main/java/com/hbm/items/IKeybindReceiver.java b/src/main/java/com/hbm/items/IKeybindReceiver.java index 77ba05157..5a44b4cce 100644 --- a/src/main/java/com/hbm/items/IKeybindReceiver.java +++ b/src/main/java/com/hbm/items/IKeybindReceiver.java @@ -7,5 +7,6 @@ import net.minecraft.item.ItemStack; public interface IKeybindReceiver { + public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind); public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index 91bdffc24..e76ffd55e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -2,6 +2,7 @@ package com.hbm.items.weapon.sedna; import java.util.function.BiConsumer; +import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.item.ItemStack; @@ -16,15 +17,17 @@ public class GunConfig { protected int drawDuration = 0; protected Crosshair crosshair; /** Lambda functions for clicking shit */ - protected BiConsumer onPressPrimary; - protected BiConsumer onPressSecondary; - protected BiConsumer onPressTertiary; - protected BiConsumer onPressReload; + protected BiConsumer onPressPrimary; + protected BiConsumer onPressSecondary; + protected BiConsumer onPressTertiary; + protected BiConsumer onPressReload; /** Lambda functions for releasing the aforementioned shit */ - protected BiConsumer onReleasePrimary; - protected BiConsumer onReleaseSecondary; - protected BiConsumer onReleaseTertiary; - protected BiConsumer onReleaseReload; + protected BiConsumer onReleasePrimary; + protected BiConsumer onReleaseSecondary; + protected BiConsumer onReleaseTertiary; + protected BiConsumer onReleaseReload; + /** The engine for the state machine that determines the gun's overall behavior */ + protected BiConsumer decider; /* GETTERS */ @@ -33,15 +36,17 @@ public class GunConfig { public int getDrawDuration(ItemStack stack) { return drawDuration; } public Crosshair getCrosshair(ItemStack stack) { return crosshair; } - public BiConsumer getPressPrimary(ItemStack stack) { return this.onPressPrimary; } - public BiConsumer getPressSecondary(ItemStack stack) { return this.onPressSecondary; } - public BiConsumer getPressTertiary(ItemStack stack) { return this.onPressTertiary; } - public BiConsumer getPressReload(ItemStack stack) { return this.onPressReload; } + public BiConsumer getPressPrimary(ItemStack stack) { return this.onPressPrimary; } + public BiConsumer getPressSecondary(ItemStack stack) { return this.onPressSecondary; } + public BiConsumer getPressTertiary(ItemStack stack) { return this.onPressTertiary; } + public BiConsumer getPressReload(ItemStack stack) { return this.onPressReload; } - public BiConsumer getReleasePrimary(ItemStack stack) { return this.onReleasePrimary; } - public BiConsumer getReleaseSecondary(ItemStack stack) { return this.onReleaseSecondary; } - public BiConsumer getReleaseTertiary(ItemStack stack) { return this.onReleaseTertiary; } - public BiConsumer getReleaseReload(ItemStack stack) { return this.onReleaseReload; } + public BiConsumer getReleasePrimary(ItemStack stack) { return this.onReleasePrimary; } + public BiConsumer getReleaseSecondary(ItemStack stack) { return this.onReleaseSecondary; } + public BiConsumer getReleaseTertiary(ItemStack stack) { return this.onReleaseTertiary; } + public BiConsumer getReleaseReload(ItemStack stack) { return this.onReleaseReload; } + + public BiConsumer getDecider(ItemStack stack) { return this.decider; } /* SETTERS */ @@ -50,13 +55,18 @@ public class GunConfig { public GunConfig draw(int draw) { this.drawDuration = draw; return this; } public GunConfig crosshair(Crosshair crosshair) { this.crosshair = crosshair; return this; } - public GunConfig pp(BiConsumer lambda) { this.onPressPrimary = lambda; return this; } - public GunConfig ps(BiConsumer lambda) { this.onPressSecondary = lambda; return this; } - public GunConfig pt(BiConsumer lambda) { this.onPressTertiary = lambda; return this; } - public GunConfig pr(BiConsumer lambda) { this.onPressReload = lambda; return this; } + //press + public GunConfig pp(BiConsumer lambda) { this.onPressPrimary = lambda; return this; } + public GunConfig ps(BiConsumer lambda) { this.onPressSecondary = lambda; return this; } + public GunConfig pt(BiConsumer lambda) { this.onPressTertiary = lambda; return this; } + public GunConfig pr(BiConsumer lambda) { this.onPressReload = lambda; return this; } - public GunConfig rp(BiConsumer lambda) { this.onReleasePrimary = lambda; return this; } - public GunConfig rs(BiConsumer lambda) { this.onReleaseSecondary = lambda; return this; } - public GunConfig rt(BiConsumer lambda) { this.onReleaseTertiary = lambda; return this; } - public GunConfig rr(BiConsumer lambda) { this.onReleaseReload = lambda; return this; } + //release + public GunConfig rp(BiConsumer lambda) { this.onReleasePrimary = lambda; return this; } + public GunConfig rs(BiConsumer lambda) { this.onReleaseSecondary = lambda; return this; } + public GunConfig rt(BiConsumer lambda) { this.onReleaseTertiary = lambda; return this; } + public GunConfig rr(BiConsumer lambda) { this.onReleaseReload = lambda; return this; } + + //decider + public GunConfig decider(BiConsumer lambda) { this.decider = lambda; return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java index d27913133..9644efb0a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java @@ -1,6 +1,8 @@ package com.hbm.items.weapon.sedna; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunStateDecider; +import com.hbm.items.weapon.sedna.factory.Lego; import com.hbm.items.weapon.sedna.mags.MagazineRevolverDrum; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -19,7 +21,12 @@ public class GunFactory { ModItems.gun_debug = new ItemGunBase(new GunConfig() .dura(600).draw(15).crosshair(Crosshair.L_CLASSIC) .rec(new Receiver() - .dmg(10F).delay(10).mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug))) + .dmg(10F).delay(10).mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug)) + .canFire(Lego.LAMBDA_DEBUG_CAN_FIRE).fire(Lego.LAMBDA_DEBUG_FIRE)) + .pr(Lego.LAMBDA_STANDARD_RELOAD) + .pp(Lego.LAMBDA_STANDARD_FIRE) + .pt(Lego.LAMBDA_TOGGLE_AIM) + .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) ).setUnlocalizedName("gun_debug").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java index 1a82c51ba..0dcbb7478 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java @@ -2,6 +2,7 @@ package com.hbm.items.weapon.sedna; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.items.IKeybindReceiver; +import com.hbm.main.MainRegistry; import com.hbm.util.EnumUtil; import net.minecraft.entity.Entity; @@ -9,17 +10,22 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class ItemGunBase extends Item implements IKeybindReceiver { public static final String KEY_DRAWN = "drawn"; + public static final String KEY_AIMING = "aiming"; public static final String KEY_TIMER = "timer"; public static final String KEY_STATE = "state"; public static final String KEY_PRIMARY = "mouse1"; public static final String KEY_SECONDARY = "mouse2"; public static final String KEY_TERTIARY = "mouse3"; public static final String KEY_RELOAD = "reload"; + + public static float prevAimingProgress; + public static float aimingProgress; /** NEVER ACCESS DIRECTLY - USE GETTER */ private GunConfig config_DNA; @@ -41,40 +47,62 @@ public class ItemGunBase extends Item implements IKeybindReceiver { RELOADING //gun is currently reloading } + @Override + public boolean canHandleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind) { + return keybind == EnumKeybind.GUN_PRIMARY || keybind == EnumKeybind.GUN_SECONDARY || keybind == EnumKeybind.GUN_TERTIARY || keybind == EnumKeybind.RELOAD; + } + @Override public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean newState) { GunConfig config = getConfig(stack); + LambdaContext ctx = new LambdaContext(config, player); - if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_SECONDARY && !newState && getSecondary(stack)) { if(config.getReleaseSecondary(stack) != null) config.getReleaseSecondary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && newState && !getTertiary(stack)) { if(config.getPressTertiary(stack) != null) config.getPressTertiary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.GUN_TERTIARY && !newState && getTertiary(stack)) { if(config.getReleaseTertiary(stack) != null) config.getReleaseTertiary(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && newState && !getReloadKey(stack)) { if(config.getPressReload(stack) != null) config.getPressReload(stack).accept(stack, config); return; } - if(keybind == EnumKeybind.RELOAD && !newState && getReloadKey(stack)) { if(config.getReleaseReload(stack) != null) config.getReleaseReload(stack).accept(stack, config); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && newState && !getPrimary(stack)) { if(config.getPressPrimary(stack) != null) config.getPressPrimary(stack).accept(stack, ctx); this.setPrimary(stack, newState); return; } + if(keybind == EnumKeybind.GUN_PRIMARY && !newState && getPrimary(stack)) { if(config.getReleasePrimary(stack) != null) config.getReleasePrimary(stack).accept(stack, ctx); this.setPrimary(stack, newState); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && newState && !getSecondary(stack)) { if(config.getPressSecondary(stack) != null) config.getPressSecondary(stack).accept(stack, ctx); this.setSecondary(stack, newState); return; } + if(keybind == EnumKeybind.GUN_SECONDARY && !newState && getSecondary(stack)) { if(config.getReleaseSecondary(stack) != null) config.getReleaseSecondary(stack).accept(stack, ctx); this.setSecondary(stack, newState); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && newState && !getTertiary(stack)) { if(config.getPressTertiary(stack) != null) config.getPressTertiary(stack).accept(stack, ctx); this.setTertiary(stack, newState); return; } + if(keybind == EnumKeybind.GUN_TERTIARY && !newState && getTertiary(stack)) { if(config.getReleaseTertiary(stack) != null) config.getReleaseTertiary(stack).accept(stack, ctx); this.setTertiary(stack, newState); return; } + if(keybind == EnumKeybind.RELOAD && newState && !getReloadKey(stack)) { if(config.getPressReload(stack) != null) config.getPressReload(stack).accept(stack, ctx); this.setReloadKey(stack, newState); return; } + if(keybind == EnumKeybind.RELOAD && !newState && getReloadKey(stack)) { if(config.getReleaseReload(stack) != null) config.getReleaseReload(stack).accept(stack, ctx); this.setReloadKey(stack, newState); return; } } @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { - if(world.isRemote) return; + + if(!(entity instanceof EntityPlayer)) return; + EntityPlayer player = (EntityPlayer) entity; + + if(world.isRemote) { + if(isHeld && player == MainRegistry.proxy.me()) { + prevAimingProgress = aimingProgress; + boolean aiming = this.getIsAiming(stack); + float aimSpeed = 0.25F; + if(aiming && aimingProgress < 1F) aimingProgress += aimSpeed; + if(!aiming && aimingProgress > 0F) aimingProgress -= aimSpeed; + aimingProgress = MathHelper.clamp_float(aimingProgress, 0F, 1F); + } + return; + } GunConfig config = this.getConfig(stack); if(!isHeld) { this.setState(stack, GunState.DRAWING); this.setTimer(stack, config.getDrawDuration(stack)); + this.setIsAiming(stack, false); return; } int timer = this.getTimer(stack); if(timer > 0) this.setTimer(stack, timer - 1); - if(timer <= 1) nextState(); + if(timer <= 1) nextState(player, stack); } - public void nextState() { - // run the decider + public void nextState(EntityPlayer player, ItemStack stack) { + GunConfig cfg = this.getConfig(stack); + cfg.getDecider(stack).accept(stack, new LambdaContext(cfg, player)); } // GUN DRAWN // @@ -88,6 +116,10 @@ public class ItemGunBase extends Item implements IKeybindReceiver { // GUN STATE // public static GunState getState(ItemStack stack) { return EnumUtil.grabEnumSafely(GunState.class, getValueByte(stack, KEY_STATE)); } public static void setState(ItemStack stack, GunState value) { setValueByte(stack, KEY_STATE, (byte) value.ordinal()); } + + // GUN AIMING // + public static boolean getIsAiming(ItemStack stack) { return getValueBool(stack, KEY_AIMING); } + public static void setIsAiming(ItemStack stack, boolean value) { setValueBool(stack, KEY_AIMING, value); } // BUTTON STATES // public static boolean getPrimary(ItemStack stack) { return getValueBool(stack, KEY_PRIMARY); } @@ -101,12 +133,23 @@ public class ItemGunBase extends Item implements IKeybindReceiver { /// UTIL /// - public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getInteger(name); return 0; } + public static int getValueInt(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getInteger(name); return 0; } public static void setValueInt(ItemStack stack, String name, int value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger(name, value); } - public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getByte(name); return 0; } + public static byte getValueByte(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getByte(name); return 0; } public static void setValueByte(ItemStack stack, String name, byte value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setByte(name, value); } - public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) stack.getTagCompound().getBoolean(name); return false; } + public static boolean getValueBool(ItemStack stack, String name) { if(stack.hasTagCompound()) return stack.getTagCompound().getBoolean(name); return false; } public static void setValueBool(ItemStack stack, String name, boolean value) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setBoolean(name, value); } + + /** Wrapper for extra context used in most Consumer lambdas which are part of the guncfg */ + public static class LambdaContext { + public final GunConfig config; + public final EntityPlayer player; + + public LambdaContext(GunConfig config, EntityPlayer player) { + this.config = config; + this.player = player; + } + } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index fbc3ec079..777ae34f6 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -1,24 +1,47 @@ package com.hbm.items.weapon.sedna; +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + import com.hbm.handler.CasingEjector; +import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; import com.hbm.items.weapon.sedna.mags.IMagazine; +import net.minecraft.item.ItemStack; + public class Receiver { protected float baseDamage; protected int delayAfterFire; protected int roundsPerCycle = 1; protected boolean refireOnHold = false; - protected int burstSize = 1; - protected int delayAfterBurst = 0; protected CasingEjector ejector = null; + protected int reloadDuration; protected IMagazine magazine; + protected BiFunction canFire; + protected BiConsumer onFire; + + /* GETTERS */ + public float getBaseDamage(ItemStack stack) { return this.baseDamage; } + public int getDelayAfterFire(ItemStack stack) { return this.delayAfterFire; } + public int getRoundsPerCycle(ItemStack stack) { return this.roundsPerCycle; } + public boolean getRefireOnHold(ItemStack stack) { return this.refireOnHold; } + public CasingEjector getEjector(ItemStack stack) { return this.ejector; } + public int getReloadDuration(ItemStack stack) { return this.reloadDuration; } + public IMagazine getMagazine(ItemStack stack) { return this.magazine; } + + public BiFunction getCanFire(ItemStack stack) { return this.canFire; } + public BiConsumer getOnFire(ItemStack stack) { return this.onFire; } - public Receiver dmg(float dmg) { this.baseDamage = dmg; return this; } - public Receiver delay(int delay) { this.delayAfterFire = delay; return this; } - public Receiver rounds(int rounds) { this.roundsPerCycle = rounds; return this; } - public Receiver auto(boolean auto) { this.refireOnHold = auto; return this; } - public Receiver burst(int size, int delay) { this.burstSize = size; this.delayAfterBurst = delay; return this; } - public Receiver burst(CasingEjector ejector) { this.ejector = ejector; return this; } - public Receiver mag(IMagazine magazine) { this.magazine = magazine; return this; } + /* SETTERS */ + public Receiver dmg(float dmg) { this.baseDamage = dmg; return this; } + public Receiver delay(int delay) { this.delayAfterFire = delay; return this; } + public Receiver rounds(int rounds) { this.roundsPerCycle = rounds; return this; } + public Receiver auto(boolean auto) { this.refireOnHold = auto; return this; } + public Receiver burst(CasingEjector ejector) { this.ejector = ejector; return this; } + public Receiver reload(int delay) { this.reloadDuration = delay; return this; } + public Receiver mag(IMagazine magazine) { this.magazine = magazine; return this; } + + public Receiver canFire(BiFunction lambda) { this.canFire = lambda; return this; } + public Receiver fire(BiConsumer lambda) { this.onFire = lambda; return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java new file mode 100644 index 000000000..590231996 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java @@ -0,0 +1,89 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BooleanSupplier; + +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.Receiver; +import com.hbm.items.weapon.sedna.ItemGunBase.GunState; +import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class GunStateDecider { + + /** + * The meat and bones of the gun system's state machine. + * This standard decider can handle guns with an automatic primary receiver, as well as one receiver's reloading state. + * It supports draw delays as well as semi and auto fire + */ + public static BiConsumer LAMBDA_STANDARD_DECIDER = (stack, ctx) -> { + GunState lastState = ItemGunBase.getState(stack); + deciderStandardFinishDraw(stack, lastState); + deciderStandardReload(stack, ctx, lastState, 0); + deciderAutoRefire(stack, ctx, lastState, 0, () -> { return ItemGunBase.getPrimary(stack); }); + }; + + /** Transitions the gun from DRAWING to IDLE */ + public static void deciderStandardFinishDraw(ItemStack stack, GunState lastState) { + + //transition to idle + if(lastState == GunState.DRAWING) { + ItemGunBase.setState(stack, GunState.IDLE); + ItemGunBase.setTimer(stack, 0); + } + } + + /** Triggers a reload action on the first receiver. If the mag is not full and reloading is still possible, set to RELOADING, otherwise IDLE */ + public static void deciderStandardReload(ItemStack stack, LambdaContext ctx, GunState lastState, int recIndex) { + + if(lastState == GunState.RELOADING) { + + EntityPlayer player = ctx.player; + GunConfig cfg = ctx.config; + Receiver rec = cfg.getReceivers(stack)[recIndex]; + + rec.getMagazine(stack).reloadAction(stack, player); + + //if after reloading the gun can still reload, assume a tube mag and resume reloading + if(cfg.getReceivers(stack)[recIndex].getMagazine(stack).canReload(stack, player)) { + ItemGunBase.setState(stack, GunState.RELOADING); + ItemGunBase.setTimer(stack, cfg.getReceivers(stack)[recIndex].getReloadDuration(stack)); + //if no more reloading can be done, go idle + } else { + ItemGunBase.setState(stack, GunState.IDLE); + ItemGunBase.setTimer(stack, 0); + } + } + } + + /** Triggers a re-fire of the primary if the fire delay has expired, the left mouse button is down and re-firing is enabled, otherwise switches to IDLE */ + public static void deciderAutoRefire(ItemStack stack, LambdaContext ctx, GunState lastState, int recIndex, BooleanSupplier refireCondition) { + + if(lastState == GunState.JUST_FIRED) { + + GunConfig cfg = ctx.config; + Receiver rec = cfg.getReceivers(stack)[recIndex]; + + //if the gun supports re-fire (i.e. if it's an auto) + if(rec.getRefireOnHold(stack) && refireCondition.getAsBoolean()) { + //if there's a bullet loaded, fire again + if(rec.getCanFire(stack).apply(stack, ctx)) { + rec.getOnFire(stack).accept(stack, ctx); + ItemGunBase.setState(stack, GunState.JUST_FIRED); + ItemGunBase.setTimer(stack, rec.getDelayAfterFire(stack)); + //if not, revert to idle + } else { + ItemGunBase.setState(stack, GunState.IDLE); + ItemGunBase.setTimer(stack, 0); + } + //if not, go idle + } else { + ItemGunBase.setState(stack, GunState.IDLE); + ItemGunBase.setTimer(stack, 0); + } + } + } +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java new file mode 100644 index 000000000..312433444 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -0,0 +1,57 @@ +package com.hbm.items.weapon.sedna.factory; + +import java.util.function.BiConsumer; +import java.util.function.BiFunction; + +import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBase.GunState; +import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +/** + * "LEGO" - i.e. standardized building blocks which can be used to set up gun configs easily. + * + * @author hbm + */ +public class Lego { + + /** + * If IDLE and the mag of receiver 0 can be loaded, set state to RELOADING. Used by keybinds. */ + public static BiConsumer LAMBDA_STANDARD_RELOAD = (stack, ctx) -> { + + if(ItemGunBase.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getMagazine(stack).canReload(stack, ctx.player)) { + ItemGunBase.setState(stack, GunState.RELOADING); + ItemGunBase.setTimer(stack, ctx.config.getReceivers(stack)[0].getReloadDuration(stack)); + } + }; + + /** + * If IDLE and ammo is loaded, fire and set to JUST_FIRED. */ + public static BiConsumer LAMBDA_STANDARD_FIRE = (stack, ctx) -> { + + if(ItemGunBase.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getCanFire(stack).apply(stack, ctx)) { + ItemGunBase.setState(stack, GunState.JUST_FIRED); + ItemGunBase.setTimer(stack, ctx.config.getReceivers(stack)[0].getDelayAfterFire(stack)); + ctx.config.getReceivers(stack)[0].getOnFire(stack).accept(stack, ctx); + } + }; + + /** Toggles isAiming. Used by keybinds. */ + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { ItemGunBase.setIsAiming(stack, !ItemGunBase.getIsAiming(stack)); }; + + /** Returns true if the mag has ammo in it. Used by keybind functions on whether to fire, and deciders on whether to trigger a refire, */ + public static BiFunction LAMBDA_STANDARD_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack) > 0; }; + + + + + /** JUMPER - bypasses mag testing and just allows constant fire */ + public static BiFunction LAMBDA_DEBUG_CAN_FIRE = (stack, ctx) -> { return true; }; + /** simply plays a sound to indicate that the keybind has triggered */ + public static BiConsumer LAMBDA_DEBUG_FIRE = (stack, ctx) -> { + EntityPlayer player = ctx.player; + player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.shotgunShoot", 1F, 1F); + }; +} diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java index 4ce6a9eb9..01c83b24f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.ItemGunBase; -import com.hbm.items.weapon.sedna.Receiver; import net.minecraft.item.ItemStack; @@ -21,7 +20,6 @@ public abstract class MagazineStandardBase implements IMagazine { public int index; /** How much ammo this mag can hold */ public int capacity; - public Receiver parent; public MagazineStandardBase(int index, int capacity) { this.index = index; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java index 4e52a079a..446246d44 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; +import com.hbm.items.weapon.sedna.ItemGunBase; import com.hbm.main.ResourceManager; import net.minecraft.client.Minecraft; @@ -9,6 +10,19 @@ import net.minecraft.item.ItemStack; public class ItemRenderDebug extends ItemRenderWeaponBase { + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBase.getIsAiming(stack) ? 2.5F : -0.25F; } + + @Override + protected void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 1); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.0F * offset, -0.75F * offset, 1F * offset, + 0, -3.875 / 8D, 0); + } + @Override public void renderFirstPerson(ItemStack stack) { @@ -27,9 +41,22 @@ public class ItemRenderDebug extends ItemRenderWeaponBase { GL11.glShadeModel(GL11.GL_FLAT); } + @Override + protected void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glRotated(90, 0, 1, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_ALPHA_TEST); GL11.glShadeModel(GL11.GL_SMOOTH); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index 66f862e0f..ae12214d2 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -4,6 +4,8 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.util.glu.Project; +import com.hbm.items.weapon.sedna.ItemGunBase; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; @@ -14,7 +16,6 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraftforge.client.IItemRenderer; @@ -96,62 +97,81 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { return fov; } + + protected float getSwayMagnitude(ItemStack stack) { return 0.5F; } + protected float getSwayPeriod(ItemStack stack) { return 0.75F; } + protected float getTurnMagnitude(ItemStack stack) { return 2.75F; } - protected void setupTransformsAndRender(ItemStack itemstack) { + protected void setupTransformsAndRender(ItemStack stack) { Minecraft mc = Minecraft.getMinecraft(); EntityPlayer player = mc.thePlayer; + float swayMagnitude = getSwayMagnitude(stack); + float swayPeriod = getSwayPeriod(stack); + float turnMagnitude = getTurnMagnitude(stack); + + //lighting setup (item lighting changes based on player rotation) float pitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * interp; + float yaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp; + GL11.glPushMatrix(); GL11.glRotatef(pitch, 1.0F, 0.0F, 0.0F); - GL11.glRotatef(player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * interp, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(yaw, 0.0F, 1.0F, 0.0F); RenderHelper.enableStandardItemLighting(); GL11.glPopMatrix(); + + //floppyness EntityPlayerSP entityplayersp = (EntityPlayerSP) player; float armPitch = entityplayersp.prevRenderArmPitch + (entityplayersp.renderArmPitch - entityplayersp.prevRenderArmPitch) * interp; float armYaw = entityplayersp.prevRenderArmYaw + (entityplayersp.renderArmYaw - entityplayersp.prevRenderArmYaw) * interp; - GL11.glRotatef((player.rotationPitch - armPitch) * 0.1F, 1.0F, 0.0F, 0.0F); - GL11.glRotatef((player.rotationYaw - armYaw) * 0.1F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef((player.rotationPitch - armPitch) * 0.1F * turnMagnitude, 1.0F, 0.0F, 0.0F); + GL11.glRotatef((player.rotationYaw - armYaw) * 0.1F * turnMagnitude, 0.0F, 1.0F, 0.0F); - int i = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); - int j = i % 65536; - int k = i / 65536; + //brightness setup + int brightness = mc.theWorld.getLightBrightnessForSkyBlocks(MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), 0); + int j = brightness % 65536; + int k = brightness / 65536; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - if(itemstack != null) { - int l = itemstack.getItem().getColorFromItemStack(itemstack, 0); - float r = (float) (l >> 16 & 255) / 255.0F; - float g = (float) (l >> 8 & 255) / 255.0F; - float b = (float) (l & 255) / 255.0F; - GL11.glColor4f(r, g, b, 1.0F); - } - - float f8; - float f13; + //color setup + int color = stack.getItem().getColorFromItemStack(stack, 0); + float r = (float) (color >> 16 & 255) / 255.0F; + float g = (float) (color >> 8 & 255) / 255.0F; + float b = (float) (color & 255) / 255.0F; + GL11.glColor4f(r, g, b, 1.0F); GL11.glPushMatrix(); - f13 = 0.8F; - + //swing float swing = player.getSwingProgress(interp); float swingZ = MathHelper.sin(swing * (float) Math.PI); float swingX = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); GL11.glTranslatef(-swingX * 0.4F, MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI * 2.0F) * 0.2F, -swingZ * 0.2F); - GL11.glTranslatef(0.7F * f13, -0.65F * f13 - (1.0F - 1/* raiseprogress */) * 0.6F, -0.9F * f13); - GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F); GL11.glEnable(GL12.GL_RESCALE_NORMAL); float swingYaw = MathHelper.sin(swing * swing * (float) Math.PI); float swingPitchRoll = MathHelper.sin(MathHelper.sqrt_float(swing) * (float) Math.PI); GL11.glRotatef(-swingYaw * 20.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(-swingPitchRoll * 20.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(-swingPitchRoll * 80.0F, 1.0F, 0.0F, 0.0F); - - f8 = 0.4F; - GL11.glScalef(f8, f8, f8); - this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, itemstack, null, player); + GL11.glRotated(180, 0, 1, 0); + + //viewbob + if(mc.renderViewEntity instanceof EntityPlayer) { + EntityPlayer entityplayer = (EntityPlayer) mc.renderViewEntity; + float distanceDelta = entityplayer.distanceWalkedModified - entityplayer.prevDistanceWalkedModified; + float distanceInterp = -(entityplayer.distanceWalkedModified + distanceDelta * interp); + float camYaw = entityplayer.prevCameraYaw + (entityplayer.cameraYaw - entityplayer.prevCameraYaw) * interp; + float camPitch = entityplayer.prevCameraPitch + (entityplayer.cameraPitch - entityplayer.prevCameraPitch) * interp; + GL11.glTranslatef(MathHelper.sin(distanceInterp * (float) Math.PI * swayPeriod) * camYaw * 0.5F * swayMagnitude, -Math.abs(MathHelper.cos(distanceInterp * (float) Math.PI * swayPeriod) * camYaw) * swayMagnitude, 0.0F); + GL11.glRotatef(MathHelper.sin(distanceInterp * (float) Math.PI * swayPeriod) * camYaw * 3.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(Math.abs(MathHelper.cos(distanceInterp * (float) Math.PI * swayPeriod - 0.2F) * camYaw) * 5.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(camPitch, 1.0F, 0.0F, 0.0F); + } + + this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, stack, null, player); GL11.glPopMatrix(); @@ -160,13 +180,28 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { } protected void setupFirstPerson(ItemStack stack) { - //GL11.glRotated(90, 0, 1, 0); - //GL11.glRotated(40, -1, 0, 0); + GL11.glTranslated(0, 0, 1); + + if(Minecraft.getMinecraft().thePlayer.isSneaking()) { + GL11.glTranslated(0, -3.875 / 8D, 0); + } else { + float offset = 0.8F; + GL11.glRotated(180, 0, 1, 0); + GL11.glTranslatef(1.0F * offset, -0.75F * offset, -0.5F * offset); + GL11.glRotated(180, 0, 1, 0); + } } protected void setupThirdPerson(ItemStack stack) { double scale = 0.125D; GL11.glScaled(scale, scale, scale); + + GL11.glRotatef(15.0F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(12.5F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(10.0F, 1.0F, 0.0F, 0.0F); + + GL11.glTranslated(3.5, 0, 0); + } protected void setupInv(ItemStack stack) { @@ -177,9 +212,18 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { } protected void setupEntity(ItemStack stack) { - + double scale = 0.125D; + GL11.glScaled(scale, scale, scale); } public abstract void renderFirstPerson(ItemStack stack); public abstract void renderOther(ItemStack stack, ItemRenderType type); + + public static void standardAimingTransform(ItemStack stack, double sX, double sY, double sZ, double aX, double aY, double aZ) { + float aimingProgress = ItemGunBase.prevAimingProgress + (ItemGunBase.aimingProgress - ItemGunBase.prevAimingProgress) * interp; + double x = sX + (aX - sX) * aimingProgress; + double y = sY + (aY - sY) * aimingProgress; + double z = sZ + (aZ - sZ) * aimingProgress; + GL11.glTranslated(x, y, z); + } } diff --git a/src/main/resources/assets/hbm/models/weapons/flamethrower.obj b/src/main/resources/assets/hbm/models/weapons/flamethrower.obj new file mode 100644 index 000000000..a89a5efca --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/flamethrower.obj @@ -0,0 +1,4043 @@ +# Blender v2.79 (sub 0) OBJ File: 'flamethrower.blend' +# www.blender.org +o Circle +v 0.000000 0.500000 7.000000 +v -0.250000 0.433013 7.000000 +v -0.433012 0.250000 7.000000 +v -0.500000 0.000000 7.000000 +v -0.433012 -0.250000 7.000000 +v -0.250000 -0.433013 7.000000 +v 0.000000 -0.500000 7.000000 +v 0.250000 -0.433013 7.000000 +v 0.433012 -0.250000 7.000000 +v 0.500000 -0.000000 7.000000 +v 0.433013 0.250000 7.000000 +v 0.250000 0.433013 7.000000 +v 0.000000 0.750000 5.750000 +v -0.375000 0.649519 5.750000 +v -0.649519 0.375000 5.750000 +v -0.750000 0.000000 5.750000 +v -0.649519 -0.375000 5.750000 +v -0.375000 -0.649519 5.750000 +v 0.000000 -0.750000 5.750000 +v 0.375000 -0.649519 5.750000 +v 0.649519 -0.375000 5.750000 +v 0.750000 -0.000000 5.750000 +v 0.649519 0.375000 5.750000 +v 0.375000 0.649519 5.750000 +v 0.000000 0.375000 7.000000 +v -0.187500 0.324760 7.000000 +v -0.324759 0.187500 7.000000 +v -0.375000 0.000000 7.000000 +v -0.324759 -0.187500 7.000000 +v -0.187500 -0.324759 7.000000 +v 0.000000 -0.375000 7.000000 +v 0.187500 -0.324760 7.000000 +v 0.324759 -0.187500 7.000000 +v 0.375000 -0.000000 7.000000 +v 0.324759 0.187500 7.000000 +v 0.187500 0.324759 7.000000 +v 0.000000 0.500000 5.500000 +v -0.250000 0.433013 5.500000 +v -0.433012 0.250000 5.500000 +v -0.500000 0.000000 5.500000 +v -0.433012 -0.250000 5.500000 +v -0.250000 -0.433013 5.500000 +v 0.000000 -0.500000 5.500000 +v 0.250000 -0.433013 5.500000 +v 0.433012 -0.250000 5.500000 +v 0.500000 -0.000000 5.500000 +v 0.433013 0.250000 5.500000 +v 0.250000 0.433013 5.500000 +v 0.000000 0.375000 6.000000 +v -0.187500 0.324760 6.000000 +v -0.324759 0.187500 6.000000 +v -0.375000 0.000000 6.000000 +v -0.324759 -0.187500 6.000000 +v -0.187500 -0.324759 6.000000 +v 0.000000 -0.375000 6.000000 +v 0.187500 -0.324760 6.000000 +v 0.324759 -0.187500 6.000000 +v 0.375000 -0.000000 6.000000 +v 0.324759 0.187500 6.000000 +v 0.187500 0.324759 6.000000 +v 0.000000 0.750000 5.500000 +v -0.375000 0.649519 5.500000 +v -0.649519 0.375000 5.500000 +v -0.750000 0.000000 5.500000 +v -0.649519 -0.375000 5.500000 +v -0.375000 -0.649519 5.500000 +v 0.000000 -0.750000 5.500000 +v 0.375000 -0.649519 5.500000 +v 0.649519 -0.375000 5.500000 +v 0.750000 -0.000000 5.500000 +v 0.649519 0.375000 5.500000 +v 0.375000 0.649519 5.500000 +v 0.000000 0.750000 4.000000 +v -0.375000 0.649519 4.000000 +v -0.649519 0.375000 4.000000 +v -0.750000 0.000000 4.000000 +v -0.649519 -0.375000 4.000000 +v -0.375000 -0.649519 4.000000 +v 0.000000 -0.750000 4.000000 +v 0.375000 -0.649519 4.000000 +v 0.649519 -0.375000 4.000000 +v 0.750000 -0.000000 4.000000 +v 0.649519 0.375000 4.000000 +v 0.375000 0.649519 4.000000 +v 0.000000 0.500000 4.000000 +v -0.250000 0.433013 4.000000 +v -0.433012 0.250000 4.000000 +v -0.500000 0.000000 4.000000 +v -0.433012 -0.250000 4.000000 +v -0.250000 -0.433013 4.000000 +v 0.000000 -0.500000 4.000000 +v 0.250000 -0.433013 4.000000 +v 0.433012 -0.250000 4.000000 +v 0.500000 -0.000000 4.000000 +v 0.433013 0.250000 4.000000 +v 0.250000 0.433013 4.000000 +v 0.000000 0.500000 -3.500000 +v -0.250000 0.433013 -3.500000 +v -0.433012 0.250000 -3.500000 +v -0.500000 0.000000 -3.500000 +v -0.433012 -0.250000 -3.500000 +v -0.250000 -0.433013 -3.500000 +v 0.000000 -0.500000 -3.500000 +v 0.250000 -0.433013 -3.500000 +v 0.433012 -0.250000 -3.500000 +v 0.500000 -0.000000 -3.500000 +v 0.433013 0.250000 -3.500000 +v 0.250000 0.433013 -3.500000 +v 0.000000 0.750000 -3.500000 +v -0.375000 0.649519 -3.500000 +v -0.649519 0.375000 -3.500000 +v -0.750000 0.000000 -3.500000 +v -0.649519 -0.375000 -3.500000 +v -0.375000 -0.649519 -3.500000 +v 0.000000 -0.750000 -3.500000 +v 0.375000 -0.649519 -3.500000 +v 0.649519 -0.375000 -3.500000 +v 0.750000 -0.000000 -3.500000 +v 0.649519 0.375000 -3.500000 +v 0.375000 0.649519 -3.500000 +v 0.000000 0.750000 -4.500000 +v -0.375000 0.649519 -4.500000 +v -0.649519 0.375000 -4.500000 +v -0.750000 0.000000 -4.500000 +v -0.649519 -0.375000 -4.500000 +v -0.375000 -0.649519 -4.500000 +v 0.000000 -0.750000 -4.500000 +v 0.375000 -0.649519 -4.500000 +v 0.649519 -0.375000 -4.500000 +v 0.750000 -0.000000 -4.500000 +v 0.649519 0.375000 -4.500000 +v 0.375000 0.649519 -4.500000 +v -0.500000 1.000000 -4.500000 +v -1.000000 0.500000 -4.500000 +v 1.000000 0.500000 -4.500000 +v 0.500000 1.000000 -4.500000 +v -1.000000 -0.500000 -4.500000 +v -0.500000 -1.000000 -4.500000 +v 0.500000 -1.000000 -4.500000 +v 1.000000 -0.500000 -4.500000 +v -0.500000 -1.000000 -8.000000 +v -1.000000 -0.500000 -8.000000 +v -1.000000 0.500000 -8.000000 +v -0.500000 1.000000 -8.000000 +v 0.500000 1.000000 -8.000000 +v 1.000000 0.500000 -8.000000 +v 1.000000 -0.500000 -8.000000 +v 0.500000 -1.000000 -8.000000 +v 0.000000 -0.625000 4.750000 +v -0.176777 -0.625000 4.823223 +v -0.250000 -0.625000 5.000000 +v -0.176777 -0.625000 5.176777 +v 0.000000 -0.625000 5.250000 +v 0.176776 -0.625000 5.176777 +v 0.250000 -0.625000 5.000000 +v 0.176776 -0.625000 4.823223 +v 0.000000 -0.875000 4.750000 +v -0.176777 -0.875000 4.823223 +v -0.250000 -0.875000 5.000000 +v -0.176777 -0.875000 5.176777 +v 0.000000 -0.875000 5.250000 +v 0.176776 -0.875000 5.176777 +v 0.250000 -0.875000 5.000000 +v 0.176776 -0.875000 4.823223 +v 0.000000 -0.875000 4.875000 +v -0.088388 -0.875000 4.911612 +v -0.125000 -0.875000 5.000000 +v -0.088388 -0.875000 5.088388 +v 0.000000 -0.875000 5.125000 +v 0.088388 -0.875000 5.088388 +v 0.125000 -0.875000 5.000000 +v 0.088388 -0.875000 4.911612 +v 0.000000 -1.125000 4.875000 +v -0.088388 -1.125000 4.911612 +v -0.125000 -1.125000 5.000000 +v -0.088388 -1.125000 5.088388 +v 0.000000 -1.125000 5.125000 +v 0.088388 -1.125000 5.088388 +v 0.125000 -1.125000 5.000000 +v 0.088388 -1.125000 4.911612 +v 0.000000 -1.500000 7.250000 +v 0.000000 -1.390165 4.984835 +v -0.088388 -1.364277 5.010723 +v -0.125000 -1.301777 5.073223 +v -0.088388 -1.239277 5.135724 +v 0.000000 -1.213388 5.161612 +v 0.088388 -1.239277 5.135724 +v 0.125000 -1.301777 5.073223 +v 0.088388 -1.364277 5.010723 +v 0.000000 -1.500000 5.250000 +v -0.088388 -1.463388 5.250000 +v -0.125000 -1.375000 5.250000 +v -0.088388 -1.286611 5.250000 +v 0.000000 -1.250000 5.250000 +v 0.088388 -1.286611 5.250000 +v 0.125000 -1.375000 5.250000 +v 0.088388 -1.463388 5.250000 +v -0.088388 -1.463388 7.250000 +v -0.125000 -1.375000 7.250000 +v -0.088388 -1.286611 7.250000 +v 0.000000 -1.250000 7.250000 +v 0.088388 -1.286611 7.250000 +v 0.125000 -1.375000 7.250000 +v 0.088388 -1.463388 7.250000 +v 0.000000 -0.875000 7.625000 +v 0.000000 -1.390165 7.515165 +v -0.088388 -1.364277 7.489277 +v -0.125000 -1.301777 7.426777 +v -0.088388 -1.239276 7.364276 +v 0.000000 -1.213388 7.338388 +v 0.088388 -1.239276 7.364276 +v 0.125000 -1.301777 7.426777 +v 0.088388 -1.364277 7.489277 +v 0.000000 -1.125000 7.625000 +v -0.088388 -1.125000 7.588388 +v -0.125000 -1.125000 7.500000 +v -0.088388 -1.125000 7.411612 +v 0.000000 -1.125000 7.375000 +v 0.088388 -1.125000 7.411612 +v 0.125000 -1.125000 7.500000 +v 0.088388 -1.125000 7.588388 +v -0.088388 -0.875000 7.588388 +v -0.125000 -0.875000 7.500000 +v -0.088388 -0.875000 7.411612 +v 0.000000 -0.875000 7.375000 +v 0.088388 -0.875000 7.411612 +v 0.125000 -0.875000 7.500000 +v 0.088388 -0.875000 7.588388 +v 0.000000 -0.875000 7.750000 +v -0.176777 -0.875000 7.676777 +v -0.250000 -0.875000 7.500000 +v -0.176777 -0.875000 7.323223 +v 0.000000 -0.875000 7.250000 +v 0.176776 -0.875000 7.323223 +v 0.250000 -0.875000 7.500000 +v 0.176776 -0.875000 7.676777 +v 0.000000 -0.375000 7.625000 +v -0.088388 -0.375000 7.588388 +v -0.125000 -0.375000 7.500000 +v -0.088388 -0.375000 7.411612 +v 0.000000 -0.375000 7.375000 +v 0.088388 -0.375000 7.411612 +v 0.125000 -0.375000 7.500000 +v 0.088388 -0.375000 7.588388 +v -0.500000 -0.750000 -4.500000 +v 0.500000 -0.750000 -4.500000 +v 0.500000 -1.000000 -4.500000 +v -0.500000 -1.000000 -4.500000 +v -0.500000 -0.750000 4.250000 +v 0.500000 -0.750000 4.250000 +v 0.500000 -1.000000 4.250000 +v -0.500000 -1.000000 4.250000 +v 0.375000 1.000000 -7.125000 +v -0.500000 -0.750000 4.500000 +v 0.500000 -0.750000 4.500000 +v -0.375000 1.000000 -7.125000 +v -0.500000 -0.500000 4.250000 +v 0.500000 -0.500000 4.250000 +v -0.500000 -0.500000 4.500000 +v 0.500000 -0.500000 4.500000 +v -0.375000 1.000000 -7.875000 +v 0.375000 1.000000 -7.875000 +v -0.375000 1.250000 -7.125000 +v 0.375000 1.250000 -7.125000 +v -0.375000 1.250000 -7.875000 +v 0.375000 1.250000 -7.875000 +v -0.250000 1.250000 -7.250000 +v 0.250000 1.250000 -7.250000 +v -0.250000 1.250000 -7.750000 +v 0.250000 1.250000 -7.750000 +v -0.250000 1.875000 -7.750000 +v -0.250000 2.250000 -7.250000 +v 0.250000 2.250000 -7.250000 +v 0.250000 1.875000 -7.750000 +v -0.500000 0.000000 -0.750000 +v -0.433012 0.250000 -0.750000 +v -0.187500 2.062500 -7.250000 +v 0.187500 2.062500 -7.250000 +v -0.250000 0.433013 -0.750000 +v 0.000000 0.500000 -0.750000 +v -0.187500 2.062500 -5.750000 +v 0.187500 2.062500 -5.750000 +v -0.250000 1.625000 -5.750000 +v 0.250000 1.625000 -5.750000 +v -0.250000 2.125000 -5.750000 +v 0.250000 2.125000 -5.750000 +v -0.250000 2.125000 -5.375000 +v -0.250000 1.625000 -5.500000 +v 0.250000 1.625000 -5.500000 +v 0.250000 2.125000 -5.375000 +v -0.062500 1.687500 -7.250000 +v -0.187500 1.812500 -7.250000 +v 0.187500 1.812500 -7.250000 +v 0.062500 1.687500 -7.250000 +v -0.187500 1.812500 -5.750000 +v -0.062500 1.687500 -5.750000 +v 0.062500 1.687500 -5.750000 +v 0.187500 1.812500 -5.750000 +v -0.433012 -0.250000 -0.750000 +v -0.250000 -0.433013 -0.750000 +v 0.000000 -0.500000 -0.750000 +v 0.250000 -0.433013 -0.750000 +v 0.433012 -0.250000 -0.750000 +v 0.500000 -0.000000 -0.750000 +v 0.433013 0.250000 -0.750000 +v 0.250000 0.433013 -0.750000 +v 0.000000 0.625000 -0.750000 +v -0.312500 0.541266 -0.750000 +v -0.541266 0.312500 -0.750000 +v -0.625000 0.000000 -0.750000 +v -0.541266 -0.312500 -0.750000 +v -0.312500 -0.541266 -0.750000 +v 0.000000 -0.625000 -0.750000 +v 0.312500 -0.541266 -0.750000 +v 0.541265 -0.312500 -0.750000 +v 0.625000 -0.000000 -0.750000 +v 0.541266 0.312500 -0.750000 +v 0.312500 0.541266 -0.750000 +v 0.433012 -0.250000 -0.250000 +v 0.250000 -0.433013 -0.250000 +v 0.000000 -0.500000 -0.250000 +v -0.250000 -0.433013 -0.250000 +v -0.433012 -0.250000 -0.250000 +v -0.500000 0.000000 -0.250000 +v -0.433012 0.250000 -0.250000 +v -0.250000 0.433013 -0.250000 +v 0.000000 0.500000 -0.250000 +v 0.500000 -0.000000 -0.250000 +v 0.433013 0.250000 -0.250000 +v 0.250000 0.433013 -0.250000 +v -0.312500 0.541266 -0.250000 +v 0.000000 0.625000 -0.250000 +v -0.541266 0.312500 -0.250000 +v -0.625000 0.000000 -0.250000 +v -0.541266 -0.312500 -0.250000 +v -0.312500 -0.541266 -0.250000 +v 0.000000 -0.625000 -0.250000 +v 0.312500 -0.541266 -0.250000 +v 0.541265 -0.312500 -0.250000 +v 0.625000 -0.000000 -0.250000 +v 0.541266 0.312500 -0.250000 +v 0.312500 0.541266 -0.250000 +v 0.375000 0.125000 -0.375000 +v 0.375000 -0.125000 -0.375000 +v 0.375000 0.125000 -0.625000 +v 0.375000 -0.125000 -0.625000 +v 0.875000 -0.125000 -0.625000 +v 0.875000 0.125000 -0.625000 +v 0.875000 -0.125000 -0.375000 +v 0.875000 0.125000 -0.375000 +v 0.875000 -0.187500 -0.687500 +v 0.875000 0.187500 -0.687500 +v 0.625000 -0.125000 -0.375000 +v 0.625000 0.125000 -0.375000 +v 2.875000 -0.187500 -0.687500 +v 2.875000 0.187500 -0.687500 +v 0.750000 0.125000 -0.375000 +v 0.750000 -0.125000 -0.375000 +v 0.875000 -0.187500 -0.437500 +v 0.875000 -0.062500 -0.312500 +v 0.875000 0.062500 -0.312500 +v 0.875000 0.187500 -0.437500 +v 0.000000 -0.500000 7.500000 +v 2.875000 -0.062500 -0.312500 +v 2.875000 -0.187500 -0.437500 +v 2.875000 0.187500 -0.437500 +v 2.875000 0.062500 -0.312500 +v 0.625000 0.125000 -0.125000 +v 0.625000 -0.125000 -0.125000 +v 0.750000 0.125000 -0.125000 +v 0.750000 -0.125000 -0.125000 +v 0.750000 0.125000 0.000000 +v 0.750000 -0.125000 0.000000 +v 2.875000 0.125000 -0.125000 +v 2.875000 -0.125000 -0.125000 +v 2.750000 0.125000 0.000000 +v 2.750000 -0.125000 0.000000 +v 0.312500 0.541266 -3.500000 +v 0.217648 0.553754 -3.500000 +v 0.141747 0.495513 -3.500000 +v 0.129259 0.400660 -3.500000 +v 0.282352 0.312272 -3.500000 +v 0.358253 0.370513 -3.500000 +v 0.370741 0.465365 -3.500000 +v 0.312500 0.541266 4.000000 +v 0.217648 0.553754 4.000000 +v 0.141747 0.495513 4.000000 +v 0.129259 0.400660 4.000000 +v 0.282352 0.312272 4.000000 +v 0.358253 0.370513 4.000000 +v 0.370741 0.465365 4.000000 +v -0.312500 0.541266 -3.500000 +v -0.370741 0.465365 -3.500000 +v -0.358253 0.370513 -3.500000 +v -0.282352 0.312272 -3.500000 +v -0.129259 0.400660 -3.500000 +v -0.141747 0.495513 -3.500000 +v -0.217648 0.553753 -3.500000 +v -0.312500 0.541266 4.000000 +v -0.370741 0.465365 4.000000 +v -0.358253 0.370513 4.000000 +v -0.282352 0.312272 4.000000 +v -0.129259 0.400660 4.000000 +v -0.141747 0.495513 4.000000 +v -0.217648 0.553753 4.000000 +v 1.250000 1.750000 -4.250000 +v 0.896447 1.603553 -4.250000 +v 0.750000 1.250000 -4.250000 +v 0.896447 0.896447 -4.250000 +v 1.250000 0.750000 -4.250000 +v 1.603553 0.896447 -4.250000 +v 1.750000 1.250000 -4.250000 +v 1.603553 1.603553 -4.250000 +v 0.896447 1.603553 -4.000000 +v 1.250000 1.750000 -4.000000 +v 0.750000 1.250000 -4.000000 +v 0.896447 0.896447 -4.000000 +v 1.250000 0.750000 -4.000000 +v 1.603553 0.896447 -4.000000 +v 1.750000 1.250000 -4.000000 +v 1.603553 1.603553 -4.000000 +v 1.073223 1.426777 -3.750000 +v 1.250000 1.500000 -3.750000 +v 1.000000 1.250000 -3.750000 +v 1.073223 1.073223 -3.750000 +v 1.250000 1.000000 -3.750000 +v 1.426776 1.073223 -3.750000 +v 1.500000 1.250000 -3.750000 +v 1.426776 1.426777 -3.750000 +v 1.312500 1.125000 -4.187500 +v 1.187500 1.125000 -4.187500 +v 1.250000 1.500000 -4.250000 +v 1.187500 1.125000 -4.250000 +v 1.016466 1.281631 -4.093750 +v 1.016466 1.281631 -3.906250 +v 1.281631 1.016466 -3.906250 +v 1.281631 1.016466 -4.093750 +v 0.309360 0.574524 -4.093750 +v 0.309360 0.574524 -3.906250 +v 0.574524 0.309359 -3.906250 +v 0.574524 0.309359 -4.093750 +v 1.250000 1.500000 -4.187500 +v 1.312500 1.125000 -4.250000 +v 0.940640 1.559359 -4.250000 +v 1.250000 1.687500 -4.250000 +v 0.812500 1.250000 -4.250000 +v 0.940640 0.940641 -4.250000 +v 1.250000 0.812500 -4.250000 +v 1.559359 0.940641 -4.250000 +v 1.687500 1.250000 -4.250000 +v 1.559359 1.559359 -4.250000 +v 0.940640 1.559359 -4.187500 +v 1.250000 1.687500 -4.187500 +v 0.812500 1.250000 -4.187500 +v 0.940640 0.940641 -4.187500 +v 1.250000 0.812500 -4.187500 +v 1.559359 0.940641 -4.187500 +v 1.687500 1.250000 -4.187500 +v 1.559359 1.559359 -4.187500 +v 0.000000 -1.125000 -0.500000 +v 0.437500 -1.242228 -0.500000 +v 0.000000 -1.000000 -6.000000 +v 0.000000 -1.000000 -1.000000 +v 0.500000 -1.133975 -6.000000 +v 0.500000 -1.133975 -1.000000 +v 0.866025 -1.500000 -6.000000 +v 0.866025 -1.500000 -1.000000 +v 1.000000 -2.000000 -6.000000 +v 1.000000 -2.000000 -1.000000 +v 0.866025 -2.500000 -6.000000 +v 0.866025 -2.500000 -1.000000 +v 0.500000 -2.866025 -6.000000 +v 0.500000 -2.866025 -1.000000 +v 0.000000 -3.000000 -6.000000 +v 0.000000 -3.000000 -1.000000 +v -0.500000 -2.866025 -6.000000 +v -0.500000 -2.866026 -1.000000 +v -0.866025 -2.500000 -6.000000 +v -0.866025 -2.500000 -1.000000 +v -1.000000 -2.000000 -6.000000 +v -1.000000 -2.000000 -1.000000 +v -0.866026 -1.500000 -6.000000 +v -0.866026 -1.500001 -1.000000 +v -0.500000 -1.133975 -6.000000 +v -0.500000 -1.133975 -1.000000 +v 0.757772 -1.562500 -0.500000 +v 0.875000 -2.000000 -0.500000 +v 0.757772 -2.437500 -0.500000 +v 0.437500 -2.757772 -0.500000 +v 0.000000 -2.875000 -0.500000 +v -0.437500 -2.757772 -0.500000 +v -0.757772 -2.437500 -0.500000 +v -0.875000 -2.000000 -0.500000 +v -0.757772 -1.562500 -0.500000 +v -0.437500 -1.242228 -0.500000 +v 0.000000 -1.500000 -0.250000 +v 0.250000 -1.566987 -0.250000 +v 0.433013 -1.750000 -0.250000 +v 0.500000 -2.000000 -0.250000 +v 0.433012 -2.250000 -0.250000 +v 0.250000 -2.433013 -0.250000 +v 0.000000 -2.500000 -0.250000 +v -0.250000 -2.433013 -0.250000 +v -0.433012 -2.250000 -0.250000 +v -0.500000 -2.000000 -0.250000 +v -0.433013 -1.750000 -0.250000 +v -0.250000 -1.566988 -0.250000 +v 0.000000 -1.125000 -6.500000 +v 0.437500 -1.242228 -6.500000 +v 0.757772 -1.562500 -6.500000 +v 0.875000 -2.000000 -6.500000 +v 0.757772 -2.437500 -6.500000 +v 0.437500 -2.757772 -6.500000 +v 0.000000 -2.875000 -6.500000 +v -0.437500 -2.757772 -6.500000 +v -0.757772 -2.437500 -6.500000 +v -0.875000 -2.000000 -6.500000 +v -0.757772 -1.562500 -6.500000 +v -0.437500 -1.242228 -6.500000 +v 0.000000 -1.500000 -6.750000 +v 0.250000 -1.566987 -6.750000 +v 0.433013 -1.750000 -6.750000 +v 0.500000 -2.000000 -6.750000 +v 0.433012 -2.250000 -6.750000 +v 0.250000 -2.433013 -6.750000 +v 0.000000 -2.500000 -6.750000 +v -0.250000 -2.433013 -6.750000 +v -0.433012 -2.250000 -6.750000 +v -0.500000 -2.000000 -6.750000 +v -0.433013 -1.750000 -6.750000 +v -0.250000 -1.566988 -6.750000 +v 0.000000 -1.000000 -5.000000 +v -0.250000 -1.566987 -7.500000 +v -0.433013 -1.750000 -7.500000 +v -0.500000 -2.000000 -7.500000 +v 0.866025 -2.500000 -5.000000 +v 0.500000 -2.866025 -5.000000 +v 0.000000 -3.000000 -5.000000 +v -0.500000 -2.866025 -5.000000 +v -0.866025 -2.500000 -5.000000 +v -1.000000 -2.000000 -5.000000 +v -0.866026 -1.500000 -5.000000 +v -0.500000 -1.133975 -5.000000 +v 0.000000 -1.000000 -5.500000 +v 0.000000 -1.500000 -7.500000 +v 0.250000 -1.566987 -7.500000 +v 0.433013 -1.750000 -7.500000 +v 0.866025 -2.500000 -5.500000 +v 0.500000 -2.866025 -5.500000 +v 0.000000 -3.000000 -5.500000 +v -0.500000 -2.866025 -5.500000 +v -0.866025 -2.500000 -5.500000 +v -1.000000 -2.000000 -5.500000 +v -0.866026 -1.500000 -5.500000 +v -0.500000 -1.133975 -5.500000 +v 0.000000 -0.750000 -5.500000 +v -0.625000 -0.917468 -5.500000 +v -1.082532 -1.375000 -5.500000 +v -1.250000 -2.000000 -5.500000 +v -1.082532 -2.625000 -5.500000 +v -0.625000 -3.082531 -5.500000 +v 0.000000 -3.250000 -5.500000 +v 0.625000 -3.082532 -5.500000 +v 1.082531 -2.625000 -5.500000 +v 0.500000 -2.000000 -7.500000 +v 0.433012 -2.250000 -7.500000 +v 0.250000 -2.433013 -7.500000 +v 0.000000 -0.750000 -5.000000 +v -0.625000 -0.917468 -5.000000 +v -1.082532 -1.375000 -5.000000 +v -1.250000 -2.000000 -5.000000 +v -1.082532 -2.625000 -5.000000 +v -0.625000 -3.082531 -5.000000 +v 0.000000 -3.250000 -5.000000 +v 0.625000 -3.082532 -5.000000 +v 1.082531 -2.625000 -5.000000 +v 0.000000 -2.500000 -7.500000 +v -0.250000 -2.433013 -7.500000 +v -0.433012 -2.250000 -7.500000 +v 1.082531 -2.625000 -1.500000 +v -0.250000 -1.566988 -6.750000 +v -0.433013 -1.750000 -6.750000 +v -0.500000 -2.000000 -6.750000 +v 0.625000 -3.082532 -1.500000 +v 0.000000 -3.250000 -1.500000 +v -0.625000 -3.082531 -1.500000 +v -1.082532 -2.625000 -1.500000 +v -1.250000 -2.000000 -1.500000 +v -1.082532 -1.375000 -1.500000 +v -0.625000 -0.917468 -1.500000 +v 0.000000 -0.750000 -1.500000 +v 1.082531 -2.625000 -2.000000 +v -0.433012 -2.250000 -6.750000 +v -0.250000 -2.433013 -6.750000 +v 0.000000 -2.500000 -6.750000 +v 0.625000 -3.082532 -2.000000 +v 0.000000 -3.250000 -2.000000 +v -0.625000 -3.082531 -2.000000 +v -1.082532 -2.625000 -2.000000 +v -1.250000 -2.000000 -2.000000 +v -1.082532 -1.375000 -2.000000 +v -0.625000 -0.917468 -2.000000 +v 0.000000 -0.750000 -2.000000 +v -0.500000 -1.133975 -2.000000 +v -0.866026 -1.500000 -2.000000 +v -1.000000 -2.000000 -2.000000 +v -0.866025 -2.500000 -2.000000 +v -0.500000 -2.866025 -2.000000 +v 0.000000 -3.000000 -2.000000 +v 0.500000 -2.866025 -2.000000 +v 0.866025 -2.500000 -2.000000 +v 0.000000 -1.000000 -2.000000 +v 0.250000 -2.433013 -6.750000 +v 0.433012 -2.250000 -6.750000 +v 0.500000 -2.000000 -6.750000 +v -0.500000 -1.133975 -1.500000 +v -0.866026 -1.500000 -1.500000 +v -1.000000 -2.000000 -1.500000 +v -0.866025 -2.500000 -1.500000 +v -0.500000 -2.866025 -1.500000 +v 0.000000 -3.000000 -1.500000 +v 0.500000 -2.866025 -1.500000 +v 0.866025 -2.500000 -1.500000 +v 0.000000 -1.000000 -1.500000 +v 0.433013 -1.750000 -6.750000 +v 0.250000 -1.566987 -6.750000 +v 0.000000 -1.500000 -6.750000 +v -0.250000 -1.625000 -6.875000 +v 0.250000 -1.625000 -6.875000 +v -0.250000 -1.625000 -7.375000 +v 0.250000 -1.625000 -7.375000 +v -0.250000 -1.000000 -6.875000 +v 0.250000 -1.000000 -6.875000 +v -0.250000 -1.000000 -7.375000 +v 0.250000 -1.000000 -7.375000 +v 0.000000 -1.625000 -7.500000 +v -0.265165 -1.734835 -7.500000 +v -0.375000 -2.000000 -7.500000 +v -0.265165 -2.265165 -7.500000 +v 0.000000 -2.375000 -7.500000 +v 0.265165 -2.265165 -7.500000 +v 0.375000 -2.000000 -7.500000 +v 0.265165 -1.734835 -7.500000 +v 0.000000 -1.625000 -8.500000 +v -0.265165 -1.734835 -8.500000 +v -0.375000 -2.000000 -8.500000 +v -0.265165 -2.265165 -8.500000 +v 0.000000 -2.375000 -8.500000 +v 0.265165 -2.265165 -8.500000 +v 0.375000 -2.000000 -8.500000 +v 0.265165 -1.734835 -8.500000 +v 0.375000 0.000000 -8.250001 +v 0.000000 -1.478553 -8.853554 +v -0.265165 -1.556218 -8.931218 +v -0.375000 -1.743718 -9.118718 +v -0.265165 -1.931218 -9.306218 +v 0.000000 -2.008883 -9.383883 +v 0.265165 -1.931218 -9.306218 +v 0.375000 -1.743718 -9.118718 +v 0.265165 -1.556219 -8.931218 +v 0.000000 -1.125000 -9.000000 +v -0.265165 -1.125000 -9.109835 +v -0.375000 -1.125000 -9.375000 +v -0.265165 -1.125000 -9.640165 +v 0.000000 -1.125000 -9.750000 +v 0.265165 -1.125000 -9.640165 +v 0.375000 -1.125000 -9.375000 +v 0.265165 -1.125000 -9.109835 +v 0.000000 -0.875000 -9.000000 +v -0.265165 -0.875000 -9.109835 +v -0.375000 -0.875000 -9.375000 +v -0.265165 -0.875000 -9.640165 +v 0.000000 -0.875000 -9.750000 +v 0.265165 -0.875000 -9.640165 +v 0.375000 -0.875000 -9.375000 +v 0.265165 -0.875000 -9.109835 +v 0.265165 0.265166 -8.250001 +v 0.000000 0.375000 -8.250000 +v -0.265165 0.265166 -8.250001 +v -0.375000 0.000000 -8.250001 +v -0.265165 -0.265165 -8.250000 +v 0.000000 -0.375000 -8.250000 +v 0.000000 -0.375000 -8.500000 +v -0.265165 -0.265165 -8.500000 +v -0.375000 0.000000 -8.500001 +v -0.265165 0.265166 -8.500001 +v 0.000000 0.375000 -8.500000 +v 0.265165 0.265166 -8.500001 +v 0.375000 0.000000 -8.500001 +v 0.265165 -0.265165 -8.500000 +v 0.265165 -0.443782 -8.931218 +v 0.375000 -0.256282 -9.118719 +v 0.265165 -0.068781 -9.306219 +v 0.000000 0.008884 -9.383883 +v -0.265165 -0.068781 -9.306219 +v -0.375000 -0.256282 -9.118719 +v -0.265165 -0.443782 -8.931218 +v 0.000000 -0.521446 -8.853554 +v 0.265165 -0.265165 -8.250000 +v 0.000000 0.500000 -8.250000 +v -0.353553 0.353554 -8.250000 +v -0.500000 0.000000 -8.250000 +v -0.353553 -0.353553 -8.250000 +v 0.000000 -0.500000 -8.250000 +v 0.353553 -0.353553 -8.250000 +v 0.500000 0.000000 -8.250000 +v 0.353553 0.353554 -8.250000 +v -0.353553 0.353554 -8.000000 +v 0.000000 0.500000 -8.000000 +v -0.500000 0.000000 -8.000000 +v -0.353553 -0.353553 -8.000000 +v 0.000000 -0.500000 -8.000000 +v 0.353553 -0.353553 -8.000000 +v 0.500000 0.000000 -8.000000 +v 0.353553 0.353554 -8.000000 +v -0.937500 1.000000 -4.562500 +v -0.562500 1.000000 -4.562500 +v -0.937500 1.000000 -4.937500 +v -0.562500 1.000000 -4.937500 +v -0.937500 0.500000 -4.562500 +v -0.562500 0.500000 -4.562500 +v -0.937500 0.500000 -4.937500 +v -0.562500 0.500000 -4.937500 +v -0.937500 1.000000 -5.062500 +v -0.562500 1.000000 -5.062500 +v -0.937500 1.000000 -5.437500 +v -0.562500 1.000000 -5.437500 +v -0.937500 0.500000 -5.062500 +v -0.562500 0.500000 -5.062500 +v -0.937500 0.500000 -5.437500 +v -0.562500 0.500000 -5.437500 +v -0.875000 1.000000 -4.625000 +v -0.625000 1.000000 -4.625000 +v -0.875000 1.000000 -4.875000 +v -0.625000 1.000000 -4.875000 +v -0.875000 1.375000 -4.875000 +v -0.875000 1.375000 -4.625000 +v -0.625000 1.375000 -4.625000 +v -0.625000 1.375000 -4.875000 +v -0.875000 1.000000 -5.125000 +v -0.625000 1.000000 -5.125000 +v -0.875000 1.000000 -5.375000 +v -0.625000 1.000000 -5.375000 +v -0.875000 1.375000 -5.375000 +v -0.875000 1.375000 -5.125000 +v -0.625000 1.375000 -5.125000 +v -0.625000 1.375000 -5.375000 +v 0.500000 -1.000000 2.500000 +v 3.000000 -1.000000 2.500000 +v 0.500000 2.500000 2.500000 +v 3.000000 1.990000 2.500000 +v 0.500000 2.500000 2.250000 +v 0.500000 -1.000000 2.250000 +v 3.000000 -1.000000 2.250000 +v 3.000000 1.990000 2.250000 +v 1.500000 2.500000 2.500000 +v 1.500000 2.500000 2.250000 +v -3.000000 -1.000000 2.500000 +v -0.500000 -1.000000 2.500000 +v -3.000000 2.000000 2.500000 +v -0.500000 2.500000 2.500000 +v -3.000000 2.000000 2.250000 +v -3.000000 -1.000000 2.250000 +v -0.500000 -1.000000 2.250000 +v -0.500000 2.500000 2.250000 +v -1.500000 2.500000 2.500000 +v -1.500000 2.500000 2.250000 +v -0.500000 0.625000 2.437500 +v 0.500000 0.625000 2.437500 +v -0.500000 0.625000 2.312500 +v 0.500000 0.625000 2.312500 +v -0.500000 0.750000 2.312500 +v -0.500000 0.750000 2.437500 +v 0.500000 0.750000 2.437500 +v 0.500000 0.750000 2.312500 +v -0.500000 1.125000 2.437500 +v 0.500000 1.125000 2.437500 +v -0.500000 1.125000 2.312500 +v 0.500000 1.125000 2.312500 +v -0.500000 1.250000 2.312500 +v -0.500000 1.250000 2.437500 +v 0.500000 1.250000 2.437500 +v 0.500000 1.250000 2.312500 +v -0.500000 2.125000 2.437500 +v 0.500000 2.125000 2.437500 +v -0.500000 2.125000 2.312500 +v 0.500000 2.125000 2.312500 +v -0.500000 2.250000 2.312500 +v -0.500000 2.250000 2.437500 +v 0.500000 2.250000 2.437500 +v 0.500000 2.250000 2.312500 +v 2.000000 -3.000000 2.500000 +v 2.000000 -3.000000 2.250000 +v -2.000000 -3.000000 2.250000 +v -2.000000 -3.000000 2.500000 +v -2.937500 1.812500 2.250000 +v -2.812500 1.812500 2.250000 +v -2.937500 1.937500 2.250000 +v -2.812500 1.937500 2.250000 +v -0.687500 0.562500 -4.500000 +v -0.562500 0.562500 -4.500000 +v -0.687500 0.687500 -4.500000 +v -0.562500 0.687500 -4.500000 +v -1.137500 0.437500 -3.150000 +v -1.587500 0.437500 -1.800000 +v -2.037500 0.687500 -0.450000 +v -2.487500 1.187500 0.900000 +v -2.362500 1.187500 0.900000 +v -1.912500 0.687500 -0.450000 +v -1.462500 0.437500 -1.800000 +v -1.012500 0.437500 -3.150000 +v -1.012500 0.312500 -3.150000 +v -1.462500 0.312500 -1.800000 +v -1.912500 0.562500 -0.450000 +v -2.362500 1.062500 0.900000 +v -2.487500 1.062500 0.900000 +v -2.037500 0.562500 -0.450000 +v -1.587500 0.312500 -1.800000 +v -1.137500 0.312500 -3.150000 +v -0.500000 0.000000 2.125000 +v -0.433012 0.250000 2.125000 +v -0.250000 0.433013 2.125000 +v 0.000000 0.500000 2.125000 +v -0.433012 -0.250000 2.125000 +v -0.250000 -0.433013 2.125000 +v 0.000000 -0.500000 2.125000 +v 0.250000 -0.433013 2.125000 +v 0.433012 -0.250000 2.125000 +v 0.500000 -0.000000 2.125000 +v 0.433013 0.250000 2.125000 +v 0.250000 0.433013 2.125000 +v 0.000000 0.625000 2.125000 +v -0.312500 0.541266 2.125000 +v -0.541266 0.312500 2.125000 +v -0.625000 0.000000 2.125000 +v -0.541266 -0.312500 2.125000 +v -0.312500 -0.541266 2.125000 +v 0.000000 -0.625000 2.125000 +v 0.312500 -0.541266 2.125000 +v 0.541265 -0.312500 2.125000 +v 0.625000 -0.000000 2.125000 +v 0.541266 0.312500 2.125000 +v 0.312500 0.541266 2.125000 +v 0.433012 -0.250000 2.625000 +v 0.250000 -0.433013 2.625000 +v 0.000000 -0.500000 2.625000 +v -0.250000 -0.433013 2.625000 +v -0.433012 -0.250000 2.625000 +v -0.500000 0.000000 2.625000 +v -0.433012 0.250000 2.625000 +v -0.250000 0.433013 2.625000 +v 0.000000 0.500000 2.625000 +v 0.500000 -0.000000 2.625000 +v 0.433013 0.250000 2.625000 +v 0.250000 0.433013 2.625000 +v -0.312500 0.541266 2.625000 +v 0.000000 0.625000 2.625000 +v -0.541266 0.312500 2.625000 +v -0.625000 0.000000 2.625000 +v -0.541266 -0.312500 2.625000 +v -0.312500 -0.541266 2.625000 +v 0.000000 -0.625000 2.625000 +v 0.312500 -0.541266 2.625000 +v 0.541265 -0.312500 2.625000 +v 0.625000 -0.000000 2.625000 +v 0.541266 0.312500 2.625000 +v 0.312500 0.541266 2.625000 +vt 0.052023 0.334677 +vt 0.046243 0.318548 +vt 0.052023 0.318548 +vt 0.052023 0.383065 +vt 0.046243 0.366935 +vt 0.052023 0.366935 +vt 0.052023 0.245968 +vt 0.046243 0.258065 +vt 0.046243 0.245968 +vt 0.052023 0.479839 +vt 0.046243 0.463710 +vt 0.052023 0.463710 +vt 0.052023 0.407258 +vt 0.046243 0.391129 +vt 0.052023 0.391129 +vt 0.052023 0.286290 +vt 0.046243 0.270161 +vt 0.052023 0.270161 +vt 0.052023 0.197581 +vt 0.046243 0.209677 +vt 0.046243 0.197581 +vt 0.052023 0.431452 +vt 0.046243 0.415323 +vt 0.052023 0.415323 +vt 0.052023 0.310484 +vt 0.046243 0.294355 +vt 0.052023 0.294355 +vt 0.052023 0.358871 +vt 0.046243 0.342742 +vt 0.052023 0.342742 +vt 0.052023 0.237903 +vt 0.046243 0.221774 +vt 0.052023 0.221774 +vt 0.052023 0.439516 +vt 0.046243 0.451613 +vt 0.046243 0.439516 +vt 0.002476 0.496091 +vt 0.017341 0.484117 +vt 0.032206 0.496091 +vt 0.132948 0.290323 +vt 0.121387 0.310484 +vt 0.121387 0.294355 +vt 0.132948 0.314516 +vt 0.121387 0.334677 +vt 0.121387 0.318548 +vt 0.121387 0.342742 +vt 0.132948 0.362903 +vt 0.121387 0.358871 +vt 0.121387 0.366935 +vt 0.132948 0.387097 +vt 0.121387 0.383065 +vt 0.121387 0.407258 +vt 0.121387 0.391129 +vt 0.121387 0.415323 +vt 0.132948 0.435484 +vt 0.121387 0.431452 +vt 0.121387 0.455645 +vt 0.121387 0.439516 +vt 0.121387 0.463710 +vt 0.132948 0.483871 +vt 0.121387 0.479839 +vt 0.132948 0.193548 +vt 0.121387 0.213710 +vt 0.121387 0.197581 +vt 0.132948 0.217742 +vt 0.121387 0.237903 +vt 0.121387 0.221774 +vt 0.132948 0.241935 +vt 0.121387 0.262097 +vt 0.121387 0.245968 +vt 0.132948 0.266129 +vt 0.121387 0.286290 +vt 0.121387 0.270161 +vt 0.202312 0.290323 +vt 0.213873 0.310484 +vt 0.202312 0.314516 +vt 0.213873 0.334677 +vt 0.202312 0.338710 +vt 0.213873 0.342742 +vt 0.202312 0.362903 +vt 0.213873 0.366935 +vt 0.202312 0.387097 +vt 0.213873 0.407258 +vt 0.202312 0.411290 +vt 0.213873 0.415323 +vt 0.202312 0.435484 +vt 0.213873 0.455645 +vt 0.202312 0.459677 +vt 0.213873 0.463710 +vt 0.202312 0.483871 +vt 0.213873 0.197581 +vt 0.202312 0.217742 +vt 0.202312 0.193548 +vt 0.213873 0.221774 +vt 0.202312 0.241935 +vt 0.213873 0.262097 +vt 0.202312 0.266129 +vt 0.213873 0.286290 +vt 0.213873 0.366935 +vt 0.225434 0.387097 +vt 0.213873 0.383065 +vt 0.213873 0.262097 +vt 0.225434 0.241935 +vt 0.225434 0.266129 +vt 0.213873 0.463710 +vt 0.225434 0.483871 +vt 0.213873 0.479839 +vt 0.213873 0.407258 +vt 0.225434 0.411290 +vt 0.213873 0.286290 +vt 0.225434 0.290323 +vt 0.213873 0.197581 +vt 0.225434 0.217742 +vt 0.213873 0.213710 +vt 0.213873 0.415323 +vt 0.225434 0.435484 +vt 0.213873 0.431452 +vt 0.213873 0.310484 +vt 0.225434 0.314516 +vt 0.213873 0.342742 +vt 0.225434 0.362903 +vt 0.213873 0.358871 +vt 0.213873 0.221774 +vt 0.213873 0.237903 +vt 0.213873 0.455645 +vt 0.225434 0.459677 +vt 0.213873 0.334677 +vt 0.225434 0.338710 +vt 0.092486 0.677419 +vt 0.254335 0.741935 +vt 0.092486 0.741935 +vt 0.092486 0.580645 +vt 0.254335 0.645161 +vt 0.092486 0.645161 +vt 0.092486 0.483871 +vt 0.254335 0.548387 +vt 0.092486 0.548387 +vt 0.000000 0.741935 +vt 0.023121 0.645161 +vt 0.277457 0.645161 +vt 0.346821 0.677419 +vt 0.323699 0.774194 +vt 0.092486 0.774194 +vt 0.254335 0.774194 +vt 0.092486 0.870968 +vt 0.254335 0.838710 +vt 0.254335 0.870968 +vt 0.092486 0.838710 +vt 0.676301 0.943548 +vt 0.682081 0.935484 +vt 0.684971 0.943548 +vt 0.658960 0.943548 +vt 0.664740 0.935484 +vt 0.667630 0.943548 +vt 0.650289 0.943548 +vt 0.658960 0.935484 +vt 0.641618 0.943548 +vt 0.635838 0.935484 +vt 0.638728 0.935484 +vt 0.693642 0.943548 +vt 0.687861 0.935484 +vt 0.690751 0.935484 +vt 0.670520 0.935484 +vt 0.673410 0.935484 +vt 0.647399 0.935484 +vt 0.632948 0.943548 +vt 0.627168 0.935484 +vt 0.630058 0.935484 +vt 0.739884 0.903226 +vt 0.745665 0.911290 +vt 0.736994 0.911290 +vt 0.760116 0.903226 +vt 0.754335 0.911290 +vt 0.757225 0.903226 +vt 0.705202 0.903226 +vt 0.710983 0.911290 +vt 0.702312 0.911290 +vt 0.722543 0.903226 +vt 0.728324 0.911290 +vt 0.719653 0.911290 +vt 0.731214 0.903226 +vt 0.751445 0.903226 +vt 0.748555 0.903226 +vt 0.699422 0.903226 +vt 0.693642 0.911290 +vt 0.696532 0.903226 +vt 0.716763 0.903226 +vt 0.713873 0.903226 +vt 0.699422 0.548387 +vt 0.294798 0.483871 +vt 0.699422 0.483871 +vt 0.699422 0.403226 +vt 0.294798 0.387097 +vt 0.699422 0.387097 +vt 0.294798 0.467742 +vt 0.699422 0.467742 +vt 0.832370 0.395161 +vt 0.803468 0.387097 +vt 0.838150 0.387097 +vt 0.838150 0.395161 +vt 0.815029 0.435484 +vt 0.815029 0.395161 +vt 0.283237 0.483871 +vt 0.283237 0.483871 +vt 0.271676 0.467742 +vt 0.283237 0.467742 +vt 0.294798 0.403226 +vt 0.283237 0.387097 +vt 0.283237 0.403226 +vt 0.271676 0.403226 +vt 0.271676 0.387097 +vt 0.283237 0.387097 +vt 0.283237 0.548387 +vt 0.271676 0.483871 +vt 0.907514 0.370968 +vt 0.872832 0.387097 +vt 0.872832 0.370968 +vt 0.803468 0.370968 +vt 0.768786 0.387097 +vt 0.768786 0.370968 +vt 0.838150 0.370968 +vt 0.867052 0.395161 +vt 0.901734 0.395161 +vt 0.907514 0.387097 +vt 0.797688 0.395161 +vt 0.815029 0.467742 +vt 0.838150 0.435484 +vt 0.838150 0.467742 +vt 0.791907 0.395161 +vt 0.768786 0.459677 +vt 0.768786 0.395161 +vt 0.791907 0.459677 +vt 0.861272 0.395161 +vt 0.768786 0.500000 +vt 0.838150 0.491935 +vt 0.838150 0.500000 +vt 0.768786 0.548387 +vt 0.838150 0.524194 +vt 0.838150 0.548387 +vt 0.768786 0.524194 +vt 0.838150 0.508065 +vt 0.809249 0.596774 +vt 0.786127 0.564516 +vt 0.809249 0.564516 +vt 0.786127 0.653226 +vt 0.809249 0.620968 +vt 0.809249 0.653226 +vt 0.786127 0.620968 +vt 0.786127 0.596774 +vt 0.809249 0.548387 +vt 0.774566 0.564516 +vt 0.820809 0.564516 +vt 0.826590 0.596774 +vt 0.768786 0.508065 +vt 0.838150 0.483871 +vt 0.768786 0.491935 +vt 0.768786 0.483871 +vt 0.838150 0.467742 +vt 1.000000 0.330645 +vt 0.994220 0.310484 +vt 1.000000 0.314516 +vt 1.000000 0.350806 +vt 0.994220 0.330645 +vt 1.000000 0.334677 +vt 1.000000 0.370968 +vt 0.994220 0.350806 +vt 1.000000 0.354839 +vt 1.000000 0.391129 +vt 0.994220 0.370968 +vt 1.000000 0.375000 +vt 1.000000 0.411290 +vt 0.994220 0.391129 +vt 1.000000 0.395161 +vt 1.000000 0.431452 +vt 0.994220 0.411290 +vt 1.000000 0.415323 +vt 1.000000 0.435484 +vt 0.994220 0.451613 +vt 0.994220 0.431452 +vt 1.000000 0.455645 +vt 0.994220 0.471774 +vt 1.000000 0.475806 +vt 0.994220 0.491935 +vt 1.000000 0.270161 +vt 0.994220 0.250000 +vt 1.000000 0.254032 +vt 1.000000 0.274194 +vt 0.994220 0.290323 +vt 0.994220 0.270161 +vt 1.000000 0.310484 +vt 1.000000 0.294355 +vt 0.971098 0.310484 +vt 0.965318 0.330645 +vt 0.965318 0.314516 +vt 0.971098 0.330645 +vt 0.965318 0.350806 +vt 0.965318 0.334677 +vt 0.971098 0.350806 +vt 0.965318 0.370968 +vt 0.965318 0.354839 +vt 0.971098 0.370968 +vt 0.965318 0.391129 +vt 0.965318 0.375000 +vt 0.971098 0.391129 +vt 0.965318 0.411290 +vt 0.965318 0.395161 +vt 0.971098 0.411290 +vt 0.965318 0.431452 +vt 0.965318 0.415323 +vt 0.965318 0.435484 +vt 0.971098 0.451613 +vt 0.965318 0.451613 +vt 0.965318 0.455645 +vt 0.971098 0.471774 +vt 0.965318 0.471774 +vt 0.965318 0.475806 +vt 0.971098 0.491935 +vt 0.965318 0.491935 +vt 0.971098 0.250000 +vt 0.965318 0.270161 +vt 0.965318 0.254032 +vt 0.965318 0.274194 +vt 0.971098 0.290323 +vt 0.965318 0.290323 +vt 0.965318 0.310484 +vt 0.965318 0.294355 +vt 0.890173 0.895161 +vt 0.797688 0.879032 +vt 0.890173 0.879032 +vt 0.786127 0.854839 +vt 0.797688 0.854839 +vt 0.927746 0.870968 +vt 0.904624 0.854839 +vt 0.927746 0.854839 +vt 0.927746 0.887097 +vt 0.904624 0.870968 +vt 0.927746 0.919355 +vt 0.904624 0.903226 +vt 0.927746 0.903226 +vt 0.890173 0.911290 +vt 0.797688 0.903226 +vt 0.890173 0.903226 +vt 0.797688 0.911290 +vt 0.890173 0.915323 +vt 0.797688 0.919355 +vt 0.893064 0.875000 +vt 0.890173 0.854839 +vt 0.893064 0.858871 +vt 0.462428 0.959677 +vt 0.450867 0.951613 +vt 0.462428 0.951613 +vt 0.450867 0.983871 +vt 0.445087 0.983871 +vt 0.450867 0.975806 +vt 0.797688 0.895161 +vt 0.890173 0.899194 +vt 0.893064 0.915323 +vt 0.901734 0.854839 +vt 0.904624 0.858871 +vt 0.901734 0.879032 +vt 0.904624 0.875000 +vt 0.890173 0.935484 +vt 0.890173 0.919355 +vt 0.462428 0.983871 +vt 0.462428 0.975806 +vt 0.450867 0.959677 +vt 0.450867 0.935484 +vt 0.462428 0.935484 +vt 0.445087 0.983871 +vt 0.352601 0.975806 +vt 0.445087 0.975806 +vt 0.445087 0.951613 +vt 0.346821 0.959677 +vt 0.346821 0.975806 +vt 0.445087 0.951613 +vt 0.352601 0.959677 +vt 0.346821 0.951613 +vt 0.346821 0.935484 +vt 0.445087 0.935484 +vt 0.445087 0.959677 +vt 0.930636 0.129032 +vt 0.927746 0.153226 +vt 0.927746 0.129032 +vt 0.965329 0.016129 +vt 0.976879 0.000015 +vt 0.988428 0.016129 +vt 0.959538 0.056452 +vt 0.962428 0.080645 +vt 0.959538 0.080645 +vt 0.979769 0.084677 +vt 0.962428 0.088710 +vt 0.956647 0.491935 +vt 0.973988 0.556452 +vt 0.956647 0.556452 +vt 0.930636 0.556452 +vt 0.947977 0.491935 +vt 0.947977 0.556452 +vt 0.959538 0.088710 +vt 0.930636 0.225806 +vt 0.927746 0.201613 +vt 0.930636 0.201613 +vt 0.962428 0.112903 +vt 0.959538 0.112903 +vt 0.930636 0.177419 +vt 0.930636 0.153226 +vt 0.973988 0.491935 +vt 0.982659 0.556452 +vt 0.930636 0.080645 +vt 0.927746 0.056452 +vt 0.930636 0.056452 +vt 0.930636 0.104839 +vt 0.927746 0.104839 +vt 0.927746 0.177419 +vt 0.930636 0.250000 +vt 0.927746 0.225806 +vt 0.927746 0.080645 +vt 0.945086 0.000034 +vt 0.959375 0.008291 +vt 0.965293 0.028226 +vt 0.722543 0.463710 +vt 0.734104 0.427419 +vt 0.734104 0.467742 +vt 0.722543 0.504032 +vt 0.734104 0.508065 +vt 0.722543 0.544355 +vt 0.734104 0.548387 +vt 0.722543 0.584677 +vt 0.734104 0.588710 +vt 0.722543 0.625000 +vt 0.734104 0.629032 +vt 0.722543 0.665323 +vt 0.734104 0.669355 +vt 0.722543 0.705645 +vt 0.734104 0.709677 +vt 0.708338 0.725837 +vt 0.748309 0.725837 +vt 0.728324 0.774132 +vt 0.757225 0.387097 +vt 0.734104 0.370968 +vt 0.757225 0.370968 +vt 0.768786 0.705645 +vt 0.757225 0.669355 +vt 0.768786 0.673387 +vt 0.722543 0.423387 +vt 0.734104 0.387097 +vt 0.734104 0.427419 +vt 0.768786 0.665323 +vt 0.757225 0.629032 +vt 0.768786 0.633065 +vt 0.768786 0.423387 +vt 0.768786 0.391129 +vt 0.768786 0.463710 +vt 0.757225 0.427419 +vt 0.768786 0.431452 +vt 0.768786 0.504032 +vt 0.757225 0.467742 +vt 0.768786 0.471774 +vt 0.768786 0.625000 +vt 0.757225 0.588710 +vt 0.768786 0.592742 +vt 0.768786 0.544355 +vt 0.757225 0.508065 +vt 0.768786 0.512097 +vt 0.768786 0.584677 +vt 0.757225 0.548387 +vt 0.768786 0.552419 +vt 0.768786 0.584677 +vt 0.757225 0.548387 +vt 0.768786 0.552419 +vt 0.768786 0.625000 +vt 0.757225 0.588710 +vt 0.768786 0.592742 +vt 0.768786 0.665323 +vt 0.757225 0.629032 +vt 0.768786 0.633065 +vt 0.768786 0.705645 +vt 0.757225 0.669355 +vt 0.768786 0.673387 +vt 0.768786 0.544355 +vt 0.757225 0.508065 +vt 0.768786 0.512097 +vt 0.722543 0.705645 +vt 0.734104 0.669355 +vt 0.734104 0.709677 +vt 0.768786 0.504032 +vt 0.757225 0.467742 +vt 0.768786 0.471774 +vt 0.768786 0.463710 +vt 0.757225 0.427419 +vt 0.768786 0.431452 +vt 0.722543 0.665323 +vt 0.734104 0.629032 +vt 0.768786 0.423387 +vt 0.757225 0.387097 +vt 0.768786 0.391129 +vt 0.722543 0.423387 +vt 0.734104 0.387097 +vt 0.734104 0.370968 +vt 0.757225 0.370968 +vt 0.722543 0.625000 +vt 0.734104 0.588710 +vt 0.722543 0.584677 +vt 0.734104 0.548387 +vt 0.722543 0.544355 +vt 0.734104 0.508065 +vt 0.748309 0.790353 +vt 0.748309 0.822550 +vt 0.708338 0.822550 +vt 0.722543 0.504032 +vt 0.734104 0.467742 +vt 0.722543 0.463710 +vt 0.884393 0.500000 +vt 0.861272 0.459677 +vt 0.884393 0.459677 +vt 0.930636 0.500000 +vt 0.907514 0.459677 +vt 0.930636 0.459677 +vt 0.907514 0.500000 +vt 0.861272 0.500000 +vt 0.838150 0.459677 +vt 0.826390 0.685484 +vt 0.803468 0.717463 +vt 0.780547 0.685484 +vt 0.965318 0.612903 +vt 0.982659 0.588710 +vt 0.982659 0.612903 +vt 0.965318 0.612903 +vt 0.982659 0.588710 +vt 0.982659 0.612903 +vt 0.947977 0.588710 +vt 0.965318 0.556452 +vt 0.965318 0.588710 +vt 1.000000 0.556452 +vt 1.000000 0.588710 +vt 0.982659 0.556452 +vt 0.930636 0.588710 +vt 0.947977 0.556452 +vt 0.947977 0.588710 +vt 0.965318 0.556452 +vt 0.965318 0.588710 +vt 1.000000 0.556452 +vt 1.000000 0.588710 +vt 0.982659 0.556452 +vt 0.930636 0.588710 +vt 0.947977 0.556452 +vt 0.953757 0.653226 +vt 0.965318 0.637097 +vt 0.965318 0.653226 +vt 0.953757 0.653226 +vt 0.965318 0.637097 +vt 0.965318 0.653226 +vt 0.953757 0.612903 +vt 0.942197 0.637097 +vt 0.942197 0.612903 +vt 0.976879 0.612903 +vt 0.965318 0.612903 +vt 0.953757 0.637097 +vt 0.930636 0.637097 +vt 0.930636 0.612903 +vt 0.953757 0.612903 +vt 0.942197 0.637097 +vt 0.942197 0.612903 +vt 0.976879 0.612903 +vt 0.965318 0.612903 +vt 0.953757 0.637097 +vt 0.930636 0.637097 +vt 0.930636 0.612903 +vt 0.566474 0.370968 +vt 0.520231 0.145161 +vt 0.635838 0.338710 +vt 0.647399 0.338710 +vt 0.763006 0.145161 +vt 0.716763 0.370968 +vt 0.635838 0.145161 +vt 0.520231 0.370968 +vt 0.508671 0.145161 +vt 0.635838 0.370968 +vt 0.566474 0.387097 +vt 0.346821 0.145161 +vt 0.358382 0.016129 +vt 0.358382 0.145161 +vt 0.520231 0.387097 +vt 0.473988 0.145161 +vt 0.427746 0.370968 +vt 0.358382 0.338710 +vt 0.855491 0.370968 +vt 0.809249 0.370968 +vt 0.809249 0.145161 +vt 0.485549 0.370968 +vt 0.473988 0.370968 +vt 0.427746 0.387097 +vt 0.404624 0.016129 +vt 0.358382 0.387097 +vt 0.358382 0.370968 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.976879 0.669355 +vt 0.930636 0.677419 +vt 0.930636 0.669355 +vt 0.930636 0.653226 +vt 0.976879 0.661290 +vt 0.930636 0.661290 +vt 0.930636 0.685484 +vt 0.976879 0.677419 +vt 0.976879 0.685484 +vt 0.589595 -0.000000 +vt 0.589595 0.016129 +vt 0.647399 0.016129 +vt 0.647399 0.145161 +vt 0.693642 0.016129 +vt 0.965318 0.330645 +vt 0.959538 0.310484 +vt 0.965318 0.314516 +vt 0.965318 0.350806 +vt 0.959538 0.330645 +vt 0.965318 0.334677 +vt 0.965318 0.370968 +vt 0.959538 0.350806 +vt 0.965318 0.354839 +vt 0.965318 0.391129 +vt 0.959538 0.370968 +vt 0.965318 0.375000 +vt 0.965318 0.411290 +vt 0.959538 0.391129 +vt 0.965318 0.395161 +vt 0.965318 0.431452 +vt 0.959538 0.411290 +vt 0.965318 0.415323 +vt 0.965318 0.435484 +vt 0.959538 0.451613 +vt 0.959538 0.431452 +vt 0.965318 0.455645 +vt 0.959538 0.471774 +vt 0.965318 0.475806 +vt 0.959538 0.491935 +vt 0.965318 0.270161 +vt 0.959538 0.250000 +vt 0.965318 0.254032 +vt 0.965318 0.274194 +vt 0.959538 0.290323 +vt 0.959538 0.270161 +vt 0.965318 0.310484 +vt 0.965318 0.294355 +vt 0.936416 0.310484 +vt 0.930636 0.330645 +vt 0.930636 0.314516 +vt 0.936416 0.330645 +vt 0.930636 0.350806 +vt 0.930636 0.334677 +vt 0.936416 0.350806 +vt 0.930636 0.370968 +vt 0.930636 0.354839 +vt 0.936416 0.370968 +vt 0.930636 0.391129 +vt 0.930636 0.375000 +vt 0.936416 0.391129 +vt 0.930636 0.411290 +vt 0.930636 0.395161 +vt 0.936416 0.411290 +vt 0.930636 0.431452 +vt 0.930636 0.415323 +vt 0.930636 0.435484 +vt 0.936416 0.451613 +vt 0.930636 0.451613 +vt 0.930636 0.455645 +vt 0.936416 0.471774 +vt 0.930636 0.471774 +vt 0.930636 0.475806 +vt 0.936416 0.491935 +vt 0.930636 0.491935 +vt 0.936416 0.250000 +vt 0.930636 0.270161 +vt 0.930636 0.254032 +vt 0.930636 0.274194 +vt 0.936416 0.290323 +vt 0.930636 0.290323 +vt 0.930636 0.310484 +vt 0.930636 0.294355 +vt 0.046243 0.330645 +vt 0.046243 0.379032 +vt 0.052023 0.262097 +vt 0.046243 0.475806 +vt 0.046243 0.403226 +vt 0.046243 0.282258 +vt 0.052023 0.213710 +vt 0.046243 0.427419 +vt 0.046243 0.306452 +vt 0.046243 0.354839 +vt 0.046243 0.233871 +vt 0.052023 0.455645 +vt 0.017341 0.532012 +vt 0.008759 0.528803 +vt 0.002476 0.520038 +vt 0.000177 0.508065 +vt 0.008759 0.487326 +vt 0.025923 0.487326 +vt 0.034506 0.508065 +vt 0.032206 0.520038 +vt 0.025923 0.528803 +vt 0.132948 0.338710 +vt 0.132948 0.411290 +vt 0.132948 0.459677 +vt 0.213873 0.294355 +vt 0.213873 0.318548 +vt 0.213873 0.358871 +vt 0.213873 0.383065 +vt 0.213873 0.391129 +vt 0.213873 0.431452 +vt 0.213873 0.439516 +vt 0.213873 0.479839 +vt 0.213873 0.213710 +vt 0.213873 0.237903 +vt 0.213873 0.245968 +vt 0.213873 0.270161 +vt 0.213873 0.245968 +vt 0.213873 0.391129 +vt 0.213873 0.270161 +vt 0.225434 0.193548 +vt 0.213873 0.294355 +vt 0.213873 0.439516 +vt 0.213873 0.318548 +vt 0.254335 0.677419 +vt 0.254335 0.580645 +vt 0.254335 0.483871 +vt 0.069364 0.774194 +vt 0.023121 0.774194 +vt 0.000000 0.677419 +vt 0.069364 0.645161 +vt 0.277457 0.774194 +vt 0.323699 0.645161 +vt 0.346821 0.741935 +vt 0.679191 0.935484 +vt 0.661850 0.935484 +vt 0.653179 0.935484 +vt 0.644509 0.935484 +vt 0.624277 0.943548 +vt 0.742775 0.903226 +vt 0.763006 0.911290 +vt 0.708093 0.903226 +vt 0.725434 0.903226 +vt 0.734104 0.903226 +vt 0.294798 0.548387 +vt 0.809249 0.395161 +vt 0.271676 0.548387 +vt 0.843931 0.395161 +vt 0.878613 0.395161 +vt 0.774566 0.395161 +vt 0.861272 0.459677 +vt 0.786127 0.548387 +vt 0.768786 0.596774 +vt 0.768786 0.467742 +vt 1.000000 0.451613 +vt 1.000000 0.471774 +vt 1.000000 0.491935 +vt 1.000000 0.290323 +vt 0.971098 0.431452 +vt 0.971098 0.270161 +vt 0.786127 0.879032 +vt 0.780347 0.870968 +vt 0.780347 0.862903 +vt 0.904624 0.887097 +vt 0.904624 0.919355 +vt 0.893064 0.899194 +vt 0.797688 0.935484 +vt 0.346821 0.983871 +vt 0.976879 0.032243 +vt 0.968712 0.027523 +vt 0.968712 0.004735 +vt 0.985046 0.004735 +vt 0.985046 0.027523 +vt 0.962428 0.056452 +vt 0.930636 0.491935 +vt 0.982659 0.491935 +vt 0.927746 0.250000 +vt 0.959375 0.048160 +vt 0.945086 0.056418 +vt 0.930798 0.048160 +vt 0.924880 0.028226 +vt 0.930798 0.008291 +vt 0.722543 0.431452 +vt 0.722543 0.471774 +vt 0.722543 0.512097 +vt 0.722543 0.552419 +vt 0.722543 0.592742 +vt 0.722543 0.633065 +vt 0.722543 0.673387 +vt 0.716785 0.769818 +vt 0.708338 0.758034 +vt 0.705247 0.741936 +vt 0.716785 0.714053 +vt 0.728324 0.709739 +vt 0.739862 0.714053 +vt 0.751401 0.741935 +vt 0.748309 0.758034 +vt 0.739862 0.769819 +vt 0.757225 0.709677 +vt 0.722543 0.391129 +vt 0.757225 0.709677 +vt 0.722543 0.673387 +vt 0.722543 0.633065 +vt 0.722543 0.391129 +vt 0.722543 0.592742 +vt 0.722543 0.552419 +vt 0.722543 0.512097 +vt 0.739862 0.834335 +vt 0.728324 0.838648 +vt 0.716785 0.834335 +vt 0.705246 0.806452 +vt 0.708338 0.790353 +vt 0.716785 0.778569 +vt 0.728324 0.774255 +vt 0.739862 0.778569 +vt 0.751401 0.806452 +vt 0.722543 0.471774 +vt 0.722543 0.431452 +vt 0.838150 0.500000 +vt 0.819676 0.708097 +vt 0.787260 0.708097 +vt 0.787260 0.662871 +vt 0.803468 0.653505 +vt 0.819676 0.662871 +vt 0.930636 0.556452 +vt 0.930636 0.556452 +vt 0.976879 0.637097 +vt 0.976879 0.637097 +vt 0.763006 0.370968 +vt 0.508671 0.370968 +vt 0.635838 0.387097 +vt 0.346821 0.016129 +vt 0.924855 0.145161 +vt 0.924855 0.338710 +vt 0.485549 0.145161 +vt 0.346821 0.338710 +vt 0.473988 0.387097 +vt 0.976879 0.653226 +vt 0.976879 0.653226 +vt 0.976879 0.653226 +vt 0.404624 0.000000 +vt 0.635838 0.016129 +vt 0.878613 0.016129 +vt 0.965318 0.451613 +vt 0.965318 0.471774 +vt 0.965318 0.491935 +vt 0.965318 0.290323 +vt 0.936416 0.431452 +vt 0.936416 0.270161 +vt 0.109827 0.314516 +vt 0.109827 0.338710 +vt 0.109827 0.362903 +vt 0.109827 0.387097 +vt 0.109827 0.411290 +vt 0.109827 0.459677 +vt 0.109827 0.483871 +vt 0.109827 0.193548 +vt 0.109827 0.217742 +vt 0.109827 0.241935 +vt 0.109827 0.290323 +vt 0.109827 0.435484 +vt 0.109827 0.266129 +vt 0.000000 0.270161 +vt 0.000000 0.197581 +vt 0.000000 0.415323 +vt 0.000000 0.294355 +vt 0.000000 0.342742 +vt 0.000000 0.221774 +vt 0.000000 0.439516 +vt 0.000000 0.318548 +vt 0.000000 0.366935 +vt 0.000000 0.245968 +vt 0.000000 0.463710 +vt 0.000000 0.391129 +vt -0.000000 0.032258 +vt 0.346821 0.048387 +vt -0.000000 0.048387 +vt -0.000000 0.177419 +vt 0.346821 0.193548 +vt -0.000000 0.193548 +vt -0.000000 0.129032 +vt 0.346821 0.145161 +vt -0.000000 0.145161 +vt 0.346821 0.064516 +vt -0.000000 0.064516 +vt -0.000000 -0.000000 +vt 0.346821 0.016129 +vt -0.000000 0.016129 +vt 0.346821 0.161290 +vt -0.000000 0.161290 +vt 0.346821 0.080645 +vt -0.000000 0.080645 +vt -0.000000 0.096774 +vt 0.346821 0.112903 +vt -0.000000 0.112903 +vt 0.346821 0.032258 +vt 0.346821 0.177419 +vt 0.346821 0.096774 +vt 0.346821 0.129032 +vt 0.271676 0.338710 +vt 0.271676 0.387097 +vt 0.271676 0.266129 +vt 0.271676 0.483871 +vt 0.271676 0.411290 +vt 0.271676 0.290323 +vt 0.271676 0.217742 +vt 0.271676 0.435484 +vt 0.271676 0.314516 +vt 0.271676 0.362903 +vt 0.271676 0.241935 +vt 0.271676 0.459677 +vt 0.650289 0.959677 +vt 0.641618 0.959677 +vt 0.632948 0.959677 +vt 0.624277 0.959677 +vt 0.684971 0.959677 +vt 0.676301 0.959677 +vt 0.667630 0.959677 +vt 0.658960 0.959677 +vt 0.693642 0.959677 +vt 0.624277 0.983871 +vt 0.612717 0.975806 +vt 0.624277 0.975806 +vt 0.624277 1.000000 +vt 0.612717 0.991935 +vt 0.624277 0.991935 +vt 0.624277 0.951613 +vt 0.612717 0.943548 +vt 0.624277 0.943548 +vt 0.624277 0.967742 +vt 0.612717 0.959677 +vt 0.624277 0.959677 +vt 0.612717 0.967742 +vt 0.612717 0.983871 +vt 0.612717 0.935484 +vt 0.624277 0.935484 +vt 0.612717 0.951613 +vt 0.606936 0.943548 +vt 0.601156 0.935484 +vt 0.604046 0.935484 +vt 0.601156 0.951613 +vt 0.609827 0.951613 +vt 0.601156 0.983871 +vt 0.601156 0.975806 +vt 0.606936 0.991935 +vt 0.601156 1.000000 +vt 0.601156 0.991935 +vt 0.601156 0.943548 +vt 0.601156 0.967742 +vt 0.601156 0.959677 +vt 0.609827 0.983871 +vt 0.589595 0.967742 +vt 0.592486 0.983871 +vt 0.595376 0.943548 +vt 0.598266 0.935484 +vt 0.592486 0.951613 +vt 0.589595 0.975806 +vt 0.595376 0.991935 +vt 0.589595 0.959677 +vt 0.589595 1.000000 +vt 0.497110 0.991935 +vt 0.589595 0.991935 +vt 0.589595 0.951613 +vt 0.497110 0.943548 +vt 0.589595 0.943548 +vt 0.497110 0.959677 +vt 0.497110 0.967742 +vt 0.497110 0.983871 +vt 0.589595 0.983871 +vt 0.497110 0.935484 +vt 0.589595 0.935484 +vt 0.497110 0.951613 +vt 0.497110 0.975806 +vt 0.485549 0.983871 +vt 0.485549 0.975806 +vt 0.491329 0.991935 +vt 0.485549 1.000000 +vt 0.485549 0.991935 +vt 0.494220 0.951613 +vt 0.485549 0.943548 +vt 0.491329 0.943548 +vt 0.485549 0.967742 +vt 0.485549 0.959677 +vt 0.494220 0.983871 +vt 0.488439 0.935484 +vt 0.485549 0.935484 +vt 0.485549 0.951613 +vt 0.479769 0.991935 +vt 0.476879 0.983871 +vt 0.479769 0.943548 +vt 0.482659 0.935484 +vt 0.473988 0.959677 +vt 0.476879 0.951613 +vt 0.473988 0.975806 +vt 0.473988 0.967742 +vt 0.462428 0.967742 +vt 0.462428 0.959677 +vt 0.473988 0.983871 +vt 0.462428 0.991935 +vt 0.462428 0.983871 +vt 0.473988 0.935484 +vt 0.462428 0.943548 +vt 0.462428 0.935484 +vt 0.473988 0.951613 +vt 0.462428 0.951613 +vt 0.462428 0.975806 +vt 0.473988 1.000000 +vt 0.473988 0.991935 +vt 0.473988 0.943548 +vt 0.719653 0.943548 +vt 0.713873 0.943548 +vt 0.739884 0.943548 +vt 0.757225 0.943548 +vt 0.705202 0.943548 +vt 0.728324 0.943548 +vt 0.722543 0.943548 +vt 0.731214 0.943548 +vt 0.754335 0.943548 +vt 0.748555 0.943548 +vt 0.702312 0.943548 +vt 0.696532 0.943548 +vt 0.346821 0.879032 +vt -0.000000 0.870968 +vt 0.346821 0.870968 +vt 0.346821 0.911290 +vt -0.000000 0.903226 +vt 0.346821 0.903226 +vt 0.346821 0.887097 +vt -0.000000 0.879032 +vt 0.346821 0.919355 +vt -0.000000 0.911290 +vt -0.000000 0.895161 +vt 0.346821 0.895161 +vt -0.000000 0.887097 +vt 0.346821 0.927419 +vt 0.000000 0.919355 +vt 0.346821 0.919355 +vt 0.346821 0.959677 +vt 0.000000 0.951613 +vt 0.346821 0.951613 +vt 0.346821 0.935484 +vt 0.000000 0.927419 +vt 0.346821 0.967742 +vt 0.000000 0.959677 +vt 0.000000 0.943548 +vt 0.346821 0.943548 +vt 0.000000 0.935484 +vt 0.942197 0.080645 +vt 0.959538 0.060484 +vt 0.959538 0.072581 +vt 0.942197 0.153226 +vt 0.942197 0.177419 +vt 0.942197 0.225806 +vt 0.942197 0.129032 +vt 0.942197 0.201613 +vt 0.942197 0.250000 +vt 0.942197 0.104839 +vt 0.959538 0.120968 +vt 0.959538 0.193548 +vt 0.959538 0.241935 +vt 0.959538 0.084677 +vt 0.959538 0.096774 +vt 0.959538 0.145161 +vt 0.959538 0.169355 +vt 0.959538 0.217742 +vt 0.924855 0.201613 +vt 0.924855 0.056452 +vt 0.924855 0.104839 +vt 0.924855 0.177419 +vt 0.924855 0.225806 +vt 0.924855 0.080645 +vt 0.924855 0.129032 +vt 0.924855 0.153226 +vt 0.346821 0.604839 +vt 0.369942 0.580645 +vt 0.369942 0.612903 +vt 0.393064 0.741935 +vt 0.369942 0.709677 +vt 0.393064 0.709677 +vt 0.624277 0.709677 +vt 0.624277 0.741935 +vt 0.369942 0.645161 +vt 0.346821 0.620968 +vt 0.393064 0.774194 +vt 0.369942 0.806452 +vt 0.369942 0.774194 +vt 0.624277 0.677419 +vt 0.367052 0.935484 +vt 0.346821 0.911290 +vt 0.369942 0.903226 +vt 0.369942 0.741935 +vt 0.393064 0.677419 +vt 0.624277 0.645161 +vt 0.346821 0.895161 +vt 0.369942 0.870968 +vt 0.369942 0.677419 +vt 0.393064 0.645161 +vt 0.624277 0.612903 +vt 0.346821 0.862903 +vt 0.369942 0.838710 +vt 0.393064 0.612903 +vt 0.624277 0.580645 +vt 0.346821 0.814516 +vt 0.393064 0.580645 +vt 0.369942 0.548387 +vt 0.393064 0.548387 +vt 0.624277 0.548387 +vt 0.346821 0.782258 +vt 0.393064 0.903226 +vt 0.393064 0.870968 +vt 0.393064 0.935484 +vt 0.624277 0.903226 +vt 0.624277 0.935484 +vt 0.346821 0.750000 +vt 0.393064 0.838710 +vt 0.393064 0.806452 +vt 0.624277 0.870968 +vt 0.346821 0.733871 +vt 0.624277 0.838710 +vt 0.346821 0.685484 +vt 0.624277 0.806452 +vt 0.346821 0.669355 +vt 0.624277 0.774194 +vt 0.346821 0.572581 +vt 0.647399 0.612903 +vt 0.647399 0.645161 +vt 0.343702 0.564533 +vt 0.343702 0.596757 +vt 0.303697 0.596757 +vt 0.670520 0.669355 +vt 0.647399 0.677419 +vt 0.647399 0.709677 +vt 0.647399 0.741935 +vt 0.647399 0.774194 +vt 0.647399 0.806452 +vt 0.647399 0.838710 +vt 0.647399 0.870968 +vt 0.647399 0.935484 +vt 0.647399 0.903226 +vt 0.647399 0.580645 +vt 0.303697 0.790340 +vt 0.343702 0.790340 +vt 0.323699 0.838676 +vt 0.670520 0.685484 +vt 0.670520 0.701613 +vt 0.670520 0.733871 +vt 0.670520 0.750000 +vt 0.670520 0.766129 +vt 0.670520 0.798387 +vt 0.670520 0.830645 +vt 0.670520 0.846774 +vt 0.670520 0.862903 +vt 0.670520 0.895161 +vt 0.670520 0.911290 +vt 0.670520 0.927419 +vt 0.670520 0.556452 +vt 0.670520 0.572581 +vt 0.670520 0.604839 +vt 0.670520 0.637097 +vt 0.699422 0.471774 +vt 0.699422 0.504032 +vt 0.699422 0.633065 +vt 0.699422 0.665323 +vt 0.699422 0.512097 +vt 0.699422 0.544355 +vt 0.699422 0.391129 +vt 0.699422 0.423387 +vt 0.699422 0.673387 +vt 0.699422 0.705645 +vt 0.699422 0.552419 +vt 0.699422 0.584677 +vt 0.699422 0.431452 +vt 0.699422 0.463710 +vt 0.699422 0.592742 +vt 0.699422 0.625000 +vt 0.699422 0.592742 +vt 0.699422 0.625000 +vt 0.699422 0.431452 +vt 0.699422 0.463710 +vt 0.699422 0.552419 +vt 0.699422 0.584677 +vt 0.699422 0.673387 +vt 0.699422 0.705645 +vt 0.699422 0.391129 +vt 0.699422 0.423387 +vt 0.699422 0.512097 +vt 0.699422 0.544355 +vt 0.699422 0.633065 +vt 0.699422 0.665323 +vt 0.699422 0.471774 +vt 0.699422 0.504032 +vt 0.670520 0.887097 +vt 0.705202 0.903226 +vt 0.670520 0.903226 +vt 0.670520 0.854839 +vt 0.705202 0.870968 +vt 0.670520 0.870968 +vt 0.670520 0.806452 +vt 0.705202 0.790323 +vt 0.705202 0.806452 +vt 0.670520 0.741935 +vt 0.705202 0.758065 +vt 0.670520 0.758065 +vt 0.670520 0.709677 +vt 0.705202 0.725806 +vt 0.670520 0.725806 +vt 0.670520 0.838710 +vt 0.705202 0.854839 +vt 0.670520 0.774194 +vt 0.705202 0.774194 +vt 0.705202 0.741935 +vt 0.670520 0.822581 +vt 0.705202 0.838710 +vt 0.705202 0.887097 +vt 0.670520 0.790323 +vt 0.705202 0.822581 +vt 0.849711 0.564516 +vt 0.838150 0.500000 +vt 0.849711 0.500000 +vt 0.872832 0.564516 +vt 0.861272 0.500000 +vt 0.872832 0.500000 +vt 0.895954 0.564516 +vt 0.884393 0.500000 +vt 0.895954 0.500000 +vt 0.919075 0.564516 +vt 0.907514 0.500000 +vt 0.919075 0.500000 +vt 0.861272 0.564516 +vt 0.884393 0.564516 +vt 0.907514 0.564516 +vt 0.930636 0.564516 +vt 0.930636 0.500000 +vt 0.919075 0.612903 +vt 0.907514 0.576613 +vt 0.919075 0.580645 +vt 0.861272 0.576613 +vt 0.849711 0.612903 +vt 0.849711 0.580645 +vt 0.884393 0.629032 +vt 0.872832 0.568548 +vt 0.907514 0.616935 +vt 0.895954 0.568548 +vt 0.930636 0.584677 +vt 0.838150 0.584677 +vt 0.861272 0.616935 +vt 0.861272 0.641129 +vt 0.849711 0.677419 +vt 0.849711 0.645161 +vt 0.872832 0.689516 +vt 0.872832 0.633065 +vt 0.907514 0.681452 +vt 0.895954 0.633065 +vt 0.907514 0.641129 +vt 0.930636 0.649194 +vt 0.919075 0.677419 +vt 0.919075 0.645161 +vt 0.838150 0.649194 +vt 0.861272 0.681452 +vt 0.895954 0.689516 +vt 0.919075 0.693548 +vt 0.907514 0.709677 +vt 0.907514 0.693548 +vt 0.861272 0.709677 +vt 0.849711 0.693548 +vt 0.861272 0.693548 +vt 0.884393 0.693548 +vt 0.872832 0.709677 +vt 0.872832 0.693548 +vt 0.895954 0.693548 +vt 0.930636 0.693548 +vt 0.919075 0.709677 +vt 0.849711 0.709677 +vt 0.838150 0.693548 +vt 0.895954 0.709677 +vt 0.895954 0.854839 +vt 0.884393 0.838710 +vt 0.895954 0.838710 +vt 0.872832 0.854839 +vt 0.861272 0.838710 +vt 0.872832 0.838710 +vt 0.849711 0.854839 +vt 0.838150 0.838710 +vt 0.849711 0.838710 +vt 0.930636 0.854839 +vt 0.919075 0.838710 +vt 0.930636 0.838710 +vt 0.907514 0.854839 +vt 0.907514 0.838710 +vt 0.861272 0.854839 +vt 0.849711 0.790323 +vt 0.838150 0.818548 +vt 0.838150 0.794355 +vt 0.872832 0.834677 +vt 0.861272 0.786290 +vt 0.872832 0.778226 +vt 0.895954 0.834677 +vt 0.884393 0.774194 +vt 0.895954 0.778226 +vt 0.919075 0.790323 +vt 0.907514 0.826613 +vt 0.907514 0.786290 +vt 0.861272 0.826613 +vt 0.930636 0.794355 +vt 0.919075 0.822581 +vt 0.930636 0.729839 +vt 0.919075 0.758065 +vt 0.919075 0.725806 +vt 0.907514 0.762097 +vt 0.895954 0.713710 +vt 0.907514 0.721774 +vt 0.884393 0.709677 +vt 0.872832 0.770161 +vt 0.872832 0.713710 +vt 0.861272 0.762097 +vt 0.849711 0.725806 +vt 0.861272 0.721774 +vt 0.895954 0.770161 +vt 0.849711 0.758065 +vt 0.838150 0.729839 +vt 0.780347 0.725806 +vt 0.768786 0.701613 +vt 0.780347 0.701613 +vt 0.780347 0.677419 +vt 0.768786 0.653226 +vt 0.780347 0.653226 +vt 0.780347 0.822581 +vt 0.768786 0.798387 +vt 0.780347 0.798387 +vt 0.780347 0.774194 +vt 0.768786 0.750000 +vt 0.780347 0.750000 +vt 0.768786 0.725806 +vt 0.768786 0.677419 +vt 0.780347 0.846774 +vt 0.768786 0.822581 +vt 0.768786 0.774194 +vt 0.277457 0.983871 +vt 0.346821 0.991935 +vt 0.277457 0.991935 +vt 0.346821 0.975806 +vt 0.346821 0.983871 +vt 0.277457 0.975806 +vt 0.346821 0.967742 +vt 0.346821 1.000000 +vt 0.277457 1.000000 +vt -0.000000 1.000000 +vt 0.069364 0.991935 +vt 0.069364 1.000000 +vt 0.138728 0.991935 +vt 0.138728 1.000000 +vt 0.208092 0.991935 +vt 0.208092 1.000000 +vt 0.000000 0.975806 +vt 0.069364 0.967742 +vt 0.069364 0.975806 +vt 0.138728 0.967742 +vt 0.138728 0.975806 +vt 0.208092 0.967742 +vt 0.208092 0.975806 +vt 0.277457 0.967742 +vt 0.069364 0.983871 +vt 0.000000 0.983871 +vt 0.138728 0.983871 +vt 0.208092 0.983871 +vt -0.000000 0.991935 +vt 0.725434 0.951613 +vt 0.736994 0.943548 +vt 0.734104 0.951613 +vt 0.745665 0.943548 +vt 0.742775 0.951613 +vt 0.751445 0.951613 +vt 0.763006 0.943548 +vt 0.760116 0.951613 +vt 0.699422 0.951613 +vt 0.710983 0.943548 +vt 0.708093 0.951613 +vt 0.716763 0.951613 +vt 0.000000 0.282258 +vt 0.000000 0.209677 +vt 0.000000 0.427419 +vt 0.000000 0.306452 +vt 0.000000 0.354839 +vt 0.000000 0.233871 +vt 0.000000 0.451613 +vt 0.000000 0.330645 +vt 0.000000 0.379032 +vt 0.000000 0.258065 +vt 0.000000 0.475806 +vt 0.000000 0.403226 +vt 0.346821 -0.000000 +vt 0.271676 0.193548 +vt 0.612717 1.000000 +vt 0.604046 1.000000 +vt 0.598266 1.000000 +vt 0.497110 1.000000 +vt 0.488439 1.000000 +vt 0.482659 1.000000 +vt 0.462428 1.000000 +vt -0.000000 0.919355 +vt 0.000000 0.967742 +vt 0.942197 0.056452 +vt 0.959538 0.108871 +vt 0.959538 0.181452 +vt 0.959538 0.229839 +vt 0.959538 0.133065 +vt 0.959538 0.157258 +vt 0.959538 0.205645 +vt 0.924855 0.250000 +vt 0.346821 0.588710 +vt 0.346821 0.637097 +vt 0.346821 0.927419 +vt 0.346821 0.879032 +vt 0.346821 0.846774 +vt 0.346821 0.830645 +vt 0.346821 0.798387 +vt 0.346821 0.766129 +vt 0.346821 0.717742 +vt 0.346821 0.701613 +vt 0.346821 0.653226 +vt 0.346821 0.556452 +vt 0.335248 0.608552 +vt 0.323699 0.612869 +vt 0.312151 0.608552 +vt 0.300602 0.580645 +vt 0.303697 0.564533 +vt 0.312151 0.552738 +vt 0.323699 0.548421 +vt 0.335248 0.552738 +vt 0.346796 0.580645 +vt 0.670520 0.653226 +vt 0.647399 0.548387 +vt 0.312151 0.834358 +vt 0.303697 0.822564 +vt 0.300602 0.806452 +vt 0.312151 0.778545 +vt 0.323699 0.774227 +vt 0.335248 0.778545 +vt 0.346796 0.806452 +vt 0.343702 0.822564 +vt 0.335248 0.834358 +vt 0.670520 0.717742 +vt 0.670520 0.782258 +vt 0.670520 0.814516 +vt 0.670520 0.879032 +vt 0.670520 0.588710 +vt 0.670520 0.620968 +vt 0.705202 0.709677 +vt 0.838150 0.564516 +vt 0.872832 0.625000 +vt 0.895954 0.625000 +vt 0.930636 0.608871 +vt 0.838150 0.608871 +vt 0.930636 0.673387 +vt 0.838150 0.673387 +vt 0.930636 0.709677 +vt 0.838150 0.709677 +vt 0.884393 0.854839 +vt 0.838150 0.854839 +vt 0.919075 0.854839 +vt 0.849711 0.822581 +vt 0.930636 0.818548 +vt 0.930636 0.754032 +vt 0.838150 0.754032 +vt 0.768786 0.846774 +vt -0.000000 0.967742 +vn -0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.8000 -0.6000 +vn 0.0000 -0.2425 0.9701 +vn 0.0000 0.7071 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.9864 0.1644 0.0000 +vn 0.9864 0.1644 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.3219 0.9468 0.0000 +vn -0.8944 -0.4472 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 0.4903 0.8492 0.1961 +vn -0.0000 0.9806 0.1961 +vn -0.4903 0.8492 0.1961 +vn -0.8492 0.4903 0.1961 +vn -0.9806 -0.0000 0.1961 +vn -0.8492 -0.4903 0.1961 +vn -0.4903 -0.8492 0.1961 +vn -0.0000 -0.9806 0.1961 +vn 0.4903 -0.8492 0.1961 +vn 0.8492 -0.4903 0.1961 +vn 0.9806 -0.0000 0.1961 +vn 0.8492 0.4903 0.1961 +vn 0.6124 0.3536 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.3536 -0.6124 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.7071 -0.0000 -0.7071 +vn -0.8660 -0.5000 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.6794 -0.1448 -0.7194 +vn 0.7263 0.1363 0.6737 +vn -0.7263 0.1363 0.6737 +vn -0.6794 -0.1448 -0.7194 +vn 0.0000 -0.1866 -0.9824 +vn 0.9987 -0.0196 -0.0473 +vn 0.0000 0.2049 0.9788 +vn -0.9987 -0.0196 -0.0473 +vn -0.9955 -0.0671 -0.0671 +vn 0.9955 -0.0671 -0.0671 +vn 0.6630 -0.5294 -0.5294 +vn 0.7574 0.4617 0.4617 +vn -0.7574 0.4617 0.4617 +vn -0.6630 -0.5294 -0.5294 +vn -0.0000 -0.9824 -0.1866 +vn 0.9987 -0.0473 -0.0196 +vn -0.7263 0.6737 0.1363 +vn -0.0000 0.9788 0.2049 +vn -0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 0.1363 +vn -0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 -0.1363 +vn -0.7263 0.6737 -0.1363 +vn -0.6794 -0.7194 0.1448 +vn -0.0000 -0.9824 0.1866 +vn 0.9987 -0.0473 0.0196 +vn 0.0000 0.9788 -0.2049 +vn -0.9987 -0.0473 0.0196 +vn 0.6794 -0.7194 0.1448 +vn 0.9955 -0.0671 0.0671 +vn 0.6630 -0.5294 0.5293 +vn 0.7574 0.4617 -0.4617 +vn -0.7574 0.4617 -0.4617 +vn -0.6630 -0.5294 0.5293 +vn -0.9955 -0.0671 0.0671 +vn 0.7263 0.1363 -0.6737 +vn 0.9987 -0.0196 0.0473 +vn -0.7263 0.1363 -0.6737 +vn 0.0000 0.2049 -0.9788 +vn -0.6794 -0.1448 0.7194 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1448 0.7194 +vn 0.0000 -0.1866 0.9824 +vn -0.9701 0.2425 -0.0000 +vn -0.6860 0.2425 0.6860 +vn 0.9701 0.2425 -0.0000 +vn 0.6860 0.2425 0.6860 +vn 0.0000 0.2425 -0.9701 +vn 0.6860 0.2425 -0.6860 +vn -0.6860 0.2425 -0.6860 +vn 0.0000 0.2425 0.9701 +vn 0.6088 -0.7934 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.9659 0.2588 0.0000 +vn -0.9914 0.1305 0.0000 +vn 0.9914 0.1305 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.6088 -0.7934 0.0000 +vn -0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 0.7071 +vn 0.5000 0.5000 0.7071 +vn 0.5000 -0.5000 0.7071 +vn 0.2881 -0.1664 0.9430 +vn 0.4177 -0.7235 0.5496 +vn 0.7235 -0.4177 0.5496 +vn -0.0000 0.9928 0.1198 +vn 0.4177 0.7235 0.5496 +vn 0.4964 0.8598 0.1198 +vn 0.4964 0.8598 -0.1198 +vn -0.0000 0.9928 -0.1198 +vn 0.8354 -0.0000 0.5496 +vn -0.4964 0.8598 0.1198 +vn -0.7235 0.4177 0.5496 +vn -0.4177 0.7235 0.5496 +vn 0.8598 0.4964 -0.1198 +vn 0.0000 -0.8354 0.5496 +vn -0.1664 -0.2881 0.9430 +vn -0.4177 -0.7235 0.5496 +vn -0.0000 0.8354 0.5496 +vn 0.8598 0.4964 0.1198 +vn 0.9928 0.0000 -0.1198 +vn -0.7235 -0.4177 0.5496 +vn 0.7235 0.4177 0.5496 +vn 0.9928 -0.0000 0.1198 +vn 0.8598 -0.4964 -0.1198 +vn -0.2881 -0.1664 0.9430 +vn -0.8354 -0.0000 0.5496 +vn 0.8598 -0.4964 0.1198 +vn 0.4964 -0.8598 -0.1198 +vn -0.2881 0.1664 0.9430 +vn 0.4964 -0.8598 0.1198 +vn 0.0000 -0.9928 0.1198 +vn 0.0000 -0.9928 -0.1198 +vn -0.1664 0.2881 0.9430 +vn -0.4964 -0.8598 0.1198 +vn -0.8598 -0.4964 0.1198 +vn -0.4964 -0.8598 -0.1198 +vn -0.0000 0.3327 0.9430 +vn -0.9928 -0.0000 0.1198 +vn -0.8598 0.4964 0.1198 +vn -0.8598 -0.4964 -0.1198 +vn -0.9928 -0.0000 -0.1198 +vn 0.2881 0.1664 0.9430 +vn -0.8598 0.4964 -0.1198 +vn -0.4964 0.8598 -0.1198 +vn 0.1664 -0.2881 0.9430 +vn 0.7235 -0.4177 -0.5496 +vn 0.8354 0.0000 -0.5496 +vn 0.2881 0.1664 -0.9430 +vn 0.7235 0.4177 -0.5496 +vn 0.4177 0.7235 -0.5496 +vn -0.0000 0.8354 -0.5496 +vn -0.4177 0.7235 -0.5496 +vn -0.7235 0.4177 -0.5496 +vn -0.8354 -0.0000 -0.5496 +vn -0.7235 -0.4177 -0.5496 +vn 0.0000 -0.8354 -0.5496 +vn -0.4177 -0.7235 -0.5496 +vn 0.4177 -0.7235 -0.5496 +vn 0.2881 -0.1664 -0.9430 +vn -0.2881 -0.1664 -0.9430 +vn 0.0000 0.3327 -0.9430 +vn 0.1664 0.2881 -0.9430 +vn -0.1664 0.2881 -0.9430 +vn -0.2881 0.1664 -0.9430 +vn -0.3327 -0.0000 -0.9430 +vn -0.1664 -0.2881 -0.9430 +vn -0.0000 -0.3327 -0.9430 +vn 0.1664 -0.2881 -0.9430 +vn 0.3327 -0.0000 -0.9430 +vn 0.2588 -0.9659 0.0000 +vn -0.9987 0.0196 -0.0473 +vn 0.9987 0.0196 -0.0473 +vn 0.6794 0.1448 -0.7194 +vn -0.7263 -0.1363 0.6737 +vn 0.7263 -0.1363 0.6737 +vn -0.6794 0.1448 -0.7194 +vn 0.0000 0.9824 -0.1866 +vn -0.6794 0.7194 -0.1448 +vn 0.9987 0.0473 -0.0196 +vn 0.6794 0.7194 -0.1448 +vn -0.0000 -0.9788 0.2049 +vn 0.7263 -0.6737 0.1363 +vn -0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn 0.7574 -0.4617 0.4617 +vn 0.9955 0.0671 -0.0671 +vn 0.6630 0.5294 -0.5294 +vn -0.6630 0.5294 -0.5294 +vn -0.7574 -0.4617 0.4617 +vn -0.9955 0.0671 -0.0671 +vn 0.0000 -0.2049 0.9788 +vn 0.0000 0.1866 -0.9824 +vn 0.6788 0.6701 0.3004 +vn -0.5806 0.8131 -0.0429 +vn -0.6975 0.6931 -0.1819 +vn 0.7923 -0.5902 0.1548 +vn 0.6866 0.6388 0.3472 +vn 0.6651 -0.7335 0.1405 +vn -0.6262 -0.7022 -0.3388 +vn -0.6449 -0.7160 -0.2673 +vn -0.8661 -0.4997 -0.0111 +vn -0.6464 0.5821 -0.4933 +vn -0.7075 -0.6998 0.0981 +vn -0.6614 0.6307 -0.4059 +vn -0.6866 -0.7268 -0.0152 +vn -0.6788 0.6701 -0.3004 +vn -0.6650 -0.7335 -0.1405 +vn 0.6561 -0.5453 0.5217 +vn 0.6152 -0.6243 0.4814 +vn 0.6281 -0.6770 0.3837 +vn 0.6449 -0.7160 0.2673 +vn 0.7334 0.6775 -0.0555 +vn 0.5151 0.8106 -0.2786 +vn 0.7162 0.6954 0.0597 +vn 0.6975 0.6931 0.1819 +vn -0.5700 0.6227 -0.5360 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.3327 -0.0000 0.9430 +vn 0.0000 -0.3327 0.9430 +vn -0.3327 -0.0000 0.9430 +vn 0.1664 0.2881 0.9430 +s off +f 1/1/1 36/2/1 12/3/1 +f 3/4/1 26/5/1 2/6/1 +f 9/7/1 34/8/1 33/9/1 +f 7/10/1 30/11/1 6/12/1 +f 4/13/1 27/14/1 3/15/1 +f 11/16/1 34/17/1 10/18/1 +f 7/19/1 32/20/1 31/21/1 +f 5/22/1 28/23/1 4/24/1 +f 12/25/1 35/26/1 11/27/1 +f 2/28/1 25/29/1 1/30/1 +f 9/31/1 32/32/1 8/33/1 +f 5/34/1 30/35/1 29/36/1 +f 53/37/1 55/38/1 57/39/1 +f 71/40/1 48/41/1 47/42/1 +f 72/43/1 37/44/1 48/45/1 +f 37/46/1 62/47/1 38/48/1 +f 38/49/1 63/50/1 39/51/1 +f 63/50/1 40/52/1 39/53/1 +f 40/54/1 65/55/1 41/56/1 +f 65/55/1 42/57/1 41/58/1 +f 42/59/1 67/60/1 43/61/1 +f 67/62/1 44/63/1 43/64/1 +f 68/65/1 45/66/1 44/67/1 +f 69/68/1 46/69/1 45/70/1 +f 70/71/1 47/72/1 46/73/1 +f 83/74/2 96/75/2 84/76/2 +f 84/76/2 85/77/2 73/78/2 +f 85/79/2 74/80/2 73/78/2 +f 86/81/2 75/82/2 74/80/2 +f 75/82/2 88/83/2 76/84/2 +f 88/85/2 77/86/2 76/84/2 +f 77/86/2 90/87/2 78/88/2 +f 90/89/2 79/90/2 78/88/2 +f 91/91/2 80/92/2 79/93/2 +f 92/94/2 81/95/2 80/92/2 +f 81/95/2 94/96/2 82/97/2 +f 82/97/2 95/98/2 83/74/2 +f 98/99/1 111/100/1 99/101/1 +f 106/102/1 117/103/1 118/104/1 +f 102/105/1 115/106/1 103/107/1 +f 100/108/1 111/100/1 112/109/1 +f 107/110/1 118/104/1 119/111/1 +f 103/112/1 116/113/1 104/114/1 +f 100/115/1 113/116/1 101/117/1 +f 108/118/1 119/111/1 120/119/1 +f 97/120/1 110/121/1 98/122/1 +f 104/123/1 117/103/1 105/124/1 +f 102/125/1 113/116/1 114/126/1 +f 97/127/1 120/119/1 109/128/1 +f 136/129/3 144/130/3 133/131/3 +f 140/132/4 146/133/4 135/134/4 +f 138/135/5 148/136/5 139/137/5 +f 138/138/1 140/139/1 136/129/1 +f 146/140/2 148/141/2 142/142/2 +f 146/133/6 136/129/6 135/134/6 +f 134/143/7 144/130/7 143/144/7 +f 148/136/8 140/132/8 139/137/8 +f 138/145/9 142/146/9 141/147/9 +f 134/143/10 142/146/10 137/148/10 +f 159/149/5 168/150/5 160/151/5 +f 157/152/5 166/153/5 158/154/5 +f 164/155/5 165/156/5 157/152/5 +f 163/157/5 170/158/5 171/159/5 +f 161/160/5 168/161/5 169/162/5 +f 159/149/5 166/163/5 167/164/5 +f 163/157/5 172/165/5 164/155/5 +f 162/166/5 169/167/5 170/168/5 +f 228/169/5 235/170/5 236/171/5 +f 225/172/5 234/173/5 226/174/5 +f 224/175/5 231/176/5 232/177/5 +f 222/178/5 229/179/5 230/180/5 +f 205/181/5 236/171/5 229/179/5 +f 226/182/5 235/170/5 227/183/5 +f 224/184/5 233/185/5 225/186/5 +f 222/187/5 231/176/5 223/188/5 +f 245/189/3 250/190/3 246/191/3 +f 248/192/10 249/193/10 245/194/10 +f 251/195/5 248/192/5 247/196/5 +f 246/191/4 251/195/4 247/196/4 +f 270/197/3 264/198/3 266/199/3 +f 269/200/2 274/201/2 270/202/2 +f 251/195/4 250/190/4 255/203/4 +f 250/204/4 260/205/4 255/206/4 +f 249/193/10 252/207/10 254/208/10 +f 251/195/11 254/209/11 252/207/11 +f 255/206/1 259/210/1 254/209/1 +f 254/209/10 257/211/10 249/212/10 +f 249/213/2 258/214/2 250/204/2 +f 256/215/10 265/216/10 261/217/10 +f 253/218/1 263/219/1 256/220/1 +f 261/217/2 266/199/2 262/221/2 +f 262/221/4 264/198/4 253/218/4 +f 269/222/3 266/199/3 265/216/3 +f 267/223/3 265/216/3 263/224/3 +f 268/225/3 263/219/3 264/198/3 +f 273/226/12 271/227/12 272/228/12 +f 268/229/1 272/230/1 267/231/1 +f 268/229/4 274/201/4 273/232/4 +f 267/233/10 271/227/10 269/200/10 +f 297/234/5 291/235/5 294/236/5 +f 281/237/3 278/238/3 277/239/3 +f 282/240/4 293/241/4 278/238/4 +f 285/242/2 284/243/2 283/244/2 +f 289/245/13 287/246/13 288/247/13 +f 285/242/3 290/248/3 286/249/3 +f 284/243/5 288/250/5 283/244/5 +f 286/249/4 289/251/4 284/243/4 +f 285/242/10 288/252/10 287/253/10 +f 298/254/8 294/236/8 293/241/8 +f 292/255/9 296/256/9 295/257/9 +f 295/257/10 277/258/10 292/255/10 +f 305/259/2 316/260/2 304/261/2 +f 306/262/2 317/263/2 305/264/2 +f 280/265/2 318/266/2 306/267/2 +f 279/268/2 307/269/2 280/270/2 +f 276/271/2 308/272/2 279/273/2 +f 275/274/2 309/275/2 276/276/2 +f 275/277/2 311/278/2 310/279/2 +f 299/280/2 312/281/2 311/278/2 +f 300/282/2 313/283/2 312/281/2 +f 302/284/2 313/285/2 301/286/2 +f 302/287/2 315/288/2 314/289/2 +f 304/290/2 315/288/2 303/291/2 +f 340/292/1 329/293/1 328/294/1 +f 341/295/1 330/296/1 329/297/1 +f 342/298/1 327/299/1 330/300/1 +f 332/301/1 326/302/1 327/303/1 +f 331/304/1 325/305/1 326/306/1 +f 333/307/1 324/308/1 325/309/1 +f 324/310/1 335/311/1 323/312/1 +f 323/313/1 336/314/1 322/315/1 +f 322/316/1 337/317/1 321/318/1 +f 337/319/1 320/320/1 321/321/1 +f 320/322/1 339/323/1 319/324/1 +f 339/323/1 328/325/1 319/326/1 +f 362/327/3 356/328/3 352/329/3 +f 365/330/4 355/331/4 356/328/4 +f 345/332/2 347/333/2 346/334/2 +f 343/335/3 348/336/3 345/332/3 +f 346/337/5 349/338/5 344/339/5 +f 360/340/1 367/341/1 361/342/1 +f 364/343/11 349/344/11 365/345/11 +f 348/346/10 351/347/10 347/348/10 +f 354/349/3 370/350/3 357/351/3 +f 352/329/2 355/331/2 351/347/2 +f 349/338/1 343/335/1 344/339/1 +f 371/352/5 373/353/5 369/354/5 +f 366/355/14 350/356/14 367/341/14 +f 361/342/10 349/357/10 360/340/10 +f 347/348/10 359/358/10 349/359/10 +f 362/360/10 348/346/10 350/361/10 +f 351/362/5 365/345/5 359/363/5 +f 358/364/5 369/354/5 353/365/5 +f 353/365/10 368/366/10 354/349/10 +f 357/351/4 371/367/4 358/368/4 +f 371/369/5 377/370/5 373/371/5 +f 373/371/15 368/366/15 369/354/15 +f 368/366/3 372/372/3 370/350/3 +f 374/373/16 377/370/16 375/374/16 +f 370/375/3 376/376/3 374/377/3 +f 370/375/2 375/378/2 371/379/2 +f 373/371/1 376/376/1 372/380/1 +f 407/381/2 445/382/2 444/383/2 +f 424/384/1 426/385/1 428/386/1 +f 442/387/17 433/388/17 431/389/17 +f 433/388/2 432/390/2 443/391/2 +f 441/392/2 434/393/2 437/394/2 +f 435/395/1 440/396/1 436/397/1 +f 431/389/5 443/391/5 430/398/5 +f 440/396/8 437/394/8 436/397/8 +f 411/399/2 450/400/2 412/401/2 +f 430/398/18 432/402/18 442/403/18 +f 413/404/2 445/382/2 406/405/2 +f 438/406/7 435/407/7 434/393/7 +f 409/408/2 448/409/2 410/410/2 +f 408/411/2 444/383/2 446/412/2 +f 413/404/2 450/400/2 451/413/2 +f 410/414/2 449/415/2 411/399/2 +f 408/411/2 447/416/2 409/408/2 +f 456/417/2 455/418/2 454/419/2 +f 550/420/2 563/421/2 562/422/2 +f 551/423/2 562/422/2 561/424/2 +f 552/425/2 561/424/2 560/426/2 +f 553/427/2 560/426/2 559/428/2 +f 554/429/2 559/428/2 558/430/2 +f 555/431/2 558/430/2 557/432/2 +f 544/433/2 557/432/2 556/434/2 +f 566/435/2 579/436/2 545/437/2 +f 580/438/19 611/439/19 623/440/19 +f 532/441/1 569/442/1 543/443/1 +f 610/444/2 592/445/2 596/446/2 +f 543/447/1 570/448/1 542/449/1 +f 622/450/1 580/438/1 623/451/1 +f 621/452/1 584/453/1 622/454/1 +f 620/455/1 585/456/1 621/457/1 +f 542/458/1 571/459/1 541/460/1 +f 619/461/1 586/462/1 620/463/1 +f 618/464/1 587/465/1 619/466/1 +f 541/467/1 572/468/1 540/469/1 +f 617/470/1 588/471/1 618/472/1 +f 616/473/1 589/474/1 617/475/1 +f 624/476/1 590/477/1 616/478/1 +f 540/479/1 573/480/1 539/481/1 +f 612/482/2 602/483/2 603/484/2 +f 539/485/1 574/486/1 538/487/1 +f 538/488/1 575/489/1 537/490/1 +f 604/491/2 601/492/2 602/483/2 +f 537/493/1 576/494/1 536/495/1 +f 549/496/2 564/497/2 563/421/2 +f 576/494/19 548/498/19 536/499/19 +f 605/500/2 600/501/2 601/492/2 +f 606/502/2 599/503/2 600/501/2 +f 607/504/2 598/505/2 599/503/2 +f 614/506/1 625/507/1 582/508/1 +f 608/509/2 597/510/2 598/505/2 +f 609/511/2 596/446/2 597/510/2 +f 635/512/4 629/513/4 631/514/4 +f 632/515/10 630/516/10 628/517/10 +f 634/518/2 631/514/2 630/516/2 +f 633/519/1 628/520/1 629/513/1 +f 702/521/2 700/522/2 706/523/2 +f 717/524/3 718/525/3 716/526/3 +f 725/527/3 726/528/3 724/529/3 +f 717/530/4 723/531/4 719/532/4 +f 718/525/10 720/533/10 716/534/10 +f 719/532/2 722/535/2 718/525/2 +f 716/536/1 721/537/1 717/530/1 +f 725/538/4 731/539/4 727/540/4 +f 726/528/10 728/541/10 724/542/10 +f 727/540/2 730/543/2 726/528/2 +f 724/544/1 729/545/1 725/538/1 +f 746/546/3 744/547/3 745/548/3 +f 738/549/3 736/550/3 737/551/3 +f 735/552/4 738/553/4 733/554/4 +f 732/555/10 736/550/10 734/556/10 +f 734/556/2 739/557/2 735/552/2 +f 733/554/1 737/558/1 732/559/1 +f 743/560/4 746/561/4 741/562/4 +f 740/563/10 744/547/10 742/564/10 +f 742/564/2 747/565/2 743/560/2 +f 741/562/1 745/566/1 740/567/1 +f 756/568/1 748/569/1 751/570/1 +f 755/571/2 753/572/2 757/573/2 +f 749/574/4 755/571/4 751/570/4 +f 750/575/10 753/576/10 748/569/10 +f 751/577/20 757/578/20 756/568/20 +f 763/579/21 795/580/21 758/581/21 +f 756/568/3 752/582/3 750/575/3 +f 759/583/1 766/584/1 760/585/1 +f 767/586/2 765/587/2 764/588/2 +f 759/583/4 765/589/4 761/590/4 +f 760/585/10 763/579/10 758/581/10 +f 761/590/3 767/591/3 766/584/3 +f 748/569/1 759/583/1 795/592/1 +f 766/584/22 762/593/22 760/594/22 +f 770/595/5 769/596/5 768/597/5 +f 774/598/3 772/599/3 773/600/3 +f 770/601/2 775/602/2 771/603/2 +f 769/596/1 773/600/1 768/597/1 +f 782/604/3 780/605/3 781/606/3 +f 778/607/5 777/608/5 776/609/5 +f 778/610/2 783/611/2 779/612/2 +f 777/608/1 781/606/1 776/609/1 +f 790/613/3 788/614/3 789/615/3 +f 786/616/5 785/617/5 784/618/5 +f 786/619/2 791/620/2 787/621/2 +f 785/617/1 789/615/1 784/618/1 +f 795/592/5 793/622/5 792/623/5 +f 749/574/23 793/624/23 754/625/23 +f 764/588/2 753/572/2 793/626/2 +f 830/627/2 841/628/2 829/629/2 +f 831/630/2 842/631/2 830/632/2 +f 823/633/2 843/634/2 831/635/2 +f 822/636/2 832/637/2 823/638/2 +f 821/639/2 833/640/2 822/641/2 +f 820/642/2 834/643/2 821/644/2 +f 820/645/2 836/646/2 835/647/2 +f 824/648/2 837/649/2 836/646/2 +f 825/650/2 838/651/2 837/649/2 +f 827/652/2 838/653/2 826/654/2 +f 827/655/2 840/656/2 839/657/2 +f 829/658/2 840/656/2 828/659/2 +f 865/660/1 854/661/1 853/662/1 +f 866/663/1 855/664/1 854/665/1 +f 867/666/1 852/667/1 855/668/1 +f 857/669/1 851/670/1 852/671/1 +f 856/672/1 850/673/1 851/674/1 +f 858/675/1 849/676/1 850/677/1 +f 849/678/1 860/679/1 848/680/1 +f 848/681/1 861/682/1 847/683/1 +f 847/684/1 862/685/1 846/686/1 +f 862/687/1 845/688/1 846/689/1 +f 845/690/1 864/691/1 844/692/1 +f 864/691/1 853/693/1 844/694/1 +f 1/1/1 25/695/1 36/2/1 +f 3/4/1 27/696/1 26/5/1 +f 9/7/1 10/697/1 34/8/1 +f 7/10/1 31/698/1 30/11/1 +f 4/13/1 28/699/1 27/14/1 +f 11/16/1 35/700/1 34/17/1 +f 7/19/1 8/701/1 32/20/1 +f 5/22/1 29/702/1 28/23/1 +f 12/25/1 36/703/1 35/26/1 +f 2/28/1 26/704/1 25/29/1 +f 9/31/1 33/705/1 32/32/1 +f 5/34/1 6/706/1 30/35/1 +f 49/707/1 50/708/1 51/709/1 +f 51/709/1 52/710/1 53/37/1 +f 53/37/1 54/711/1 55/38/1 +f 55/38/1 56/712/1 57/39/1 +f 57/39/1 58/713/1 59/714/1 +f 59/714/1 60/715/1 57/39/1 +f 60/715/1 49/707/1 57/39/1 +f 49/707/1 51/709/1 57/39/1 +f 51/709/1 53/37/1 57/39/1 +f 71/40/1 72/43/1 48/41/1 +f 72/43/1 61/716/1 37/44/1 +f 37/46/1 61/716/1 62/47/1 +f 38/49/1 62/47/1 63/50/1 +f 63/50/1 64/717/1 40/52/1 +f 40/54/1 64/717/1 65/55/1 +f 65/55/1 66/718/1 42/57/1 +f 42/59/1 66/718/1 67/60/1 +f 67/62/1 68/65/1 44/63/1 +f 68/65/1 69/68/1 45/66/1 +f 69/68/1 70/71/1 46/69/1 +f 70/71/1 71/40/1 47/72/1 +f 83/74/2 95/719/2 96/75/2 +f 84/76/2 96/720/2 85/77/2 +f 85/79/2 86/721/2 74/80/2 +f 86/81/2 87/722/2 75/82/2 +f 75/82/2 87/723/2 88/83/2 +f 88/85/2 89/724/2 77/86/2 +f 77/86/2 89/725/2 90/87/2 +f 90/89/2 91/726/2 79/90/2 +f 91/91/2 92/727/2 80/92/2 +f 92/94/2 93/728/2 81/95/2 +f 81/95/2 93/729/2 94/96/2 +f 82/97/2 94/730/2 95/98/2 +f 98/99/1 110/121/1 111/100/1 +f 106/102/1 105/731/1 117/103/1 +f 102/105/1 114/126/1 115/106/1 +f 100/108/1 99/732/1 111/100/1 +f 107/110/1 106/733/1 118/104/1 +f 103/112/1 115/734/1 116/113/1 +f 100/115/1 112/109/1 113/116/1 +f 108/118/1 107/735/1 119/111/1 +f 97/120/1 109/128/1 110/121/1 +f 104/123/1 116/113/1 117/103/1 +f 102/125/1 101/736/1 113/116/1 +f 97/127/1 108/737/1 120/119/1 +f 136/129/3 145/738/3 144/130/3 +f 140/132/4 147/739/4 146/133/4 +f 138/135/5 141/740/5 148/136/5 +f 136/129/1 133/131/1 134/741/1 +f 134/741/1 137/742/1 138/138/1 +f 138/138/1 139/743/1 140/139/1 +f 140/139/1 135/744/1 136/129/1 +f 136/129/1 134/741/1 138/138/1 +f 142/142/2 143/745/2 144/130/2 +f 144/130/2 145/738/2 146/140/2 +f 146/140/2 147/746/2 148/141/2 +f 148/141/2 141/747/2 142/142/2 +f 142/142/2 144/130/2 146/140/2 +f 146/133/6 145/738/6 136/129/6 +f 134/143/7 133/131/7 144/130/7 +f 148/136/8 147/739/8 140/132/8 +f 138/145/9 137/148/9 142/146/9 +f 134/143/10 143/144/10 142/146/10 +f 159/149/5 167/748/5 168/150/5 +f 157/152/5 165/749/5 166/153/5 +f 164/155/5 172/750/5 165/156/5 +f 163/157/5 162/166/5 170/158/5 +f 161/160/5 160/151/5 168/161/5 +f 159/149/5 158/154/5 166/163/5 +f 163/157/5 171/751/5 172/165/5 +f 162/166/5 161/752/5 169/167/5 +f 228/169/5 227/753/5 235/170/5 +f 225/172/5 233/754/5 234/173/5 +f 224/175/5 223/755/5 231/176/5 +f 222/178/5 205/756/5 229/179/5 +f 205/181/5 228/757/5 236/171/5 +f 226/182/5 234/173/5 235/170/5 +f 224/184/5 232/177/5 233/185/5 +f 222/187/5 230/180/5 231/176/5 +f 245/189/3 249/758/3 250/190/3 +f 248/192/10 252/207/10 249/193/10 +f 251/195/5 252/207/5 248/192/5 +f 246/191/4 250/190/4 251/195/4 +f 270/197/3 268/759/3 264/198/3 +f 269/200/2 271/227/2 274/201/2 +f 250/204/4 258/214/4 260/205/4 +f 251/195/11 255/206/11 254/209/11 +f 255/206/1 260/205/1 259/210/1 +f 254/209/10 259/210/10 257/211/10 +f 249/213/2 257/760/2 258/214/2 +f 256/215/10 263/224/10 265/216/10 +f 253/218/1 264/198/1 263/219/1 +f 261/217/2 265/216/2 266/199/2 +f 262/221/4 266/199/4 264/198/4 +f 269/222/3 270/761/3 266/199/3 +f 267/223/3 269/762/3 265/216/3 +f 268/225/3 267/763/3 263/219/3 +f 273/226/12 274/201/12 271/227/12 +f 268/229/1 273/232/1 272/230/1 +f 268/229/4 270/202/4 274/201/4 +f 267/233/10 272/764/10 271/227/10 +f 297/234/5 296/256/5 291/235/5 +f 281/237/3 282/240/3 278/238/3 +f 282/240/4 298/254/4 293/241/4 +f 285/242/2 286/249/2 284/243/2 +f 289/245/13 290/248/13 287/246/13 +f 285/242/3 287/246/3 290/248/3 +f 284/243/5 289/765/5 288/250/5 +f 286/249/4 290/766/4 289/251/4 +f 285/242/10 283/244/10 288/252/10 +f 298/254/8 297/234/8 294/236/8 +f 292/255/9 291/235/9 296/256/9 +f 295/257/10 281/767/10 277/258/10 +f 305/259/2 317/263/2 316/260/2 +f 306/262/2 318/266/2 317/263/2 +f 280/265/2 307/269/2 318/266/2 +f 279/268/2 308/272/2 307/269/2 +f 276/271/2 309/275/2 308/272/2 +f 275/274/2 310/279/2 309/275/2 +f 275/277/2 299/768/2 311/278/2 +f 299/280/2 300/769/2 312/281/2 +f 300/282/2 301/770/2 313/283/2 +f 302/284/2 314/289/2 313/285/2 +f 302/287/2 303/771/2 315/288/2 +f 304/290/2 316/260/2 315/288/2 +f 340/292/1 341/295/1 329/293/1 +f 341/295/1 342/298/1 330/296/1 +f 342/298/1 332/301/1 327/299/1 +f 332/301/1 331/304/1 326/302/1 +f 331/304/1 333/307/1 325/305/1 +f 333/307/1 334/772/1 324/308/1 +f 324/310/1 334/772/1 335/311/1 +f 323/313/1 335/311/1 336/314/1 +f 322/316/1 336/314/1 337/317/1 +f 337/319/1 338/773/1 320/320/1 +f 320/322/1 338/773/1 339/323/1 +f 339/323/1 340/292/1 328/325/1 +f 362/327/3 366/355/3 356/328/3 +f 356/328/4 366/774/4 365/330/4 +f 366/774/4 367/775/4 365/330/4 +f 367/775/4 364/776/4 365/330/4 +f 345/332/2 348/336/2 347/333/2 +f 343/335/3 350/777/3 348/336/3 +f 346/337/5 347/778/5 349/338/5 +f 360/340/1 364/343/1 367/341/1 +f 360/340/11 349/344/11 364/343/11 +f 349/344/11 359/363/11 365/345/11 +f 348/346/10 352/329/10 351/347/10 +f 354/349/3 368/366/3 370/350/3 +f 352/329/2 356/328/2 355/331/2 +f 349/338/1 350/777/1 343/335/1 +f 362/327/14 350/356/14 366/355/14 +f 350/356/14 361/342/14 367/341/14 +f 361/342/10 350/779/10 349/357/10 +f 347/348/10 351/347/10 359/358/10 +f 362/360/10 352/329/10 348/346/10 +f 351/362/5 355/780/5 365/345/5 +f 358/364/5 371/352/5 369/354/5 +f 353/365/10 369/354/10 368/366/10 +f 357/351/4 370/350/4 371/367/4 +f 371/369/5 375/781/5 377/370/5 +f 373/371/15 372/380/15 368/366/15 +f 374/373/16 376/376/16 377/370/16 +f 370/375/3 372/380/3 376/376/3 +f 370/375/2 374/377/2 375/378/2 +f 373/371/1 377/370/1 376/376/1 +f 407/381/2 406/405/2 445/382/2 +f 423/782/1 422/783/1 424/384/1 +f 424/384/1 425/784/1 426/385/1 +f 426/385/1 427/785/1 428/386/1 +f 428/386/1 429/786/1 423/782/1 +f 423/782/1 424/384/1 428/386/1 +f 442/387/17 432/787/17 433/388/17 +f 441/392/2 438/406/2 434/393/2 +f 435/395/1 439/788/1 440/396/1 +f 431/389/5 433/388/5 443/391/5 +f 440/396/8 441/392/8 437/394/8 +f 411/399/2 449/415/2 450/400/2 +f 430/398/18 443/391/18 432/402/18 +f 413/404/2 451/413/2 445/382/2 +f 438/406/7 439/789/7 435/407/7 +f 409/408/2 447/416/2 448/409/2 +f 408/411/2 407/381/2 444/383/2 +f 413/404/2 412/401/2 450/400/2 +f 410/414/2 448/790/2 449/415/2 +f 408/411/2 446/412/2 447/416/2 +f 454/419/2 452/791/2 453/792/2 +f 453/792/2 459/793/2 454/419/2 +f 459/793/2 458/794/2 454/419/2 +f 458/794/2 457/795/2 454/419/2 +f 457/795/2 456/417/2 454/419/2 +f 550/420/2 549/796/2 563/421/2 +f 551/423/2 550/797/2 562/422/2 +f 552/425/2 551/798/2 561/424/2 +f 553/427/2 552/799/2 560/426/2 +f 554/429/2 553/800/2 559/428/2 +f 555/431/2 554/801/2 558/430/2 +f 544/433/2 555/802/2 557/432/2 +f 545/437/2 546/803/2 566/435/2 +f 546/803/2 547/804/2 566/435/2 +f 547/804/2 565/805/2 566/435/2 +f 566/435/2 567/806/2 577/807/2 +f 577/807/2 578/808/2 579/436/2 +f 579/436/2 535/809/2 534/810/2 +f 534/810/2 533/811/2 579/436/2 +f 533/811/2 545/437/2 579/436/2 +f 566/435/2 577/807/2 579/436/2 +f 580/438/19 592/445/19 611/439/19 +f 532/441/1 568/812/1 569/442/1 +f 610/444/2 611/813/2 592/445/2 +f 543/447/1 569/442/1 570/448/1 +f 622/450/1 584/453/1 580/438/1 +f 621/452/1 585/456/1 584/453/1 +f 620/455/1 586/462/1 585/456/1 +f 542/458/1 570/448/1 571/459/1 +f 619/461/1 587/465/1 586/462/1 +f 618/464/1 588/471/1 587/465/1 +f 541/467/1 571/459/1 572/468/1 +f 617/470/1 589/474/1 588/471/1 +f 616/473/1 590/477/1 589/474/1 +f 624/476/1 591/814/1 590/477/1 +f 540/479/1 572/468/1 573/480/1 +f 612/482/2 604/815/2 602/483/2 +f 539/485/1 573/480/1 574/486/1 +f 538/488/1 574/486/1 575/489/1 +f 604/491/2 605/816/2 601/492/2 +f 537/493/1 575/489/1 576/494/1 +f 549/496/2 548/817/2 564/497/2 +f 576/494/19 564/497/19 548/498/19 +f 605/500/2 606/818/2 600/501/2 +f 606/502/2 607/819/2 599/503/2 +f 607/504/2 608/820/2 598/505/2 +f 625/507/1 626/821/1 582/508/1 +f 626/821/1 627/822/1 582/508/1 +f 627/822/1 581/823/1 582/508/1 +f 582/508/1 583/824/1 593/825/1 +f 593/825/1 594/826/1 595/827/1 +f 595/827/1 613/828/1 614/506/1 +f 614/506/1 615/829/1 625/507/1 +f 582/508/1 593/825/1 595/827/1 +f 595/827/1 614/506/1 582/508/1 +f 608/509/2 609/830/2 597/510/2 +f 609/511/2 610/831/2 596/446/2 +f 635/512/4 633/519/4 629/513/4 +f 632/515/10 634/518/10 630/516/10 +f 634/518/2 635/512/2 631/514/2 +f 633/519/1 632/832/1 628/520/1 +f 702/521/2 701/833/2 700/522/2 +f 700/522/2 707/834/2 706/523/2 +f 706/523/2 705/835/2 704/836/2 +f 704/836/2 703/837/2 706/523/2 +f 703/837/2 702/521/2 706/523/2 +f 717/524/3 719/532/3 718/525/3 +f 725/527/3 727/540/3 726/528/3 +f 717/530/4 721/537/4 723/531/4 +f 718/525/10 722/535/10 720/533/10 +f 719/532/2 723/531/2 722/535/2 +f 716/536/1 720/838/1 721/537/1 +f 725/538/4 729/545/4 731/539/4 +f 726/528/10 730/543/10 728/541/10 +f 727/540/2 731/539/2 730/543/2 +f 724/544/1 728/839/1 729/545/1 +f 746/546/3 747/565/3 744/547/3 +f 738/549/3 739/557/3 736/550/3 +f 735/552/4 739/557/4 738/553/4 +f 732/555/10 737/840/10 736/550/10 +f 734/556/2 736/550/2 739/557/2 +f 733/554/1 738/553/1 737/558/1 +f 743/560/4 747/565/4 746/561/4 +f 740/563/10 745/841/10 744/547/10 +f 742/564/2 744/547/2 747/565/2 +f 741/562/1 746/561/1 745/566/1 +f 750/575/1 748/569/1 756/568/1 +f 748/569/1 749/574/1 751/570/1 +f 754/625/2 753/572/2 755/571/2 +f 753/572/2 752/842/2 757/573/2 +f 749/574/4 754/625/4 755/571/4 +f 750/575/10 752/843/10 753/576/10 +f 751/577/20 755/844/20 757/578/20 +f 763/579/21 794/845/21 795/580/21 +f 756/568/3 757/578/3 752/582/3 +f 760/585/1 758/581/1 759/583/1 +f 759/583/1 761/590/1 766/584/1 +f 764/588/2 763/846/2 762/847/2 +f 762/847/2 767/586/2 764/588/2 +f 759/583/4 764/848/4 765/589/4 +f 760/585/10 762/849/10 763/579/10 +f 761/590/3 765/850/3 767/591/3 +f 759/583/1 758/581/1 795/592/1 +f 795/592/1 792/623/1 748/569/1 +f 792/623/1 749/574/1 748/569/1 +f 766/584/22 767/591/22 762/593/22 +f 770/595/5 771/851/5 769/596/5 +f 774/598/3 775/602/3 772/599/3 +f 770/601/2 772/599/2 775/602/2 +f 769/596/1 774/598/1 773/600/1 +f 782/604/3 783/611/3 780/605/3 +f 778/607/5 779/852/5 777/608/5 +f 778/610/2 780/605/2 783/611/2 +f 777/608/1 782/604/1 781/606/1 +f 790/613/3 791/620/3 788/614/3 +f 786/616/5 787/853/5 785/617/5 +f 786/619/2 788/614/2 791/620/2 +f 785/617/1 790/613/1 789/615/1 +f 795/592/5 794/854/5 793/622/5 +f 749/574/23 792/855/23 793/624/23 +f 753/572/2 754/625/2 793/626/2 +f 793/626/2 794/856/2 764/588/2 +f 794/856/2 763/846/2 764/588/2 +f 830/627/2 842/631/2 841/628/2 +f 831/630/2 843/634/2 842/631/2 +f 823/633/2 832/637/2 843/634/2 +f 822/636/2 833/640/2 832/637/2 +f 821/639/2 834/643/2 833/640/2 +f 820/642/2 835/647/2 834/643/2 +f 820/645/2 824/857/2 836/646/2 +f 824/648/2 825/858/2 837/649/2 +f 825/650/2 826/859/2 838/651/2 +f 827/652/2 839/657/2 838/653/2 +f 827/655/2 828/860/2 840/656/2 +f 829/658/2 841/628/2 840/656/2 +f 865/660/1 866/663/1 854/661/1 +f 866/663/1 867/666/1 855/664/1 +f 867/666/1 857/669/1 852/667/1 +f 857/669/1 856/672/1 851/670/1 +f 856/672/1 858/675/1 850/673/1 +f 858/675/1 859/861/1 849/676/1 +f 849/678/1 859/861/1 860/679/1 +f 848/681/1 860/679/1 861/682/1 +f 847/684/1 861/682/1 862/685/1 +f 862/687/1 863/862/1 845/688/1 +f 845/690/1 863/862/1 864/691/1 +f 864/691/1 865/660/1 853/693/1 +s 1 +f 24/863/24 1/1/25 12/3/24 +f 13/864/25 2/28/26 1/30/25 +f 14/865/26 3/4/27 2/6/26 +f 15/866/27 4/13/28 3/15/27 +f 16/867/28 5/22/29 4/24/28 +f 5/34/29 18/868/30 6/706/30 +f 6/12/30 19/869/31 7/10/31 +f 19/870/31 8/701/32 7/19/31 +f 20/871/32 9/31/33 8/33/32 +f 21/872/33 10/697/34 9/7/33 +f 10/18/34 23/873/35 11/16/35 +f 11/27/35 24/863/24 12/25/24 +f 23/873/36 48/41/37 24/863/37 +f 48/45/37 13/864/38 24/863/37 +f 13/864/38 38/48/39 14/865/39 +f 38/49/39 15/866/40 14/865/39 +f 39/53/40 16/867/41 15/866/40 +f 16/867/41 41/56/42 17/874/42 +f 41/58/42 18/868/43 17/874/42 +f 42/59/43 19/869/44 18/868/43 +f 19/870/44 44/63/45 20/871/45 +f 44/67/45 21/872/46 20/871/45 +f 21/872/46 46/69/47 22/875/47 +f 22/875/47 47/72/36 23/873/36 +f 35/700/48 58/876/10 34/17/10 +f 32/20/49 55/877/3 31/21/3 +f 29/702/50 52/878/4 28/23/4 +f 36/703/51 59/879/48 35/26/48 +f 26/704/52 49/880/5 25/29/5 +f 33/705/53 56/881/49 32/32/49 +f 30/35/19 53/882/50 29/36/50 +f 25/695/5 60/883/51 36/2/51 +f 27/696/54 50/884/52 26/5/52 +f 34/8/10 57/885/53 33/9/53 +f 31/698/3 54/886/19 30/11/19 +f 28/699/4 51/887/54 27/14/54 +f 66/718/51 79/90/5 67/60/5 +f 63/50/53 76/84/10 64/717/10 +f 70/71/4 83/74/50 71/40/50 +f 67/62/5 80/92/52 68/65/52 +f 64/717/10 77/86/48 65/55/48 +f 71/40/50 84/76/19 72/43/19 +f 61/716/3 74/80/49 62/47/49 +f 68/65/52 81/95/54 69/68/54 +f 65/55/48 78/88/51 66/718/51 +f 72/43/19 73/78/3 61/716/3 +f 62/47/49 75/82/53 63/50/53 +f 69/68/54 82/97/4 70/71/4 +f 93/888/54 106/889/4 94/890/4 +f 90/891/51 103/892/5 91/893/5 +f 87/894/53 100/895/10 88/896/10 +f 94/890/4 107/897/50 95/898/50 +f 91/899/5 104/900/52 92/901/52 +f 88/896/10 101/902/48 89/903/48 +f 95/898/50 108/904/19 96/905/19 +f 85/906/3 98/907/49 86/908/49 +f 92/901/52 105/909/54 93/888/54 +f 89/903/48 102/910/51 90/891/51 +f 96/905/19 97/911/3 85/906/3 +f 86/908/49 99/912/53 87/894/53 +f 120/119/19 121/913/3 109/128/3 +f 110/121/49 123/914/53 111/100/53 +f 117/103/54 130/915/4 118/104/4 +f 114/126/51 127/916/5 115/106/5 +f 111/100/53 124/917/10 112/109/10 +f 118/104/4 131/918/50 119/111/50 +f 115/734/5 128/919/52 116/113/52 +f 112/109/10 125/920/48 113/116/48 +f 119/111/50 132/921/19 120/119/19 +f 109/128/3 122/922/49 110/121/49 +f 116/113/52 129/923/54 117/103/54 +f 113/116/48 126/924/51 114/126/51 +f 163/157/4 156/925/47 155/926/4 +f 161/752/1 154/927/16 153/928/1 +f 159/149/10 152/929/15 151/930/10 +f 157/152/2 150/931/41 149/932/2 +f 164/155/47 149/932/2 156/925/47 +f 162/166/16 155/926/4 154/927/16 +f 160/151/15 153/933/1 152/929/15 +f 158/154/41 151/930/10 150/931/41 +f 171/934/4 180/935/55 172/936/47 +f 169/937/1 178/938/56 170/939/16 +f 167/940/10 176/941/57 168/942/15 +f 165/943/2 174/944/58 166/945/41 +f 172/936/47 173/946/59 165/943/2 +f 170/939/16 179/947/60 171/934/4 +f 168/942/15 177/948/61 169/949/1 +f 166/945/41 175/950/62 167/940/10 +f 176/951/57 186/952/14 177/953/61 +f 174/944/58 184/954/63 175/955/62 +f 180/935/55 188/956/64 189/957/65 +f 178/958/56 186/959/14 187/960/66 +f 176/951/57 184/954/63 185/961/67 +f 174/944/58 182/962/44 183/963/68 +f 173/946/59 189/957/65 182/962/44 +f 178/958/56 188/956/64 179/964/60 +f 189/957/65 190/965/69 182/962/44 +f 187/960/66 196/966/70 188/956/64 +f 186/952/14 193/967/71 194/968/72 +f 183/963/68 192/969/73 184/954/63 +f 188/956/64 197/970/74 189/957/65 +f 186/959/14 195/971/75 187/960/66 +f 185/961/67 192/969/73 193/967/71 +f 182/962/44 191/972/76 183/963/68 +f 194/973/72 202/974/77 195/975/75 +f 192/976/73 200/977/78 193/978/71 +f 190/965/69 198/979/79 191/972/76 +f 197/970/74 181/980/80 190/965/69 +f 195/975/75 203/981/81 196/982/70 +f 193/978/71 201/983/82 194/984/72 +f 191/972/76 199/985/83 192/976/73 +f 196/982/70 204/986/84 197/970/74 +f 204/986/84 212/987/85 213/988/86 +f 202/989/77 210/990/38 211/991/87 +f 199/992/83 209/993/88 200/994/78 +f 198/979/79 206/995/11 207/996/89 +f 204/986/84 206/995/11 181/980/80 +f 203/997/81 211/991/87 212/987/85 +f 201/998/82 209/993/88 210/999/38 +f 198/979/79 208/1000/90 199/992/83 +f 212/987/85 219/1001/91 220/1002/92 +f 210/999/38 217/1003/93 218/1004/94 +f 208/1000/90 215/1005/95 216/1006/96 +f 212/987/85 221/1007/97 213/988/86 +f 210/990/38 219/1001/91 211/991/87 +f 208/1000/90 217/1003/93 209/993/88 +f 207/996/89 214/1008/98 215/1005/95 +f 213/988/86 214/1008/98 206/995/11 +f 215/1005/95 205/1009/1 222/1010/15 +f 221/1007/97 205/1009/1 214/1008/98 +f 220/1011/92 226/1012/47 227/1013/4 +f 218/1014/94 224/1015/41 225/1016/2 +f 216/1017/96 222/1010/15 223/1018/10 +f 220/1011/92 228/1019/16 221/1007/97 +f 218/1020/94 226/1012/47 219/1021/91 +f 216/1017/96 224/1015/41 217/1022/93 +f 231/176/99 238/1023/100 239/1024/99 +f 235/170/101 244/1025/102 236/171/102 +f 233/754/103 242/1026/104 234/173/104 +f 231/176/99 240/1027/105 232/177/105 +f 230/180/100 237/1028/106 238/1029/100 +f 236/171/102 237/1030/106 229/179/106 +f 235/170/101 242/1031/104 243/1032/101 +f 233/185/103 240/1033/105 241/1034/103 +f 316/260/4 339/323/54 315/288/54 +f 309/275/53 331/304/49 308/272/49 +f 317/263/50 340/292/4 316/260/4 +f 310/279/10 333/307/53 309/275/53 +f 318/266/19 341/295/50 317/263/50 +f 311/278/48 334/772/10 310/279/10 +f 307/269/3 342/298/19 318/266/19 +f 312/281/51 335/311/48 311/278/48 +f 313/283/5 336/314/51 312/281/51 +f 314/289/52 337/319/5 313/285/5 +f 315/288/54 338/773/52 314/289/52 +f 308/272/49 332/301/3 307/269/3 +f 383/1035/54 389/1036/107 382/1037/107 +f 380/1038/53 386/1039/108 379/1040/108 +f 384/1041/109 390/1042/54 383/1035/54 +f 381/1043/110 387/1044/53 380/1038/53 +f 379/1040/108 385/1045/19 378/1046/19 +f 378/1046/19 391/1047/109 384/1041/109 +f 397/1048/50 403/1049/111 396/1050/111 +f 394/1051/48 400/1052/112 393/1053/112 +f 398/1054/113 404/1055/50 397/1048/50 +f 395/1056/114 401/1057/48 394/1051/48 +f 393/1053/112 399/1058/49 392/1059/49 +f 392/1059/49 405/1060/113 398/1054/113 +f 417/1061/115 426/1062/11 425/1063/115 +f 407/381/7 415/1064/3 406/405/3 +f 406/405/3 421/1065/6 413/404/6 +f 412/401/4 419/1066/8 411/399/8 +f 410/410/5 417/1061/9 409/408/9 +f 408/411/10 414/1067/7 407/381/7 +f 413/404/6 420/1068/4 412/401/4 +f 411/399/8 418/1069/5 410/414/5 +f 409/408/9 416/1070/10 408/411/10 +f 416/1070/15 422/1071/116 414/1067/116 +f 421/1065/117 428/1072/16 420/1068/16 +f 419/1066/118 426/1073/11 418/1069/11 +f 416/1070/15 425/1074/115 424/1075/15 +f 414/1067/116 423/1076/14 415/1064/14 +f 415/1064/14 429/1077/117 421/1065/117 +f 420/1068/16 427/1078/118 419/1066/118 +f 449/415/7 458/1079/10 450/400/10 +f 447/416/6 456/1080/3 448/409/3 +f 444/383/8 454/1081/4 446/412/4 +f 450/400/10 459/1082/9 451/413/9 +f 448/790/3 457/1083/7 449/415/7 +f 446/412/4 455/1084/6 447/416/6 +f 445/382/5 452/1085/8 444/383/8 +f 451/413/9 453/1086/5 445/382/5 +f 500/1087/119 489/1088/120 488/1089/121 +f 463/1090/122 461/1091/123 465/1092/124 +f 463/1090/122 464/1093/125 462/1094/126 +f 487/1095/127 500/1096/119 488/1089/121 +f 485/1097/128 494/1098/129 495/1099/130 +f 465/1092/124 466/1100/131 464/1093/125 +f 490/1101/132 503/1102/133 491/1103/134 +f 485/1097/128 460/1104/135 463/1090/122 +f 467/1105/136 468/1106/137 466/1100/131 +f 503/1107/133 492/1108/138 491/1103/134 +f 465/1092/124 486/1109/139 467/1105/136 +f 469/1110/140 470/1111/141 468/1106/137 +f 504/1112/142 493/1113/143 492/1108/138 +f 469/1110/140 488/1089/121 471/1114/144 +f 471/1114/144 472/1115/145 470/1111/141 +f 493/1113/143 506/1116/146 494/1098/129 +f 473/1117/147 490/1118/132 475/1119/148 +f 473/1117/147 474/1120/149 472/1115/145 +f 494/1098/129 507/1121/150 495/1099/130 +f 477/1122/151 492/1108/138 479/1123/152 +f 475/1124/148 476/1125/153 474/1126/149 +f 495/1099/130 496/1127/154 460/1104/135 +f 481/1128/155 494/1098/129 483/1129/156 +f 477/1122/151 478/1130/157 476/1125/153 +f 496/1131/154 461/1091/123 460/1104/135 +f 467/1105/136 487/1095/127 469/1110/140 +f 479/1123/152 480/1132/158 478/1130/157 +f 461/1091/123 498/1133/159 486/1109/139 +f 473/1117/147 488/1089/121 489/1088/120 +f 481/1128/155 482/1134/160 480/1132/158 +f 475/1124/148 491/1103/134 477/1122/151 +f 498/1135/159 487/1095/127 486/1109/139 +f 483/1129/156 484/1136/161 482/1134/160 +f 501/1137/162 490/1118/132 489/1088/120 +f 479/1123/152 493/1113/143 481/1128/155 +f 485/1097/128 462/1094/126 484/1136/161 +f 468/1106/137 512/1138/163 511/1139/164 +f 500/1140/119 498/1141/159 506/1142/146 +f 511/1139/164 522/1143/165 510/1144/166 +f 462/1094/126 509/1145/167 508/1146/168 +f 466/1100/131 509/1145/167 464/1093/125 +f 482/1134/160 519/1147/169 518/1148/170 +f 478/1130/157 517/1149/171 516/1150/172 +f 476/1125/153 514/1151/173 474/1126/149 +f 462/1094/126 519/1147/169 484/1136/161 +f 472/1115/145 512/1138/163 470/1111/141 +f 468/1106/137 510/1144/166 466/1100/131 +f 480/1132/158 518/1148/170 517/1149/171 +f 478/1130/157 515/1152/174 476/1125/153 +f 474/1120/149 513/1153/175 472/1115/145 +f 524/1154/176 528/1155/177 520/1156/178 +f 509/1145/167 522/1157/165 521/1158/179 +f 509/1145/167 520/1159/178 508/1146/168 +f 519/1147/169 520/1160/178 531/1161/180 +f 519/1147/169 530/1162/181 518/1148/170 +f 518/1148/170 529/1163/182 517/1149/171 +f 516/1150/172 529/1164/182 528/1165/177 +f 516/1150/172 527/1166/183 515/1152/174 +f 514/1151/173 527/1167/183 526/1168/184 +f 513/1153/175 526/1169/184 525/1170/185 +f 513/1153/175 524/1171/176 512/1138/163 +f 512/1138/163 523/1172/186 511/1139/164 +f 538/1173/3 551/423/19 539/1174/19 +f 542/1175/54 555/431/52 543/1176/52 +f 539/1177/19 552/425/50 540/1178/50 +f 536/1179/7 549/496/49 537/1180/49 +f 543/1181/52 544/433/187 532/1182/187 +f 540/1183/50 553/427/4 541/1184/4 +f 537/1185/49 550/420/3 538/1186/3 +f 541/1187/4 554/429/54 542/1188/54 +f 563/421/52 574/486/5 562/422/5 +f 560/426/48 571/459/10 559/428/10 +f 557/432/49 568/812/108 556/434/108 +f 564/497/8 575/489/52 563/421/52 +f 561/424/51 572/468/48 560/426/48 +f 558/430/53 569/442/49 557/432/49 +f 562/422/5 573/480/51 561/424/51 +f 559/428/10 570/448/53 558/430/53 +f 600/501/10 589/474/53 601/492/53 +f 597/510/5 586/462/51 598/505/51 +f 601/492/53 590/477/49 602/483/49 +f 598/505/51 587/465/48 599/503/48 +f 592/445/8 584/453/52 596/446/52 +f 602/483/49 591/814/108 603/484/108 +f 599/503/48 588/471/10 600/501/10 +f 596/446/52 585/456/5 597/510/5 +f 618/1189/4 605/500/54 617/1190/54 +f 622/1191/49 609/511/3 621/1192/3 +f 619/1193/50 606/502/4 618/1194/4 +f 616/1195/52 612/482/187 624/1196/187 +f 623/1197/7 610/444/49 622/1198/49 +f 620/1199/19 607/504/50 619/1200/50 +f 617/1201/54 604/491/52 616/1202/52 +f 621/1203/3 608/509/19 620/1204/19 +f 594/1205/51 577/1206/5 595/1207/5 +f 583/1208/10 579/1209/48 593/1210/48 +f 627/1211/3 546/1212/19 545/1213/3 +f 614/1214/54 565/1215/4 615/1216/4 +f 595/1217/5 567/1218/52 613/1219/52 +f 582/1220/53 535/1221/10 583/1208/10 +f 625/1222/50 565/1215/4 547/1223/50 +f 613/1219/52 566/1224/54 614/1214/54 +f 581/1225/49 534/1226/53 582/1220/53 +f 593/1210/48 578/1227/51 594/1205/51 +f 626/1228/19 547/1223/50 546/1212/19 +f 627/1211/3 533/1229/49 581/1225/49 +f 651/1230/75 636/1231/3 643/1232/6 +f 649/1233/74 642/1234/4 641/1235/8 +f 647/1236/76 640/1237/5 639/1238/9 +f 645/1239/71 638/1240/10 637/1241/7 +f 650/1242/70 643/1232/6 642/1234/4 +f 648/1243/69 641/1235/8 640/1237/5 +f 646/1244/73 639/1238/9 638/1240/10 +f 644/1245/72 637/1241/7 636/1246/3 +f 654/1247/67 646/1248/73 645/1249/71 +f 650/1250/70 660/1251/66 651/1252/75 +f 657/1253/44 649/1254/74 648/1243/69 +f 655/1255/63 647/1256/76 646/1248/73 +f 644/1257/72 654/1247/67 645/1249/71 +f 660/1251/66 644/1258/72 651/1252/75 +f 649/1254/74 659/1259/64 650/1250/70 +f 647/1256/76 657/1253/44 648/1243/69 +f 659/1260/64 668/1261/56 660/1262/66 +f 657/1253/44 666/1263/55 658/1264/65 +f 663/1265/62 656/1266/68 655/1267/63 +f 653/1268/14 662/1269/57 654/1270/67 +f 668/1261/56 653/1271/14 660/1262/66 +f 658/1264/65 667/1272/60 659/1260/64 +f 664/1273/58 657/1253/44 656/1266/68 +f 662/1269/57 655/1267/63 654/1270/67 +f 662/1274/57 671/1275/188 663/1276/62 +f 675/1277/189 668/1278/56 667/1279/60 +f 665/1280/59 674/1281/190 666/1282/55 +f 671/1275/188 664/1283/58 663/1276/62 +f 661/1284/61 670/1285/191 662/1274/57 +f 676/1286/192 661/1287/61 668/1278/56 +f 674/1281/190 667/1279/60 666/1282/55 +f 672/1288/193 665/1280/59 664/1283/58 +f 679/1289/7 687/1290/194 686/1291/195 +f 677/1292/6 689/1293/196 688/1294/197 +f 699/1295/8 683/1296/198 690/1297/199 +f 682/1298/5 684/1299/200 683/1300/198 +f 680/1301/10 686/1291/195 685/1302/201 +f 687/1290/194 677/1292/6 688/1294/197 +f 652/1303/4 690/1297/199 689/1293/196 +f 684/1299/200 680/1301/10 685/1302/201 +f 691/1304/202 683/1305/198 698/1306/11 +f 688/1307/197 692/1308/203 693/1309/204 +f 686/1310/195 694/1311/38 695/1312/205 +f 697/1313/206 685/1314/201 696/1315/207 +f 689/1316/196 691/1304/202 692/1308/203 +f 694/1311/38 688/1307/197 693/1309/204 +f 685/1314/201 695/1312/205 696/1315/207 +f 698/1317/11 684/1318/200 697/1313/206 +f 669/1319/208 697/1320/206 670/1321/191 +f 696/1322/207 672/1323/193 671/1324/188 +f 673/1325/209 693/1326/204 674/1327/190 +f 692/1328/203 676/1329/192 675/1330/189 +f 670/1321/191 696/1322/207 671/1324/188 +f 695/1331/205 673/1325/209 672/1323/193 +f 674/1327/190 692/1328/203 675/1330/189 +f 691/1332/202 669/1333/208 676/1329/192 +f 707/1334/6 714/1335/4 706/1336/4 +f 705/1337/8 712/1338/5 704/1339/5 +f 703/1340/9 710/1341/10 702/1342/10 +f 701/1343/7 709/1344/3 700/1345/3 +f 700/1345/3 715/1346/6 707/1334/6 +f 706/1336/4 713/1347/8 705/1337/8 +f 704/1348/5 711/1349/9 703/1340/9 +f 702/1342/10 708/1350/7 701/1343/7 +f 811/1351/210 802/1352/211 804/1353/212 +f 811/1351/210 801/1354/213 803/1355/214 +f 812/1356/215 800/1357/216 801/1354/213 +f 804/1353/212 800/1358/216 819/1359/217 +f 796/1360/218 807/1361/219 816/1362/220 +f 816/1362/220 806/1363/221 817/1364/222 +f 817/1364/222 805/1365/223 818/1366/224 +f 818/1366/224 804/1353/212 819/1359/217 +f 797/1367/225 816/1368/220 815/1369/226 +f 815/1369/226 817/1370/222 814/1371/227 +f 814/1371/227 818/1372/224 813/1373/228 +f 813/1373/228 819/1374/217 812/1356/215 +f 797/1367/225 808/1375/229 799/1376/230 +f 815/1369/226 809/1377/231 808/1375/229 +f 814/1371/227 810/1378/232 809/1377/231 +f 810/1378/232 812/1356/215 811/1351/210 +f 799/1376/230 807/1361/219 798/1379/233 +f 808/1375/229 806/1363/221 807/1361/219 +f 809/1377/231 805/1365/223 806/1363/221 +f 810/1378/232 804/1353/212 805/1365/223 +f 841/628/4 864/691/54 840/656/54 +f 834/643/53 856/672/49 833/640/49 +f 842/631/50 865/660/4 841/628/4 +f 835/647/10 858/675/53 834/643/53 +f 843/634/19 866/663/50 842/631/50 +f 836/646/48 859/861/10 835/647/10 +f 832/637/3 867/666/19 843/634/19 +f 837/649/51 860/679/48 836/646/48 +f 838/651/5 861/682/51 837/649/51 +f 839/657/52 862/687/5 838/653/5 +f 840/656/54 863/862/52 839/657/52 +f 833/640/49 857/669/3 832/637/3 +f 238/1029/234 237/1028/38 363/1380/3 +f 237/1030/38 244/1381/235 363/1382/3 +f 244/1025/235 243/1383/7 363/1384/3 +f 243/1032/7 242/1031/236 363/1385/3 +f 242/1026/236 241/1386/14 363/1387/3 +f 241/1034/14 240/1033/237 363/1388/3 +f 240/1027/237 239/1389/6 363/1390/3 +f 239/1024/6 238/1023/234 363/1391/3 +f 24/863/24 13/864/25 1/1/25 +f 13/864/25 14/865/26 2/28/26 +f 14/865/26 15/866/27 3/4/27 +f 15/866/27 16/867/28 4/13/28 +f 16/867/28 17/874/29 5/22/29 +f 5/34/29 17/874/29 18/868/30 +f 6/12/30 18/868/30 19/869/31 +f 19/870/31 20/871/32 8/701/32 +f 20/871/32 21/872/33 9/31/33 +f 21/872/33 22/875/34 10/697/34 +f 10/18/34 22/875/34 23/873/35 +f 11/27/35 23/873/35 24/863/24 +f 23/873/36 47/42/36 48/41/37 +f 48/45/37 37/44/38 13/864/38 +f 13/864/38 37/46/38 38/48/39 +f 38/49/39 39/51/40 15/866/40 +f 39/53/40 40/52/41 16/867/41 +f 16/867/41 40/54/41 41/56/42 +f 41/58/42 42/57/43 18/868/43 +f 42/59/43 43/61/44 19/869/44 +f 19/870/44 43/64/44 44/63/45 +f 44/67/45 45/66/46 21/872/46 +f 21/872/46 45/70/46 46/69/47 +f 22/875/47 46/73/47 47/72/36 +f 35/700/48 59/1392/48 58/876/10 +f 32/20/49 56/1393/49 55/877/3 +f 29/702/50 53/1394/50 52/878/4 +f 36/703/51 60/1395/51 59/879/48 +f 26/704/52 50/1396/52 49/880/5 +f 33/705/53 57/1397/53 56/881/49 +f 30/35/19 54/1398/19 53/882/50 +f 25/695/5 49/1399/5 60/883/51 +f 27/696/54 51/1400/54 50/884/52 +f 34/8/10 58/1401/10 57/885/53 +f 31/698/3 55/1402/3 54/886/19 +f 28/699/4 52/1403/4 51/887/54 +f 66/718/51 78/88/51 79/90/5 +f 63/50/53 75/82/53 76/84/10 +f 70/71/4 82/97/4 83/74/50 +f 67/62/5 79/93/5 80/92/52 +f 64/717/10 76/84/10 77/86/48 +f 71/40/50 83/74/50 84/76/19 +f 61/716/3 73/78/3 74/80/49 +f 68/65/52 80/92/52 81/95/54 +f 65/55/48 77/86/48 78/88/51 +f 72/43/19 84/76/19 73/78/3 +f 62/47/49 74/80/49 75/82/53 +f 69/68/54 81/95/54 82/97/4 +f 93/888/54 105/909/54 106/889/4 +f 90/891/51 102/910/51 103/892/5 +f 87/894/53 99/912/53 100/895/10 +f 94/890/4 106/889/4 107/897/50 +f 91/899/5 103/1404/5 104/900/52 +f 88/896/10 100/895/10 101/902/48 +f 95/898/50 107/897/50 108/904/19 +f 85/906/3 97/911/3 98/907/49 +f 92/901/52 104/900/52 105/909/54 +f 89/903/48 101/902/48 102/910/51 +f 96/905/19 108/904/19 97/911/3 +f 86/908/49 98/907/49 99/912/53 +f 120/119/19 132/921/19 121/913/3 +f 110/121/49 122/922/49 123/914/53 +f 117/103/54 129/923/54 130/915/4 +f 114/126/51 126/924/51 127/916/5 +f 111/100/53 123/914/53 124/917/10 +f 118/104/4 130/915/4 131/918/50 +f 115/734/5 127/1405/5 128/919/52 +f 112/109/10 124/917/10 125/920/48 +f 119/111/50 131/918/50 132/921/19 +f 109/128/3 121/913/3 122/922/49 +f 116/113/52 128/919/52 129/923/54 +f 113/116/48 125/920/48 126/924/51 +f 163/157/4 164/155/47 156/925/47 +f 161/752/1 162/166/16 154/927/16 +f 159/149/10 160/151/15 152/929/15 +f 157/152/2 158/154/41 150/931/41 +f 164/155/47 157/152/2 149/932/2 +f 162/166/16 163/157/4 155/926/4 +f 160/151/15 161/160/1 153/933/1 +f 158/154/41 159/149/10 151/930/10 +f 171/934/4 179/947/60 180/935/55 +f 169/937/1 177/1406/61 178/938/56 +f 167/940/10 175/950/62 176/941/57 +f 165/943/2 173/946/59 174/944/58 +f 172/936/47 180/935/55 173/946/59 +f 170/939/16 178/938/56 179/947/60 +f 168/942/15 176/941/57 177/948/61 +f 166/945/41 174/944/58 175/950/62 +f 176/951/57 185/961/67 186/952/14 +f 174/944/58 183/963/68 184/954/63 +f 180/935/55 179/964/60 188/956/64 +f 178/958/56 177/1407/61 186/959/14 +f 176/951/57 175/955/62 184/954/63 +f 174/944/58 173/946/59 182/962/44 +f 173/946/59 180/935/55 189/957/65 +f 178/958/56 187/960/66 188/956/64 +f 189/957/65 197/970/74 190/965/69 +f 187/960/66 195/971/75 196/966/70 +f 186/952/14 185/961/67 193/967/71 +f 183/963/68 191/972/76 192/969/73 +f 188/956/64 196/966/70 197/970/74 +f 186/959/14 194/1408/72 195/971/75 +f 185/961/67 184/954/63 192/969/73 +f 182/962/44 190/965/69 191/972/76 +f 194/973/72 201/1409/82 202/974/77 +f 192/976/73 199/985/83 200/977/78 +f 190/965/69 181/980/80 198/979/79 +f 197/970/74 204/986/84 181/980/80 +f 195/975/75 202/974/77 203/981/81 +f 193/978/71 200/977/78 201/983/82 +f 191/972/76 198/979/79 199/985/83 +f 196/982/70 203/981/81 204/986/84 +f 204/986/84 203/997/81 212/987/85 +f 202/989/77 201/1410/82 210/990/38 +f 199/992/83 208/1000/90 209/993/88 +f 198/979/79 181/980/80 206/995/11 +f 204/986/84 213/988/86 206/995/11 +f 203/997/81 202/989/77 211/991/87 +f 201/998/82 200/994/78 209/993/88 +f 198/979/79 207/996/89 208/1000/90 +f 212/987/85 211/991/87 219/1001/91 +f 210/999/38 209/993/88 217/1003/93 +f 208/1000/90 207/996/89 215/1005/95 +f 212/987/85 220/1002/92 221/1007/97 +f 210/990/38 218/1411/94 219/1001/91 +f 208/1000/90 216/1006/96 217/1003/93 +f 207/996/89 206/995/11 214/1008/98 +f 213/988/86 221/1007/97 214/1008/98 +f 215/1005/95 214/1008/98 205/1009/1 +f 221/1007/97 228/1019/16 205/1009/1 +f 220/1011/92 219/1021/91 226/1012/47 +f 218/1014/94 217/1022/93 224/1015/41 +f 216/1017/96 215/1005/95 222/1010/15 +f 220/1011/92 227/1013/4 228/1019/16 +f 218/1020/94 225/1412/2 226/1012/47 +f 216/1017/96 223/1018/10 224/1015/41 +f 231/176/99 230/180/100 238/1023/100 +f 235/170/101 243/1383/101 244/1025/102 +f 233/754/103 241/1386/103 242/1026/104 +f 231/176/99 239/1389/99 240/1027/105 +f 230/180/100 229/179/106 237/1028/106 +f 236/171/102 244/1381/102 237/1030/106 +f 235/170/101 234/173/104 242/1031/104 +f 233/185/103 232/177/105 240/1033/105 +f 316/260/4 340/292/4 339/323/54 +f 309/275/53 333/307/53 331/304/49 +f 317/263/50 341/295/50 340/292/4 +f 310/279/10 334/772/10 333/307/53 +f 318/266/19 342/298/19 341/295/50 +f 311/278/48 335/311/48 334/772/10 +f 307/269/3 332/301/3 342/298/19 +f 312/281/51 336/314/51 335/311/48 +f 313/283/5 337/317/5 336/314/51 +f 314/289/52 338/773/52 337/319/5 +f 315/288/54 339/323/54 338/773/52 +f 308/272/49 331/304/49 332/301/3 +f 383/1035/54 390/1042/54 389/1036/107 +f 380/1038/53 387/1044/53 386/1039/108 +f 384/1041/109 391/1047/109 390/1042/54 +f 381/1043/110 388/1413/110 387/1044/53 +f 379/1040/108 386/1039/108 385/1045/19 +f 378/1046/19 385/1045/19 391/1047/109 +f 397/1048/50 404/1055/50 403/1049/111 +f 394/1051/48 401/1057/48 400/1052/112 +f 398/1054/113 405/1060/113 404/1055/50 +f 395/1056/114 402/1414/114 401/1057/48 +f 393/1053/112 400/1052/112 399/1058/49 +f 392/1059/49 399/1058/49 405/1060/113 +f 417/1061/115 418/1415/11 426/1062/11 +f 407/381/7 414/1067/7 415/1064/3 +f 406/405/3 415/1064/3 421/1065/6 +f 412/401/4 420/1068/4 419/1066/8 +f 410/410/5 418/1415/5 417/1061/9 +f 408/411/10 416/1070/10 414/1067/7 +f 413/404/6 421/1065/6 420/1068/4 +f 411/399/8 419/1066/8 418/1069/5 +f 409/408/9 417/1061/9 416/1070/10 +f 416/1070/15 424/1416/15 422/1071/116 +f 421/1065/117 429/1417/117 428/1072/16 +f 419/1066/118 427/1418/118 426/1073/11 +f 416/1070/15 417/1061/115 425/1074/115 +f 414/1067/116 422/1419/116 423/1076/14 +f 415/1064/14 423/1420/14 429/1077/117 +f 420/1068/16 428/1421/16 427/1078/118 +f 449/415/7 457/1083/7 458/1079/10 +f 447/416/6 455/1084/6 456/1080/3 +f 444/383/8 452/1085/8 454/1081/4 +f 450/400/10 458/1079/10 459/1082/9 +f 448/790/3 456/1422/3 457/1083/7 +f 446/412/4 454/1081/4 455/1084/6 +f 445/382/5 453/1086/5 452/1085/8 +f 451/413/9 459/1082/9 453/1086/5 +f 500/1087/119 501/1423/162 489/1088/120 +f 463/1090/122 460/1104/135 461/1091/123 +f 463/1090/122 465/1092/124 464/1093/125 +f 487/1095/127 499/1424/238 500/1096/119 +f 485/1097/128 483/1129/156 494/1098/129 +f 465/1092/124 467/1105/136 466/1100/131 +f 490/1101/132 502/1425/239 503/1102/133 +f 485/1097/128 495/1099/130 460/1104/135 +f 467/1105/136 469/1110/140 468/1106/137 +f 503/1107/133 504/1426/142 492/1108/138 +f 465/1092/124 461/1091/123 486/1109/139 +f 469/1110/140 471/1114/144 470/1111/141 +f 504/1112/142 505/1427/240 493/1113/143 +f 469/1110/140 487/1095/127 488/1089/121 +f 471/1114/144 473/1117/147 472/1115/145 +f 493/1113/143 505/1428/240 506/1116/146 +f 473/1117/147 489/1088/120 490/1118/132 +f 473/1117/147 475/1119/148 474/1120/149 +f 494/1098/129 506/1429/146 507/1121/150 +f 477/1122/151 491/1103/134 492/1108/138 +f 475/1124/148 477/1122/151 476/1125/153 +f 495/1099/130 507/1430/150 496/1127/154 +f 481/1128/155 493/1113/143 494/1098/129 +f 477/1122/151 479/1123/152 478/1130/157 +f 496/1131/154 497/1431/241 461/1091/123 +f 467/1105/136 486/1109/139 487/1095/127 +f 479/1123/152 481/1128/155 480/1132/158 +f 461/1091/123 497/1432/241 498/1133/159 +f 473/1117/147 471/1114/144 488/1089/121 +f 481/1128/155 483/1129/156 482/1134/160 +f 475/1124/148 490/1101/132 491/1103/134 +f 498/1135/159 499/1433/238 487/1095/127 +f 483/1129/156 485/1097/128 484/1136/161 +f 501/1137/162 502/1434/239 490/1118/132 +f 479/1123/152 492/1108/138 493/1113/143 +f 485/1097/128 463/1090/122 462/1094/126 +f 468/1106/137 470/1111/141 512/1138/163 +f 498/1141/159 497/1435/241 506/1142/146 +f 497/1435/241 496/1436/154 506/1142/146 +f 496/1436/154 507/1437/150 506/1142/146 +f 506/1142/146 505/1438/240 504/1439/142 +f 504/1439/142 503/1440/133 502/1441/239 +f 502/1441/239 501/1442/162 500/1140/119 +f 500/1140/119 499/1443/238 498/1141/159 +f 506/1142/146 504/1439/142 502/1441/239 +f 502/1441/239 500/1140/119 506/1142/146 +f 511/1139/164 523/1444/186 522/1143/165 +f 462/1094/126 464/1093/125 509/1145/167 +f 466/1100/131 510/1144/166 509/1145/167 +f 482/1134/160 484/1136/161 519/1147/169 +f 478/1130/157 480/1132/158 517/1149/171 +f 476/1125/153 515/1152/174 514/1151/173 +f 462/1094/126 508/1146/168 519/1147/169 +f 472/1115/145 513/1153/175 512/1138/163 +f 468/1106/137 511/1139/164 510/1144/166 +f 480/1132/158 482/1134/160 518/1148/170 +f 478/1130/157 516/1150/172 515/1152/174 +f 474/1120/149 514/1445/173 513/1153/175 +f 520/1156/178 521/1446/179 524/1154/176 +f 521/1446/179 522/1447/165 524/1154/176 +f 522/1447/165 523/1448/186 524/1154/176 +f 524/1154/176 525/1449/185 526/1450/184 +f 526/1450/184 527/1451/183 528/1155/177 +f 528/1155/177 529/1452/182 530/1453/181 +f 530/1453/181 531/1454/180 528/1155/177 +f 531/1454/180 520/1156/178 528/1155/177 +f 524/1154/176 526/1450/184 528/1155/177 +f 509/1145/167 510/1144/166 522/1157/165 +f 509/1145/167 521/1455/179 520/1159/178 +f 519/1147/169 508/1146/168 520/1160/178 +f 519/1147/169 531/1456/180 530/1162/181 +f 518/1148/170 530/1457/181 529/1163/182 +f 516/1150/172 517/1149/171 529/1164/182 +f 516/1150/172 528/1458/177 527/1166/183 +f 514/1151/173 515/1152/174 527/1167/183 +f 513/1153/175 514/1445/173 526/1169/184 +f 513/1153/175 525/1459/185 524/1171/176 +f 512/1138/163 524/1460/176 523/1172/186 +f 538/1173/3 550/797/3 551/423/19 +f 542/1175/54 554/801/54 555/431/52 +f 539/1177/19 551/798/19 552/425/50 +f 536/1179/7 548/817/7 549/496/49 +f 543/1181/52 555/802/52 544/433/187 +f 540/1183/50 552/799/50 553/427/4 +f 537/1185/49 549/796/49 550/420/3 +f 541/1187/4 553/800/4 554/429/54 +f 563/421/52 575/489/52 574/486/5 +f 560/426/48 572/468/48 571/459/10 +f 557/432/49 569/442/49 568/812/108 +f 564/497/8 576/494/8 575/489/52 +f 561/424/51 573/480/51 572/468/48 +f 558/430/53 570/448/53 569/442/49 +f 562/422/5 574/486/5 573/480/51 +f 559/428/10 571/459/10 570/448/53 +f 600/501/10 588/471/10 589/474/53 +f 597/510/5 585/456/5 586/462/51 +f 601/492/53 589/474/53 590/477/49 +f 598/505/51 586/462/51 587/465/48 +f 592/445/8 580/438/8 584/453/52 +f 602/483/49 590/477/49 591/814/108 +f 599/503/48 587/465/48 588/471/10 +f 596/446/52 584/453/52 585/456/5 +f 618/1189/4 606/818/4 605/500/54 +f 622/1191/49 610/831/49 609/511/3 +f 619/1193/50 607/819/50 606/502/4 +f 616/1195/52 604/815/52 612/482/187 +f 623/1197/7 611/813/7 610/444/49 +f 620/1199/19 608/820/19 607/504/50 +f 617/1201/54 605/816/54 604/491/52 +f 621/1203/3 609/830/3 608/509/19 +f 594/1205/51 578/1227/51 577/1206/5 +f 583/1208/10 535/1221/10 579/1209/48 +f 627/1211/3 626/1228/19 546/1212/19 +f 614/1214/54 566/1224/54 565/1215/4 +f 595/1217/5 577/1461/5 567/1218/52 +f 582/1220/53 534/1226/53 535/1221/10 +f 625/1222/50 615/1216/4 565/1215/4 +f 613/1219/52 567/1218/52 566/1224/54 +f 581/1225/49 533/1229/49 534/1226/53 +f 593/1210/48 579/1209/48 578/1227/51 +f 626/1228/19 625/1222/50 547/1223/50 +f 627/1211/3 545/1213/3 533/1229/49 +f 651/1230/75 644/1462/72 636/1231/3 +f 649/1233/74 650/1242/70 642/1234/4 +f 647/1236/76 648/1243/69 640/1237/5 +f 645/1239/71 646/1244/73 638/1240/10 +f 650/1242/70 651/1230/75 643/1232/6 +f 648/1243/69 649/1233/74 641/1235/8 +f 646/1244/73 647/1236/76 639/1238/9 +f 644/1245/72 645/1239/71 637/1241/7 +f 654/1247/67 655/1255/63 646/1248/73 +f 650/1250/70 659/1259/64 660/1251/66 +f 657/1253/44 658/1463/65 649/1254/74 +f 655/1255/63 656/1464/68 647/1256/76 +f 644/1257/72 653/1465/14 654/1247/67 +f 660/1251/66 653/1466/14 644/1258/72 +f 649/1254/74 658/1463/65 659/1259/64 +f 647/1256/76 656/1464/68 657/1253/44 +f 659/1260/64 667/1272/60 668/1261/56 +f 657/1253/44 665/1280/59 666/1263/55 +f 663/1265/62 664/1273/58 656/1266/68 +f 653/1268/14 661/1467/61 662/1269/57 +f 668/1261/56 661/1468/61 653/1271/14 +f 658/1264/65 666/1263/55 667/1272/60 +f 664/1273/58 665/1280/59 657/1253/44 +f 662/1269/57 663/1265/62 655/1267/63 +f 662/1274/57 670/1285/191 671/1275/188 +f 675/1277/189 676/1286/192 668/1278/56 +f 665/1280/59 673/1325/209 674/1281/190 +f 671/1275/188 672/1288/193 664/1283/58 +f 661/1284/61 669/1469/208 670/1285/191 +f 676/1286/192 669/1470/208 661/1287/61 +f 674/1281/190 675/1277/189 667/1279/60 +f 672/1288/193 673/1325/209 665/1280/59 +f 679/1289/7 678/1471/3 687/1290/194 +f 677/1292/6 652/1303/4 689/1293/196 +f 699/1295/8 682/1472/5 683/1296/198 +f 682/1298/5 681/1473/9 684/1299/200 +f 680/1301/10 679/1289/7 686/1291/195 +f 687/1290/194 678/1471/3 677/1292/6 +f 652/1303/4 699/1295/8 690/1297/199 +f 684/1299/200 681/1473/9 680/1301/10 +f 691/1304/202 690/1474/199 683/1305/198 +f 688/1307/197 689/1316/196 692/1308/203 +f 686/1310/195 687/1290/194 694/1311/38 +f 697/1313/206 684/1318/200 685/1314/201 +f 689/1316/196 690/1474/199 691/1304/202 +f 694/1311/38 687/1290/194 688/1307/197 +f 685/1314/201 686/1310/195 695/1312/205 +f 698/1317/11 683/1475/198 684/1318/200 +f 669/1319/208 698/1476/11 697/1320/206 +f 696/1322/207 695/1331/205 672/1323/193 +f 673/1325/209 694/1311/38 693/1326/204 +f 692/1328/203 691/1332/202 676/1329/192 +f 670/1321/191 697/1320/206 696/1322/207 +f 695/1331/205 694/1311/38 673/1325/209 +f 674/1327/190 693/1326/204 692/1328/203 +f 691/1332/202 698/1477/11 669/1333/208 +f 707/1334/6 715/1346/6 714/1335/4 +f 705/1337/8 713/1347/8 712/1338/5 +f 703/1340/9 711/1349/9 710/1341/10 +f 701/1343/7 708/1350/7 709/1344/3 +f 700/1345/3 709/1344/3 715/1346/6 +f 706/1336/4 714/1335/4 713/1347/8 +f 704/1348/5 712/1478/5 711/1349/9 +f 702/1342/10 710/1341/10 708/1350/7 +f 811/1351/210 803/1355/214 802/1352/211 +f 811/1351/210 812/1356/215 801/1354/213 +f 812/1356/215 819/1374/217 800/1357/216 +f 804/1353/212 802/1352/211 800/1358/216 +f 796/1360/218 798/1379/233 807/1361/219 +f 816/1362/220 807/1361/219 806/1363/221 +f 817/1364/222 806/1363/221 805/1365/223 +f 818/1366/224 805/1365/223 804/1353/212 +f 797/1367/225 796/1479/218 816/1368/220 +f 815/1369/226 816/1368/220 817/1370/222 +f 814/1371/227 817/1370/222 818/1372/224 +f 813/1373/228 818/1372/224 819/1374/217 +f 797/1367/225 815/1369/226 808/1375/229 +f 815/1369/226 814/1371/227 809/1377/231 +f 814/1371/227 813/1373/228 810/1378/232 +f 810/1378/232 813/1373/228 812/1356/215 +f 799/1376/230 808/1375/229 807/1361/219 +f 808/1375/229 809/1377/231 806/1363/221 +f 809/1377/231 810/1378/232 805/1365/223 +f 810/1378/232 811/1351/210 804/1353/212 +f 841/628/4 865/660/4 864/691/54 +f 834/643/53 858/675/53 856/672/49 +f 842/631/50 866/663/50 865/660/4 +f 835/647/10 859/861/10 858/675/53 +f 843/634/19 867/666/19 866/663/50 +f 836/646/48 860/679/48 859/861/10 +f 832/637/3 857/669/3 867/666/19 +f 837/649/51 861/682/51 860/679/48 +f 838/651/5 862/685/5 861/682/51 +f 839/657/52 863/862/52 862/687/5 +f 840/656/54 864/691/54 863/862/52 +f 833/640/49 856/672/49 857/669/3 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png b/src/main/resources/assets/hbm/textures/models/weapons/flamethrower.png new file mode 100644 index 0000000000000000000000000000000000000000..10e3eb59b29789993d78ed59c91818ca98224998 GIT binary patch literal 10898 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 literal 0 HcmV?d00001 From fffad806386767e9fbc0254d2dfdd72db2750f5b Mon Sep 17 00:00:00 2001 From: 9Valjews <64272884+9Valjew@users.noreply.github.com> Date: Sun, 8 Sep 2024 21:50:34 +0300 Subject: [PATCH 14/20] Added satellite list command --- .../com/hbm/commands/CommandSatellites.java | 25 ++++++++++++++++--- src/main/resources/assets/hbm/lang/en_US.lang | 1 + 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java index 6f1a803cd..20ba47c0e 100644 --- a/src/main/java/com/hbm/commands/CommandSatellites.java +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -8,6 +8,7 @@ import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; @@ -25,8 +26,10 @@ public class CommandSatellites extends CommandBase { @Override public String getCommandUsage(ICommandSender iCommandSender) { return String.format(Locale.US, - "%s/%s orbit %s- Launch the held satellite\n" + - "%s/%s descend %s- Deletes satellite by frequency.", + "%s/%s orbit %s- Launch the held satellite.\n" + + "%s/%s descend %s- Deletes satellite by frequency.\n"+ + "%s/%s list %s- Lists all active satellites.", + EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE ); @@ -65,6 +68,22 @@ public class CommandSatellites extends CommandBase { sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); } break; + case "list": + data = SatelliteSavedData.getData(sender.getEntityWorld()); + if (data.sats.isEmpty()) { + ChatComponentTranslation message = new ChatComponentTranslation("commands.satellite.no_active_satellites"); + message.getChatStyle().setColor(EnumChatFormatting.RED); + sender.addChatMessage(message); + } else { + data.sats.forEach((listFreq, sat) -> { + String messageText = String.valueOf(listFreq) + " - " + sat.getClass().getSimpleName(); + ChatComponentText message = new ChatComponentText(messageText); + message.getChatStyle().setColor(EnumChatFormatting.GREEN); + sender.addChatMessage(message); + }); + } + break; + } } @@ -78,7 +97,7 @@ public class CommandSatellites extends CommandBase { return Collections.emptyList(); } if(args.length == 1) { - return getListOfStringsMatchingLastWord(args, "orbit", "descend"); + return getListOfStringsMatchingLastWord(args, "orbit", "descend","list"); } if (args[0].equals("descend")) { return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 2e7c34e4a..20995b335 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -675,6 +675,7 @@ chem.XENON=Linde Xenon Cycle chem.XENON_OXY=Boosted Linde Xenon Cycle chem.YELLOWCAKE=Yellowcake Production +commands.satellite.no_active_satellites=No active satellites found! commands.satellite.no_satellite=No satellite using this frequency found! commands.satellite.not_a_satellite=The held item is not a satellite! commands.satellite.satellite_descended=Satellite successfully descended. From 7f91038b08aca444f756ca25fd92650dc4a8a44d Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Sep 2024 21:30:47 +0200 Subject: [PATCH 15/20] conveyor destroyer mode --- changelog | 2 + gradle.properties | 2 +- .../com/hbm/blocks/network/CraneInserter.java | 7 ++- .../container/ContainerCraneInserter.java | 2 +- .../hbm/inventory/gui/GUICraneInserter.java | 21 ++++++++- .../java/com/hbm/items/tool/ItemDiscord.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../network/TileEntityCraneExtractor.java | 3 +- .../network/TileEntityCraneInserter.java | 43 +++++++++++++++++- .../gui/storage/gui_crane_inserter.png | Bin 1236 -> 1815 bytes 10 files changed, 74 insertions(+), 10 deletions(-) diff --git a/changelog b/changelog index c26beadfa..ed2888461 100644 --- a/changelog +++ b/changelog @@ -6,6 +6,8 @@ * Updated CMB brick texture * The ICF machine block now renders with its 3d model in the creative inventory * "Toggle backpack" keybind is now called "toggle jetpack" to reduce confusion +* The xenium resonator can now teleport players using the radar linker +* Inserters now have a toggleable destroyer mode which will delete items that cannot be inserted or cached instead of spilling them ## Fixed * Fixed pumpjack gauges not syncing properly diff --git a/gradle.properties b/gradle.properties index 93317634f..856cc07bf 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5061 +mod_build_number=5082 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/network/CraneInserter.java b/src/main/java/com/hbm/blocks/network/CraneInserter.java index 22dcdcad8..b21009505 100644 --- a/src/main/java/com/hbm/blocks/network/CraneInserter.java +++ b/src/main/java/com/hbm/blocks/network/CraneInserter.java @@ -82,10 +82,13 @@ public class CraneInserter extends BlockCraneBase implements IEnterableBlock { addToInventory(inv, access, toAdd, outputDirection.getOpposite().ordinal()); } + TileEntityCraneInserter inserter = null; + if(toAdd.stackSize > 0) { - addToInventory((TileEntityCraneInserter) world.getTileEntity(x, y, z), null, toAdd, outputDirection.getOpposite().ordinal()); + inserter = (TileEntityCraneInserter) world.getTileEntity(x, y, z); + addToInventory(inserter, null, toAdd, outputDirection.getOpposite().ordinal()); } - if(toAdd.stackSize > 0) { + if(toAdd.stackSize > 0 && inserter != null && !inserter.destroyer) { EntityItem drop = new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, toAdd.copy()); world.spawnEntityInWorld(drop); } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java index ad08c4a45..aa5acf950 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneInserter.java @@ -17,7 +17,7 @@ public class ContainerCraneInserter extends Container { for(int i = 0; i < 3; i++) { for(int j = 0; j < 7; j++) { - this.addSlotToContainer(new Slot(inserter, j + i * 7, 26 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new Slot(inserter, j + i * 7, 8 + j * 18, 17 + i * 18)); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java index 28813d9ae..a4890ae00 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneInserter.java @@ -4,11 +4,15 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.lib.RefStrings; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneInserter; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUICraneInserter extends GuiInfoContainer { @@ -23,11 +27,23 @@ public class GUICraneInserter extends GuiInfoContainer { this.xSize = 176; this.ySize = 185; } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 151 <= x && guiLeft + 151 + 18 > x && guiTop + 34 < y && guiTop + 34 + 18 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("destroyer", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, inserter.xCoord, inserter.yCoord, inserter.zCoord)); + } + } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.inserter.hasCustomInventoryName() ? this.inserter.getInventoryName() : I18n.format(this.inserter.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 18, 5, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -36,5 +52,8 @@ public class GUICraneInserter extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(inserter.destroyer) + drawTexturedModalRect(guiLeft + 151, guiTop + 34, 176, 0, 18, 18); } } diff --git a/src/main/java/com/hbm/items/tool/ItemDiscord.java b/src/main/java/com/hbm/items/tool/ItemDiscord.java index 75f8893de..b17818c25 100644 --- a/src/main/java/com/hbm/items/tool/ItemDiscord.java +++ b/src/main/java/com/hbm/items/tool/ItemDiscord.java @@ -20,7 +20,7 @@ public class ItemDiscord extends Item { MovingObjectPosition pos = Library.rayTrace(player, 100, 1); - if(pos.typeOfHit == MovingObjectType.BLOCK) { + if(pos != null && pos.typeOfHit == MovingObjectType.BLOCK) { if(!world.isRemote) { diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index af861b280..0707248a9 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5061)"; + public static final String VERSION = "1.0.27 BETA (5082)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java index 628b3946c..9d858387a 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneExtractor.java @@ -2,7 +2,6 @@ package com.hbm.tileentity.network; import api.hbm.conveyor.IConveyorBelt; import com.hbm.entity.item.EntityMovingItem; -import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.inventory.gui.GUICraneExtractor; import com.hbm.items.ModItems; @@ -26,7 +25,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver, IControlReceiverFilter { +public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiverFilter { public boolean isWhitelist = false; public ModulePatternMatcher matcher; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java index b98985bc2..151bf3628 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneInserter.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.network; import com.hbm.blocks.network.CraneInserter; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCraneInserter; import com.hbm.inventory.gui.GUICraneInserter; import com.hbm.tileentity.IGUIProvider; @@ -8,18 +9,22 @@ import com.hbm.util.InventoryUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider { +public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUIProvider, IControlReceiver { + public boolean destroyer = true; public static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; public TileEntityCraneInserter() { @@ -82,9 +87,23 @@ public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUI } } } + + this.networkPackNT(15); } } + @Override + public void serialize(ByteBuf buf) { + super.serialize(buf); + buf.writeBoolean(destroyer); + } + + @Override + public void deserialize(ByteBuf buf) { + super.deserialize(buf); + destroyer = buf.readBoolean(); + } + @Override public int[] getAccessibleSlotsFromSide(int side) { return access; @@ -110,4 +129,26 @@ public class TileEntityCraneInserter extends TileEntityCraneBase implements IGUI public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICraneInserter(player.inventory, this); } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.destroyer = nbt.getBoolean("destroyer"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("destroyer", this.destroyer); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("destroyer")) this.destroyer = !this.destroyer; + } } diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_inserter.png index 114a1561a704c5c6990e1ab8c4571c469c4c5518..17e78f6bc557e3724c84afaffcdd26d81dc64ff9 100644 GIT binary patch literal 1815 zcmb_cc~H}55dD5JB!S^R6y*w)VyO`bSk7Qjj&KPADpk4UR6sy9g#aM|E67nmq#~Em zDsmGEmlDBP6{Oq)hzJ1`MF7hqLz*CuwHWHt&+^t423l==c38NKfY*5ti-q86tUjEdQ)#hZukbyF(9Rd3q~Gin#_%0a+RUF8$pK<-=T*Mn?OnJD(38LD&Rgk$l}G0azwAT z`@ak^;5d|YWgn$zQcOKXymbc$2P@r_)O7IMobyTNAC&{Yvt+Vh(M|B-PHR>YK&LVT z*P^9onFlxEUmD^N^J#^ZJahEYJy7?BbOqgFiF=It)TpB?7W z-^-xlV`rgEtG?Wa82d1=VoX7jZvCpuuq{mprR1PVEfnYixHID77w} z?w{sV@P~_?DuZL28ttY9>yp+Maw_rt_uT?9D)G&p9z{|O4b$B>kqeiG;I|{a=v7^7 zF>0YiQ79fO`5R0Rwn|Q$Q_uja2i`*$s?r|q?>a_%Jr|Nn=f^1qA&DrP@-T|Oc|YD z<+OH3T3Vck0*n&MVs~>G(tx)p3;ZTxpjHCN9Keo=&kiRn%v+-wrLa2nI5=oB4b)?bKeGTmOa?}&d*Pt4a3#qMAbej-b&F9k=|gWL*)$p$*I?$k zZZxmJ(oz9BpKQ9ZYz9-$%rFCv5!_uO`CWYfW6@iBSQS7q+ZHbrwcofcsE$*&kE9|_ zWnfHCOWy3NE$odxzA*{kEy#F!>NphqR6fK?QwM63`akiRxxf*t;E5m2b@^TP# zB+#ft)z12Ff70hrt;8%66v;FHqu`W#EE$g%k~X&*V==Bhj>2Mc33!kD5n(uChlwb3*px(!5>D-s0K!Y_t@toM-EYE7i2&u9YBVD8yjO vd|ciDFr7CbE@Hb#LDw7PAIAAlnHtAOszpi6sq;#bHi2xd94)I3cqjY@T$|zW literal 1236 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGv=x2KC^ zNX4ADcLVbtMF_NAELv^OnsZp%@snKyM_ha4wC9RUzDBxkvNe-m|9QUW$y$eo{Sw?= z3%6}In{o2ILCtsB2Yc7fpHLbr`~S~P1D;T&3sd8z&lP?6d}WhP=sAJin^Jr4vpy)> zoog{`{)3{OA)!~lR;?{kyU?n8o@ymHPh2mLfHwvz( zH)EQ4Ij67J;cqc7s@GApA%_W60<4kmue8~mt?OP#g?^1-DYTH$Y2_%loBtXV&bI&J z)?Z(h8(&=$blJG!_S>-MpLag>Wzf&~C-xw&c7eSf(O&b*u( zoomlCv_1Z~U!zgRsa9l?C5oP_Ql}&W48sTp9Y17UVpvy)mzgu>Y&K_ zUYx^{b)1Y?{$8AM92m>H<|iu$Sc4+#uZ(o#twJ(l`LE2a%3XpSRVm6B%J#6rvWe|p zjtuP$mbPbp?hu{v_6AoD(5W$V@{UK7m>|I#GmeKPlpPOy@V0^*ng@3m+5b(K-oH9a zqAf9Y+Rk8#Yiby-=kFB%@EwslV5x*W`ob}Lx3X)N50Vy1 PgADL=^>bP0l+XkKX|T4? From a0982b09fcc06b16e8e797d1cec48a3651a2b6b7 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 8 Sep 2024 23:20:53 +0200 Subject: [PATCH 16/20] please just shoot me --- src/main/resources/META-INF/HBM_at.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index c84644c46..565b71102 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -36,4 +36,4 @@ public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # ha public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload # ItemRenderer -public net.minecraft.client.renderer.ItemRenderer.field_78453_b # itemToRender \ No newline at end of file +public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender \ No newline at end of file From 2b221c880b94d8d42b48b90a6a5a5118b0cf46e2 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Mon, 9 Sep 2024 16:04:39 -0400 Subject: [PATCH 17/20] e Adds a config for 528 nether burning, and makes nether burning only affect players --- src/main/java/com/hbm/config/GeneralConfig.java | 2 ++ src/main/java/com/hbm/handler/EntityEffectHandler.java | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index b46a16a23..643ca8a9a 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -49,6 +49,7 @@ public class GeneralConfig { public static boolean enable528BedrockSpawn = false; public static boolean enable528BosniaSimulator = true; public static boolean enable528BedrockReplacement = true; + public static boolean enable528NetherBurn = true; public static int coltanRate = 2; public static int bedrockRate = 50; @@ -127,6 +128,7 @@ public class GeneralConfig { enable528BedrockSpawn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBedrockSpawning", "Enables the bedrock coltan ores as a rare spawn. These will be rarely found anywhere in the world.", false); enable528BosniaSimulator = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enableBosniaSimulator", "Enables anti tank mines spawning all over the world.", true); enable528BedrockReplacement = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528BedrockReplacement", "Replaces certain bedrock ores with ones that require additional processing.", true); + enable528NetherBurn = CommonConfig.createConfigBool(config, CATEGORY_528, "X528_enable528NetherBurn", "Whether players burn in the nether", true); coltanRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_oreColtanFrequency", "Determines how many coltan ore veins are to be expected in a chunk. These values do not affect the frequency in deposits, and only apply if random coltan spanwing is enabled.", 2); bedrockRate = CommonConfig.createConfigInt(config, CATEGORY_528, "X528_bedrockColtanFrequency", "Determines how often (1 in X) bedrock coltan ores spawn. Applies for both the bedrock ores in the coltan deposit (if applicable) and the random bedrock ores (if applicable)", 50); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 0810bb580..2ce39d4ce 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -99,8 +99,8 @@ public class EntityEffectHandler { ExplosionNukeSmall.explode(entity.worldObj, entity.posX, entity.posY, entity.posZ, ExplosionNukeSmall.PARAMS_MEDIUM); } } - - if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { + //only sets players on fire so mod compatibility doesnt die + if((GeneralConfig.enable528 && GeneralConfig.enable528NetherBurn) && entity instanceof EntityPlayer && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } From 699a8759a7c492f1f9577e03eca60eb4a185625b Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 10 Sep 2024 16:44:34 +0200 Subject: [PATCH 18/20] removed a ton of unused crap --- changelog | 21 +- src/main/java/com/hbm/items/ModItems.java | 8 - .../java/com/hbm/items/armor/ArmorDNT.java | 2 +- .../java/com/hbm/items/armor/ItemModPads.java | 2 +- .../java/com/hbm/items/weapon/GunDash.java | 103 ------ .../java/com/hbm/items/weapon/GunRpg.java | 144 -------- .../java/com/hbm/items/weapon/GunUZI.java | 135 ------- .../java/com/hbm/items/weapon/GunXVL1456.java | 180 ---------- .../java/com/hbm/items/weapon/GunZOMG.java | 226 ------------ src/main/java/com/hbm/main/ClientProxy.java | 2 - .../com/hbm/main/ModEventHandlerClient.java | 14 - .../item/weapon/ItemRenderOverkill.java | 51 --- .../weapon/ItemRenderRevolverNightmare.java | 86 ----- .../render/item/weapon/ItemRenderRocket.java | 64 ---- .../java/com/hbm/render/model/ModelAt4.java | 134 ------- .../com/hbm/render/model/ModelBoltAction.java | 250 ------------- .../java/com/hbm/render/model/ModelDash.java | 122 ------- .../com/hbm/render/model/ModelGloves.java | 9 - .../com/hbm/render/model/ModelGrenade.java | 67 ---- .../com/hbm/render/model/ModelNightmare.java | 198 ----------- .../com/hbm/render/model/ModelNightmare2.java | 265 -------------- .../java/com/hbm/render/model/ModelPip.java | 223 ------------ .../com/hbm/render/model/ModelRocket.java | 121 ------- .../com/hbm/render/model/ModelRocketOld.java | 63 ---- .../com/hbm/render/model/ModelTwiGun.java | 329 ------------------ .../com/hbm/sound/MovingSoundPlayerLoop.java | 1 + .../com/hbm/sound/MovingSoundXVL1456.java | 32 -- src/main/resources/assets/hbm/sounds.json | 1 - .../hbm/textures/models/JetPackPurple.png | Bin 599 -> 0 bytes .../hbm/textures/models/ModelBoltAction.png | Bin 2099 -> 0 bytes .../textures/models/ModelBoltActionDark.png | Bin 2391 -> 0 bytes .../models/ModelBoltActionDarkGreen.png | Bin 2134 -> 0 bytes .../textures/models/ModelBoltActionGreen.png | Bin 2088 -> 0 bytes .../models/ModelBoltActionSaturnite.png | Bin 2012 -> 0 bytes .../hbm/textures/models/ModelCalBarrel.png | Bin 750 -> 0 bytes .../hbm/textures/models/ModelCalDualStock.png | Bin 668 -> 0 bytes .../hbm/textures/models/ModelCalStock.png | Bin 606 -> 0 bytes .../assets/hbm/textures/models/ModelDash.png | Bin 499 -> 0 bytes .../hbm/textures/models/ModelLeverAction.png | Bin 1780 -> 0 bytes .../textures/models/ModelLeverActionDark.png | Bin 2019 -> 0 bytes .../assets/hbm/textures/models/ModelPip.png | Bin 2305 -> 0 bytes .../hbm/textures/models/ModelPipGrey.png | Bin 1838 -> 0 bytes .../hbm/textures/models/ModelPipNoScope.png | Bin 1573 -> 0 bytes .../hbm/textures/models/ModelPipRed.png | Bin 1853 -> 0 bytes .../hbm/textures/models/ModelPipSilver.png | Bin 1515 -> 0 bytes .../hbm/textures/models/ModelPylon_alt.png | Bin 1717 -> 0 bytes .../assets/hbm/textures/models/ModelRPG.png | Bin 1771 -> 0 bytes .../hbm/textures/models/ModelRevolver.png | Bin 1092 -> 0 bytes .../hbm/textures/models/ModelRevolverGold.png | Bin 826 -> 0 bytes .../hbm/textures/models/ModelRevolverIron.png | Bin 818 -> 0 bytes .../hbm/textures/models/ModelRevolverLead.png | Bin 921 -> 0 bytes .../models/ModelRevolverSaturnite.png | Bin 987 -> 0 bytes .../models/ModelRevolverSchrabidium.png | Bin 794 -> 0 bytes .../hbm/textures/models/ModelRocketOld.png | Bin 519 -> 0 bytes .../hbm/textures/models/ModelSkyStinger.png | Bin 2184 -> 0 bytes .../hbm/textures/models/ModelStinger.png | Bin 2085 -> 0 bytes .../hbm/textures/models/ModelXVL1456.png | Bin 3108 -> 0 bytes .../assets/hbm/textures/models/PlasmaBeam.png | Bin 104 -> 0 bytes .../textures/models/bombletThetaTexture.png | Bin 17044 -> 0 bytes .../hbm/textures/models/truck_busted.png | Bin 2369 -> 0 bytes 60 files changed, 4 insertions(+), 2849 deletions(-) delete mode 100644 src/main/java/com/hbm/items/weapon/GunDash.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunRpg.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunUZI.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunXVL1456.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunZOMG.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java delete mode 100644 src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java delete mode 100644 src/main/java/com/hbm/render/model/ModelAt4.java delete mode 100644 src/main/java/com/hbm/render/model/ModelBoltAction.java delete mode 100755 src/main/java/com/hbm/render/model/ModelDash.java delete mode 100644 src/main/java/com/hbm/render/model/ModelGloves.java delete mode 100644 src/main/java/com/hbm/render/model/ModelGrenade.java delete mode 100644 src/main/java/com/hbm/render/model/ModelNightmare.java delete mode 100644 src/main/java/com/hbm/render/model/ModelNightmare2.java delete mode 100755 src/main/java/com/hbm/render/model/ModelPip.java delete mode 100644 src/main/java/com/hbm/render/model/ModelRocket.java delete mode 100644 src/main/java/com/hbm/render/model/ModelRocketOld.java delete mode 100755 src/main/java/com/hbm/render/model/ModelTwiGun.java delete mode 100644 src/main/java/com/hbm/sound/MovingSoundXVL1456.java delete mode 100644 src/main/resources/assets/hbm/textures/models/JetPackPurple.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelBoltAction.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelBoltActionDarkGreen.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelCalBarrel.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelCalStock.png delete mode 100755 src/main/resources/assets/hbm/textures/models/ModelDash.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelLeverAction.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png delete mode 100755 src/main/resources/assets/hbm/textures/models/ModelPip.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelPipGrey.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelPipRed.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelPipSilver.png delete mode 100755 src/main/resources/assets/hbm/textures/models/ModelPylon_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRPG.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolver.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRevolverSchrabidium.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelRocketOld.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelStinger.png delete mode 100644 src/main/resources/assets/hbm/textures/models/ModelXVL1456.png delete mode 100644 src/main/resources/assets/hbm/textures/models/PlasmaBeam.png delete mode 100755 src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png delete mode 100644 src/main/resources/assets/hbm/textures/models/truck_busted.png diff --git a/changelog b/changelog index ed2888461..6b89db494 100644 --- a/changelog +++ b/changelog @@ -1,21 +1,2 @@ -## Changed -* Changed the multi fluid ID recipe, they now use analog circuits instead of silicon based ones, no longer requiring plastic to make -* Decreased the connection speed for all battery blocks, a full discharge now takes 30 seconds instead of 1 second, and charging now takes 10 seconds - * Capacitors have also been nerfed but they are twice as fast as battery blocks, 5 seconds for charging and 15 seconds for discharging -* Removed forgotten bricks -* Updated CMB brick texture -* The ICF machine block now renders with its 3d model in the creative inventory -* "Toggle backpack" keybind is now called "toggle jetpack" to reduce confusion -* The xenium resonator can now teleport players using the radar linker -* Inserters now have a toggleable destroyer mode which will delete items that cannot be inserted or cached instead of spilling them - ## Fixed -* Fixed pumpjack gauges not syncing properly -* Fixed some concrete variants not being revertable into uncolored concrete -* Fixed the ore density scanner not using proper translations for the HUD -* Fixed the solar boiler's rays rendering on fast graphics instead of on fancy graphics -* Fixed hydroreactive items not exploding when submerged in water -* Fixed fluid valves visually disconnecting when switching state -* Fixed fluid valves no visually connecting when type is set -* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops -* Added even more exception handling to CompStacks, hopefully fixing an incompatibility with Mana Metal \ No newline at end of file +* Fixed some things not using variable max charge for armor mods, like static pads and DNT nanosuit tooltips \ No newline at end of file diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 8d515f915..caf07f784 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1596,10 +1596,6 @@ public class ModItems { public static Item gun_hp_ammo; public static Item gun_euthanasia; public static Item gun_euthanasia_ammo; - public static Item gun_dash; - public static Item gun_dash_ammo; - public static Item gun_twigun; - public static Item gun_twigun_ammo; public static Item gun_defabricator; public static Item gun_defabricator_ammo; public static Item gun_vortex; @@ -4137,10 +4133,6 @@ public class ModItems { gun_hp = new GunHP().setUnlocalizedName("gun_hp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hp"); gun_euthanasia_ammo = new Item().setUnlocalizedName("gun_euthanasia_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia_ammo"); gun_euthanasia = new GunEuthanasia().setUnlocalizedName("gun_euthanasia").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_euthanasia"); - gun_dash_ammo = new Item().setUnlocalizedName("gun_dash_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_dash_ammo"); - gun_dash = new GunDash().setUnlocalizedName("gun_dash").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_dash"); - gun_twigun_ammo = new Item().setUnlocalizedName("gun_twigun_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_twigun_ammo"); - gun_twigun = new GunEuthanasia().setUnlocalizedName("gun_twigun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_twigun"); gun_defabricator_ammo = new Item().setUnlocalizedName("gun_defabricator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator_ammo"); gun_defabricator = new GunDefabricator().setUnlocalizedName("gun_defabricator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_defabricator"); gun_vortex = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_vortex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_vortex"); diff --git a/src/main/java/com/hbm/items/armor/ArmorDNT.java b/src/main/java/com/hbm/items/armor/ArmorDNT.java index 88e9d3773..d223e45c6 100644 --- a/src/main/java/com/hbm/items/armor/ArmorDNT.java +++ b/src/main/java/com/hbm/items/armor/ArmorDNT.java @@ -173,7 +173,7 @@ public class ArmorDNT extends ArmorFSBPowered { @SideOnly(Side.CLIENT) public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(maxPower)); + list.add("Charge: " + BobMathUtil.getShortNumber(getCharge(stack)) + " / " + BobMathUtil.getShortNumber(this.getMaxCharge(stack))); list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("armor.fullSetBonus")); diff --git a/src/main/java/com/hbm/items/armor/ItemModPads.java b/src/main/java/com/hbm/items/armor/ItemModPads.java index 9e7d62556..a29a570b3 100644 --- a/src/main/java/com/hbm/items/armor/ItemModPads.java +++ b/src/main/java/com/hbm/items/armor/ItemModPads.java @@ -74,7 +74,7 @@ public class ItemModPads extends ItemArmorMod { if(charge == 0) charge = powered.consumption / 40; - long power = Math.min(powered.maxPower, powered.getCharge(stack) + charge); + long power = Math.min(powered.getMaxCharge(stack), powered.getCharge(stack) + charge); powered.setCharge(stack, power); } } diff --git a/src/main/java/com/hbm/items/weapon/GunDash.java b/src/main/java/com/hbm/items/weapon/GunDash.java deleted file mode 100644 index c0ebd1e06..000000000 --- a/src/main/java/com/hbm/items/weapon/GunDash.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityLaser; -import com.hbm.items.ModItems; -import com.hbm.lib.Library; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunDash extends Item { - - Random rand = new Random(); - - public GunDash() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_dash_ammo)) - && count % 2 == 0) { - - EntityLaser laser = new EntityLaser(world, player); - MovingObjectPosition pos = Library.rayTrace(player, 200, 1.0F); - laser.posX = pos.blockX + 0.5; - laser.posY = pos.blockY + 0.5; - laser.posZ = pos.blockZ + 0.5; - - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.gun_dash_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(laser); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ratatatatatatatata!!"); - list.add(""); - list.add("Ammo: SMG Round"); - list.add("Damage: 2 - 8"); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunRpg.java b/src/main/java/com/hbm/items/weapon/GunRpg.java deleted file mode 100644 index e3c8fa53e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunRpg.java +++ /dev/null @@ -1,144 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityRocket; -import com.hbm.items.ModItems; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunRpg extends Item { - public static final String[] bowPullIconNameArray = new String[] { "pulling_0", "pulling_1", "pulling_2" }; - @SideOnly(Side.CLIENT) - private IIcon[] iconArray; - public GunRpg() { - this.maxStackSize = 1; - this.setMaxDamage(500); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_rocket)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 25.0D) { - return; - } - - if (j > 25.0F) { - f = 25.0F; - } - - EntityRocket entityarrow = new EntityRocket(p_77615_2_, p_77615_3_, 3.0F); - - if (f == 1.0F) { - entityarrow.setIsCritical(true); - } - - p_77615_1_.damageItem(1, p_77615_3_); - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.rpgShoot", 1.0F, 0.25F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_rocket); - } - - if (!p_77615_2_.isRemote) { - entityarrow.canBePickedUp = 2; - p_77615_2_.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Kaboom!"); - list.add(""); - list.add("Ammo: Rockets"); - list.add("Projectiles explode on impact."); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/weapon/GunUZI.java b/src/main/java/com/hbm/items/weapon/GunUZI.java deleted file mode 100644 index 630347f80..000000000 --- a/src/main/java/com/hbm/items/weapon/GunUZI.java +++ /dev/null @@ -1,135 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.interfaces.IHoldableWeapon; -import com.hbm.items.ModItems; -import com.hbm.render.util.RenderScreenOverlay.Crosshair; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunUZI extends Item implements IHoldableWeapon { - - Random rand = new Random(); - - public GunUZI() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.none; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - - if (player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_22lr)) { - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 2, 4, false, false); - entityarrow.setDamage(2 + rand.nextInt(3)); - - if(this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - entityarrow.setDamage(4 + rand.nextInt(5)); - entityarrow.fire = true; - } - - if(this == ModItems.gun_uzi || this == ModItems.gun_uzi_saturnite) - world.playSoundAtEntity(player, "hbm:weapon.uziShoot", 10.0F, 1.0F); - if(this == ModItems.gun_uzi_silencer || this == ModItems.gun_uzi_saturnite_silencer) - world.playSoundAtEntity(player, "hbm:weapon.silencerShoot", 0.15F, 1.0F); - - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.ammo_22lr); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(this == ModItems.gun_uzi) - list.add("[very intense pewpew-ing]"); - if(this == ModItems.gun_uzi_silencer) - list.add("Mom, where are my mittens?"); - if(this == ModItems.gun_uzi_saturnite) - list.add("The real deal."); - if(this == ModItems.gun_uzi_saturnite_silencer) - list.add("The real deal 2: Electric boogaloo"); - list.add(""); - list.add("Ammo: .22 LR Round"); - - if(this == ModItems.gun_uzi || this == ModItems.gun_uzi_silencer) { - list.add("Damage: 2 - 4"); - } - if(this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - list.add("Damage: 4 - 8"); - list.add("Sets enemy on fire."); - } - } - - @Override - public EnumRarity getRarity(ItemStack p_77613_1_) { - - if (this == ModItems.gun_uzi_saturnite || this == ModItems.gun_uzi_saturnite_silencer) { - return EnumRarity.rare; - } - - return EnumRarity.common; - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 2.5D, 0)); - return multimap; - } - - @Override - public Crosshair getCrosshair() { - return Crosshair.L_CROSS; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunXVL1456.java b/src/main/java/com/hbm/items/weapon/GunXVL1456.java deleted file mode 100644 index 56381afe1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunXVL1456.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; -import com.hbm.lib.ModDamageSource; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunXVL1456 extends Item { - - Random rand = new Random(); - - public GunXVL1456() - { - this.maxStackSize = 1; - this.setMaxDamage(2500); - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int i) { - - int j = this.getMaxItemUseDuration(stack) - i; - ArrowLooseEvent event = new ArrowLooseEvent(player, stack, j); - MinecraftForge.EVENT_BUS.post(event); - // if (event.isCanceled()) { - // return; - // } - j = event.charge * 2; - - if (player.isSneaking() && j >= 20) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - - if (flag || player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - EntityBullet entitybullet = new EntityBullet(world, player, 3.0F, j, j + 5, false, "tauDay"); - - entitybullet.setDamage(j + rand.nextInt(6)); - - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.5F); - - if (flag) { - entitybullet.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - - entitybullet.setIsCritical(true); - - if (!world.isRemote) { - world.spawnEntityInWorld(entitybullet); - } - stack.damageItem((int)(j * 0.05F), player); - - player.rotationPitch -= (j * 0.1F); - } - } - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - // if (event.isCanceled()) { - // return event.result; - // } - // Made uncancelable to prevent intermod idiocy - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - if (!player.isSneaking()) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) && count % 4 == 0) { - - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 25, 65, false, "eyyOk"); - entityarrow.setDamage(25 + rand.nextInt(65 - 25)); - - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } else { - if (count % 20 == 0 && this.getMaxItemUseDuration(stack) - count != 0) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_xvl1456_ammo))) { - if (!flag) { - player.inventory.consumeInventoryItem(ModItems.gun_xvl1456_ammo); - } - } - } - - world.playSoundAtEntity(player, "hbm:misc.nullTau", 0.1F, 1.0F); - } - - if(player instanceof EntityPlayer) - { - if(count < getMaxItemUseDuration(stack) - 200 && player.isSneaking() && count != 0) - { - if(!world.isRemote) - { - stack.damageItem(1250, player); - - world.createExplosion(player, player.posX, player.posY, player.posZ, 10.0F, true); - player.attackEntityFrom(ModDamageSource.tauBlast, 1000F); - player.dropOneItem(false); - } - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Hold right mouse button"); - list.add("to shoot tauons,"); - list.add("sneak to charge up for"); - list.add("stronger shots!"); - list.add(""); - list.add("Ammo: Depleted Uranium"); - list.add("Damage: 25 - 65"); - list.add("Charged Damage: 40 - 400"); - list.add("Projectiles penetrate walls."); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6, 0)); - return multimap; - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunZOMG.java b/src/main/java/com/hbm/items/weapon/GunZOMG.java deleted file mode 100644 index 971592633..000000000 --- a/src/main/java/com/hbm/items/weapon/GunZOMG.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.entity.projectile.EntityRainbow; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunZOMG extends Item { - - Random rand = new Random(); - - public GunZOMG() { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - new ArrowNockEvent(player, stack); - { - player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); - } - - if (!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setBoolean("valid", false); - stack.stackTagCompound.setBoolean("superuser", false); - } - - if (!player.isSneaking()) { - if (stack.stackTagCompound.getBoolean("valid")) { - if ((player.inventory.hasItem(ModItems.nugget_euphemium) - || player.inventory.hasItem(ModItems.ingot_euphemium))) { - } else { - if (!player.inventory.hasItem(ModItems.nugget_euphemium) - && !player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", false); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation lost!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Request new validation!")); - } - } - } - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun not validated!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Validate your gun with shift right-click.")); - } - } - } else { - if (stack.stackTagCompound.getBoolean("valid")) { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun has already been validated.")); - } - } else { - if (player.inventory.hasItem(ModItems.nugget_euphemium) || player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", true); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Gun has been validated!")); - } - - //if(Library.superuser.contains(player.getUniqueID().toString())) { - if(player.inventory.hasItem(ModItems.polaroid)) { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Welcome, superuser!")); - } - stack.stackTagCompound.setBoolean("superuser", true); - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Welcome, user!")); - } - stack.stackTagCompound.setBoolean("superuser", false); - } - } else { - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation failed!")); - player.addChatMessage(new ChatComponentText("[ZOMG] No external negative gravity well found!")); - } - } - } - } - - return stack; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) { - World world = player.worldObj; - - if (!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - stack.stackTagCompound.setBoolean("valid", false); - stack.stackTagCompound.setBoolean("superuser", false); - } - - if (!player.isSneaking()) { - if (stack.stackTagCompound.getBoolean("valid")) { - EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack); - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.nugget_euphemium) - || player.inventory.hasItem(ModItems.ingot_euphemium)) && count % 1 == 0) { - if (!stack.stackTagCompound.getBoolean("superuser")) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow1 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow2 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow3 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow4 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - EntityBullet entityarrow5 = new EntityBullet(world, player, 3.0F, 35, 45, false, "chopper"); - entityarrow.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow1.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow2.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow3.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow4.setDamage(35 + rand.nextInt(45 - 35)); - entityarrow5.setDamage(35 + rand.nextInt(45 - 35)); - - world.playSoundAtEntity(player, "hbm:weapon.osiprShoot", 1.0F, 0.6F + (rand.nextFloat() * 0.4F)); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - world.spawnEntityInWorld(entityarrow1); - world.spawnEntityInWorld(entityarrow2); - world.spawnEntityInWorld(entityarrow3); - world.spawnEntityInWorld(entityarrow4); - world.spawnEntityInWorld(entityarrow5); - } - } else { - EntityRainbow entityarrow = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow1 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow2 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow3 = new EntityRainbow(world, player, 1F); - EntityRainbow entityarrow4 = new EntityRainbow(world, player, 1F); - entityarrow.setDamage(10000 + rand.nextInt(90000)); - entityarrow1.setDamage(10000 + rand.nextInt(90000)); - entityarrow2.setDamage(10000 + rand.nextInt(90000)); - entityarrow3.setDamage(10000 + rand.nextInt(90000)); - entityarrow4.setDamage(10000 + rand.nextInt(90000)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.zomgShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - world.spawnEntityInWorld(entityarrow1); - world.spawnEntityInWorld(entityarrow2); - world.spawnEntityInWorld(entityarrow3); - world.spawnEntityInWorld(entityarrow4); - } - } - } else { - if (!player.inventory.hasItem(ModItems.nugget_euphemium) - && !player.inventory.hasItem(ModItems.ingot_euphemium)) { - stack.stackTagCompound.setBoolean("valid", false); - if (!world.isRemote) { - player.addChatMessage(new ChatComponentText("[ZOMG] Validation lost!")); - player.addChatMessage(new ChatComponentText("[ZOMG] Request new validation!")); - } - } - } - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(itemstack.getTagCompound() == null) - { - list.add("Gun not validated."); - } else if(itemstack.getTagCompound().getBoolean("valid")) { - if(itemstack.getTagCompound().getBoolean("superuser")) { - list.add("Gun set to superuser mode."); - list.add("Firing mode: Negative energy bursts"); - } else { - list.add("Gun set to regular user mode."); - list.add("Firing mode: Dark pulse spray"); - } - } else { - list.add("Gun not validated."); - } - list.add(""); - list.add("Ammo: None (Requires Validation)"); - list.add("Damage: 35 - 45"); - list.add("Energy Damage: 10000 - 100000"); - list.add("Energy projectiles destroy blocks."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - //for(int i = 0; i < 25; i++) - // list.add("How do I use the ZOMG? How do I use the ZOMG? How do I use the ZOMG?"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 6, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 7bd969303..3e058cd4f 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -552,8 +552,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_hp, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_euthanasia, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_defabricator, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_dash, new ItemRenderOverkill()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_twigun, new ItemRenderOverkill()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_bright, ResourceManager.ff_wood)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderWeaponFFBolt(ResourceManager.rem700, ResourceManager.rem700_tex)); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderWeaponFFMaresLeg(ResourceManager.ff_gun_normal, ResourceManager.ff_wood_red)); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9b2bddb31..236d53157 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -61,7 +61,6 @@ import com.hbm.sound.MovingSoundChopper; import com.hbm.sound.MovingSoundChopperMine; import com.hbm.sound.MovingSoundCrashing; import com.hbm.sound.MovingSoundPlayerLoop; -import com.hbm.sound.MovingSoundXVL1456; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.bomb.TileEntityNukeCustom.CustomNukeEntry; import com.hbm.tileentity.bomb.TileEntityNukeCustom.EnumEntryType; @@ -635,19 +634,6 @@ public class ModEventHandlerClient { //A winner is you. //Conglaturations. //Fuck you. - - if(r.toString().equals("hbm:misc.nullTau") && Library.getClosestPlayerForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) - { - EntityPlayer ent = Library.getClosestPlayerForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2); - - if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop) == null) { - MovingSoundPlayerLoop.globalSoundList.add(new MovingSoundXVL1456(new ResourceLocation("hbm:weapon.tauChargeLoop2"), ent, EnumHbmSound.soundTauLoop)); - MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).setPitch(0.5F); - } else { - if(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).getPitch() < 1.5F) - MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).setPitch(MovingSoundPlayerLoop.getSoundByPlayer(ent, EnumHbmSound.soundTauLoop).getPitch() + 0.01F); - } - } if(r.toString().equals("hbm:misc.nullChopper") && Library.getClosestChopperForSound(wc, e.sound.getXPosF(), e.sound.getYPosF(), e.sound.getZPosF(), 2) != null) { diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java index e44b0444f..98c47f23a 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderOverkill.java @@ -6,16 +6,13 @@ import com.hbm.items.ModItems; import com.hbm.items.weapon.GunFolly; import com.hbm.items.weapon.ItemGunBase; import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelDash; import com.hbm.render.model.ModelDefabricator; import com.hbm.render.model.ModelEuthanasia; import com.hbm.render.model.ModelFolly; import com.hbm.render.model.ModelHP; import com.hbm.render.model.ModelJack; import com.hbm.render.model.ModelLacunae; -import com.hbm.render.model.ModelPip; import com.hbm.render.model.ModelSpark; -import com.hbm.render.model.ModelTwiGun; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -31,9 +28,6 @@ public class ItemRenderOverkill implements IItemRenderer { protected ModelHP hppLaserjet; protected ModelEuthanasia euthanasia; protected ModelDefabricator defab; - protected ModelDash dasher; - protected ModelTwiGun rgottp; - protected ModelPip pip; protected ModelLacunae lacunae; protected ModelFolly folly; @@ -43,9 +37,6 @@ public class ItemRenderOverkill implements IItemRenderer { hppLaserjet = new ModelHP(); euthanasia = new ModelEuthanasia(); defab = new ModelDefabricator(); - dasher = new ModelDash(); - rgottp = new ModelTwiGun(); - pip = new ModelPip(); lacunae = new ModelLacunae(); folly = new ModelFolly(); } @@ -88,10 +79,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); if(item.getItem() == ModItems.gun_defabricator) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); if(item.getItem() == ModItems.gun_revolver_pip) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); if(item.getItem() == ModItems.gun_revolver_nopip) @@ -154,16 +141,6 @@ public class ItemRenderOverkill implements IItemRenderer { euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_defabricator) defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_lacunae || item.getItem() == ModItems.gun_minigun) @@ -190,10 +167,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); if(item.getItem() == ModItems.gun_defabricator) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); if(item.getItem() == ModItems.gun_revolver_pip) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); if(item.getItem() == ModItems.gun_revolver_nopip) @@ -256,16 +229,6 @@ public class ItemRenderOverkill implements IItemRenderer { euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_defabricator) defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_lacunae || item.getItem() == ModItems.gun_minigun) @@ -291,10 +254,6 @@ public class ItemRenderOverkill implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelEuthanasia.png")); if(item.getItem() == ModItems.gun_defabricator) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDefabricator.png")); - if(item.getItem() == ModItems.gun_dash) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelDash.png")); - if(item.getItem() == ModItems.gun_twigun) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelTwiGun.png")); if(item.getItem() == ModItems.gun_revolver_pip) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelPip.png")); if(item.getItem() == ModItems.gun_revolver_nopip) @@ -341,16 +300,6 @@ public class ItemRenderOverkill implements IItemRenderer { euthanasia.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_defabricator) defab.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_dash) - dasher.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_twigun) - rgottp.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - if(item.getItem() == ModItems.gun_revolver_pip || - item.getItem() == ModItems.gun_revolver_nopip || - item.getItem() == ModItems.gun_revolver_blackjack || - item.getItem() == ModItems.gun_revolver_silver || - item.getItem() == ModItems.gun_revolver_red) - pip.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); if(item.getItem() == ModItems.gun_lacunae || item.getItem() == ModItems.gun_minigun) diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java deleted file mode 100644 index 900012ce6..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRevolverNightmare.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelNightmare; -import com.hbm.render.model.ModelNightmare2; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRevolverNightmare implements IItemRenderer { - - protected ModelNightmare n1; - protected ModelNightmare2 n2; - protected Item item; - - public ItemRenderRevolverNightmare(Item item) { - n1 = new ModelNightmare(); - n2 = new ModelNightmare2(); - this.item = item; - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - if(this.item == ModItems.gun_revolver_nightmare) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare.png")); - if(this.item == ModItems.gun_revolver_nightmare2) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare2.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.5F, 0.0F, -0.2F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glRotatef(-20.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(5.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.2F, 0.0F, -0.2F); - if(this.item == ModItems.gun_revolver_nightmare) - n1.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - if(this.item == ModItems.gun_revolver_nightmare2) - n2.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - if(this.item == ModItems.gun_revolver_nightmare) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare.png")); - if(this.item == ModItems.gun_revolver_nightmare2) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelNightmare2.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - //GL11.glScalef(2.0F, 2.0F, 2.0F); - if(this.item == ModItems.gun_revolver_nightmare) - n1.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - if(this.item == ModItems.gun_revolver_nightmare2) - n2.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, item); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java deleted file mode 100644 index 8a2533a48..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderRocket.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelRocket; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderRocket implements IItemRenderer { - - protected ModelRocket swordModel; - - public ItemRenderRocket() { - swordModel = new ModelRocket(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRocket.png")); - GL11.glRotatef(-45.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.0F, 0.6F, -0.5F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelRocket.png")); - GL11.glRotatef(-110.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 2.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, 0.5F, 0.0F); - GL11.glScalef(2.0F, 2.0F, 2.0F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; - } - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelAt4.java b/src/main/java/com/hbm/render/model/ModelAt4.java deleted file mode 100644 index f2f15512f..000000000 --- a/src/main/java/com/hbm/render/model/ModelAt4.java +++ /dev/null @@ -1,134 +0,0 @@ -// Date: 06.04.2016 17:39:42 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - - - - - - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelAt4 extends ModelBase -{ - //fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelAt4() - { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 18, 3, 2); - Shape1.setRotationPoint(-8F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 5); - Shape2.addBox(0F, 0F, 0F, 18, 2, 3); - Shape2.setRotationPoint(-8F, 0.5F, -0.5F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 10); - Shape3.addBox(0F, 0F, 0F, 3, 4, 4); - Shape3.setRotationPoint(10F, -0.5F, -1F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - Shape4 = new ModelRenderer(this, 0, 18); - Shape4.addBox(0F, 0F, 0F, 1, 3, 3); - Shape4.setRotationPoint(-9F, 0F, -0.5F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 14, 10); - Shape5.addBox(0F, 0F, 0F, 1, 4, 4); - Shape5.setRotationPoint(-10F, -0.5F, -1F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 0, 24); - Shape6.addBox(0F, 0F, 0F, 1, 3, 1); - Shape6.setRotationPoint(-6F, 3F, 0.5F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 4, 24); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(-3F, 3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 8, 18); - Shape8.addBox(0F, 0F, 0F, 3, 1, 1); - Shape8.setRotationPoint(-6F, -0.5F, -2F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 28); - Shape9.addBox(0F, 0F, 0F, 1, 1, 2); - Shape9.setRotationPoint(-5F, 0F, -1.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - @Override -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); - Shape8.render(f5); - Shape9.render(f5); - } - - public void renderModel(float f5) - { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) - { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override -public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelBoltAction.java b/src/main/java/com/hbm/render/model/ModelBoltAction.java deleted file mode 100644 index 287421431..000000000 --- a/src/main/java/com/hbm/render/model/ModelBoltAction.java +++ /dev/null @@ -1,250 +0,0 @@ -// Date: 14.01.2018 22:26:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; - -public class ModelBoltAction extends ModelBase { - // fields - ModelRenderer Barrel1; - ModelRenderer Barrel2; - ModelRenderer Grip; - ModelRenderer BodyFront; - ModelRenderer BodyMain; - ModelRenderer LeverFront; - ModelRenderer LeverBottom; - ModelRenderer LeverMid; - ModelRenderer Trigger; - ModelRenderer GripFront; - ModelRenderer GropFrontBottom; - ModelRenderer GripBottom; - ModelRenderer Bolt; - ModelRenderer ChamberFront; - ModelRenderer ChamberBack; - ModelRenderer BodyBack; - ModelRenderer LeverTip; - ModelRenderer Lever; - ModelRenderer HandleFront; - ModelRenderer Pointer; - ModelRenderer HandleBottom; - ModelRenderer HandleGrip; - - public ModelBoltAction() { - textureWidth = 128; - textureHeight = 64; - - Barrel1 = new ModelRenderer(this, 0, 0); - Barrel1.addBox(0F, 0F, 0F, 60, 3, 2); - Barrel1.setRotationPoint(-60F, 1.5F, -1F); - Barrel1.setTextureSize(64, 32); - Barrel1.mirror = true; - setRotation(Barrel1, 0F, 0F, 0F); - Barrel2 = new ModelRenderer(this, 0, 5); - Barrel2.addBox(0F, 0F, 0F, 60, 2, 3); - Barrel2.setRotationPoint(-60F, 2F, -1.5F); - Barrel2.setTextureSize(64, 32); - Barrel2.mirror = true; - setRotation(Barrel2, 0F, 0F, 0F); - Grip = new ModelRenderer(this, 0, 10); - Grip.addBox(0F, 0F, 0F, 28, 5, 4); - Grip.setRotationPoint(-28F, 3F, -2F); - Grip.setTextureSize(64, 32); - Grip.mirror = true; - setRotation(Grip, 0F, 0F, 0F); - BodyFront = new ModelRenderer(this, 0, 19); - BodyFront.addBox(0F, 0F, 0F, 3, 7, 4); - BodyFront.setRotationPoint(0F, 2.5F, -2F); - BodyFront.setTextureSize(64, 32); - BodyFront.mirror = true; - setRotation(BodyFront, 0F, 0F, 0F); - BodyMain = new ModelRenderer(this, 14, 19); - BodyMain.addBox(0F, 0F, 0F, 8, 7, 4); - BodyMain.setRotationPoint(3F, 2.5F, -2F); - BodyMain.setTextureSize(64, 32); - BodyMain.mirror = true; - setRotation(BodyMain, 0F, 0F, 0F); - LeverFront = new ModelRenderer(this, 62, 30); - LeverFront.addBox(-1F, 0F, 0F, 2, 4, 2); - LeverFront.setRotationPoint(7F, 9F, -1F); - LeverFront.setTextureSize(64, 32); - LeverFront.mirror = true; - setRotation(LeverFront, 0F, 0F, 0F); - LeverBottom = new ModelRenderer(this, 70, 30); - LeverBottom.addBox(0F, 4F, 0F, 6, 1, 2); - LeverBottom.setRotationPoint(7F, 9F, -1F); - LeverBottom.setTextureSize(64, 32); - LeverBottom.mirror = true; - setRotation(LeverBottom, 0F, 0F, 0F); - LeverMid = new ModelRenderer(this, 62, 36); - LeverMid.addBox(6F, 0F, 0F, 1, 5, 2); - LeverMid.setRotationPoint(7F, 9F, -1F); - LeverMid.setTextureSize(64, 32); - LeverMid.mirror = true; - setRotation(LeverMid, 0F, 0F, 0F); - Trigger = new ModelRenderer(this, 88, 30); - Trigger.addBox(-1F, 0F, 0F, 1, 3, 1); - Trigger.setRotationPoint(12.5F, 9F, -0.5F); - Trigger.setTextureSize(64, 32); - Trigger.mirror = true; - setRotation(Trigger, 0F, 0F, 0.3490659F); - GripFront = new ModelRenderer(this, 0, 30); - GripFront.addBox(0F, 0F, 0F, 18, 3, 4); - GripFront.setRotationPoint(-46F, 3F, -2F); - GripFront.setTextureSize(128, 64); - GripFront.mirror = true; - setRotation(GripFront, 0F, 0F, 0F); - GropFrontBottom = new ModelRenderer(this, 0, 37); - GropFrontBottom.addBox(0F, 0F, 0F, 18, 1, 2); - GropFrontBottom.setRotationPoint(-46F, 6F, -1F); - GropFrontBottom.setTextureSize(128, 64); - GropFrontBottom.mirror = true; - setRotation(GropFrontBottom, 0F, 0F, 0F); - GripBottom = new ModelRenderer(this, 0, 40); - GripBottom.addBox(0F, 0F, 0F, 28, 1, 2); - GripBottom.setRotationPoint(-28F, 8F, -1F); - GripBottom.setTextureSize(128, 64); - GripBottom.mirror = true; - setRotation(GripBottom, 0F, 0F, 0F); - Bolt = new ModelRenderer(this, 0, 43); - Bolt.addBox(0F, 0F, 0F, 10, 2, 2); - Bolt.setRotationPoint(3F, 2F, -1F); - Bolt.setTextureSize(128, 64); - Bolt.mirror = true; - setRotation(Bolt, 0F, 0F, 0F); - ChamberFront = new ModelRenderer(this, 0, 47); - ChamberFront.addBox(0F, 0F, 0F, 3, 1, 3); - ChamberFront.setRotationPoint(0F, 1.5F, -1.5F); - ChamberFront.setTextureSize(128, 64); - ChamberFront.mirror = true; - setRotation(ChamberFront, 0F, 0F, 0F); - ChamberBack = new ModelRenderer(this, 12, 47); - ChamberBack.addBox(0F, 0F, 0F, 3, 1, 3); - ChamberBack.setRotationPoint(8F, 1.5F, -1.5F); - ChamberBack.setTextureSize(128, 64); - ChamberBack.mirror = true; - setRotation(ChamberBack, 0F, 0F, 0F); - BodyBack = new ModelRenderer(this, 0, 51); - BodyBack.addBox(0F, 0F, 0F, 4, 6, 4); - BodyBack.setRotationPoint(11F, 3.5F, -2F); - BodyBack.setTextureSize(128, 64); - BodyBack.mirror = true; - setRotation(BodyBack, 0F, 0F, 0F); - LeverTip = new ModelRenderer(this, 24, 43); - LeverTip.addBox(0F, -1F, 3F, 2, 2, 2); - LeverTip.setRotationPoint(11F, 3F, 0F); - LeverTip.setTextureSize(128, 64); - LeverTip.mirror = true; - setRotation(LeverTip, -0.4363323F, 0F, 0F); - Lever = new ModelRenderer(this, 32, 43); - Lever.addBox(0F, -0.5F, 0F, 1, 1, 4); - Lever.setRotationPoint(11.5F, 3F, 0F); - Lever.setTextureSize(128, 64); - Lever.mirror = true; - setRotation(Lever, -0.4363323F, 0F, 0F); - HandleFront = new ModelRenderer(this, 16, 51); - HandleFront.addBox(0F, 0F, 0F, 9, 5, 4); - HandleFront.setRotationPoint(15F, 4.5F, -2F); - HandleFront.setTextureSize(128, 64); - HandleFront.mirror = true; - setRotation(HandleFront, 0F, 0F, 0.4363323F); - Pointer = new ModelRenderer(this, 42, 43); - Pointer.addBox(0F, 0F, 0F, 3, 1, 1); - Pointer.setRotationPoint(-49F, 5.5F, -0.5F); - Pointer.setTextureSize(128, 64); - Pointer.mirror = true; - setRotation(Pointer, 0F, 0F, 0F); - HandleBottom = new ModelRenderer(this, 64, 10); - HandleBottom.addBox(0F, -8F, 0F, 23, 8, 4); - HandleBottom.setRotationPoint(19F, 16F, -2F); - HandleBottom.setTextureSize(128, 64); - HandleBottom.mirror = true; - setRotation(HandleBottom, 0F, 0F, 0F); - HandleGrip = new ModelRenderer(this, 38, 19); - HandleGrip.addBox(0F, 0F, 0F, 2, 5, 4); - HandleGrip.setRotationPoint(17F, 9.5F, -2F); - HandleGrip.setTextureSize(128, 64); - HandleGrip.mirror = true; - setRotation(HandleGrip, 0F, 0F, 0F); - } - - 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); - Barrel1.render(f5); - Barrel2.render(f5); - Grip.render(f5); - BodyFront.render(f5); - BodyMain.render(f5); - LeverFront.render(f5); - LeverBottom.render(f5); - LeverMid.render(f5); - Trigger.render(f5); - GripFront.render(f5); - GropFrontBottom.render(f5); - GripBottom.render(f5); - Bolt.render(f5); - ChamberFront.render(f5); - ChamberBack.render(f5); - BodyBack.render(f5); - LeverTip.render(f5); - Lever.render(f5); - HandleFront.render(f5); - Pointer.render(f5); - HandleBottom.render(f5); - HandleGrip.render(f5); - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0x00FF00; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-32F / 16F, 0 + 4F / 16F, 0); - tessellator.addVertex(-150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - - public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float rot, float tran) { - - LeverTip.rotateAngleX += rot; - Lever.rotateAngleX += rot; - Bolt.offsetX += tran; - LeverTip.offsetX += tran; - Lever.offsetX += tran; - - render(entity, f, f1, f2, f3, f4, f5); - - setRotation(LeverTip, -0.4363323F, 0F, 0F); - setRotation(Lever, -0.4363323F, 0F, 0F); - Bolt.offsetX -= tran; - LeverTip.offsetX -= tran; - Lever.offsetX -= tran; - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelDash.java b/src/main/java/com/hbm/render/model/ModelDash.java deleted file mode 100755 index 24f56ecc2..000000000 --- a/src/main/java/com/hbm/render/model/ModelDash.java +++ /dev/null @@ -1,122 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: ModelDash -// Model Creator: -// Created on: 01.11.2017 - 20:07:57 -// Last changed on: 01.11.2017 - 20:07:57 - -package com.hbm.render.model; //Path where the model is located - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelDash extends ModelBase //Same as Filename -{ - int textureX = 64; - int textureY = 64; - ModelRenderer[] bodyModel; - - public ModelDash() //Same as Filename - { - textureWidth = 64; - textureHeight = 64; - bodyModel = new ModelRenderer[16]; - bodyModel[0] = new ModelRenderer(this, 1, 1); // Box 0 - bodyModel[1] = new ModelRenderer(this, 25, 1); // Box 1 - bodyModel[2] = new ModelRenderer(this, 1, 9); // Box 2 - bodyModel[3] = new ModelRenderer(this, 33, 9); // Box 3 - bodyModel[4] = new ModelRenderer(this, 57, 1); // Box 4 - bodyModel[5] = new ModelRenderer(this, 1, 17); // Box 5 - bodyModel[6] = new ModelRenderer(this, 9, 17); // Box 6 - bodyModel[7] = new ModelRenderer(this, 17, 17); // Box 7 - bodyModel[8] = new ModelRenderer(this, 41, 17); // Box 8 - bodyModel[9] = new ModelRenderer(this, 1, 25); // Box 9 - bodyModel[10] = new ModelRenderer(this, 17, 25); // Box 10 - bodyModel[11] = new ModelRenderer(this, 41, 25); // Box 11 - bodyModel[12] = new ModelRenderer(this, 49, 25); // Box 12 - bodyModel[13] = new ModelRenderer(this, 1, 33); // Box 13 - bodyModel[14] = new ModelRenderer(this, 17, 33); // Box 14 - bodyModel[15] = new ModelRenderer(this, 25, 33); // Box 16 - - bodyModel[0].addBox(0F, 0F, 0F, 7, 3, 3, 0F); // Box 0 - bodyModel[0].setRotationPoint(0F, 0F, -1.5F); - - bodyModel[1].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 1 - bodyModel[1].setRotationPoint(-12F, 1F, 0F); - - bodyModel[2].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 2 - bodyModel[2].setRotationPoint(-12F, 1F, 0F); - bodyModel[2].rotateAngleX = 2.0943951F; - - bodyModel[3].addBox(0F, 0F, -1F, 12, 3, 2, 0F); // Box 3 - bodyModel[3].setRotationPoint(-12F, 1F, 0F); - bodyModel[3].rotateAngleX = -2.0943951F; - - bodyModel[4].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 4 - bodyModel[4].setRotationPoint(-12.5F, 1F, 0F); - - bodyModel[5].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 5 - bodyModel[5].setRotationPoint(-12.5F, 1F, 0F); - bodyModel[5].rotateAngleX = 2.0943951F; - - bodyModel[6].addBox(0F, 1.5F, -0.5F, 1, 1, 1, 0F); // Box 6 - bodyModel[6].setRotationPoint(-12.5F, 1F, 0F); - bodyModel[6].rotateAngleX = -2.0943951F; - - bodyModel[7].addBox(0F, 0F, 0F, 7, 1, 2, 0F); // Box 7 - bodyModel[7].setRotationPoint(0F, -0.5F, -1F); - - bodyModel[8].addBox(0F, 0F, 0F, 7, 2, 2, 0F); // Box 8 - bodyModel[8].setRotationPoint(7F, 0.5F, -1F); - - bodyModel[9].addBox(0F, 0F, 0F, 2, 2, 2, 0F); // Box 9 - bodyModel[9].setRotationPoint(12F, 2.5F, -1F); - - bodyModel[10].addBox(-6F, -2F, 0F, 6, 2, 2, 0F); // Box 10 - bodyModel[10].setRotationPoint(12F, 4.5F, -1F); - bodyModel[10].rotateAngleZ = 0.29670597F; - - bodyModel[11].addBox(0F, 0F, 0F, 1, 3, 1, 0F); // Box 11 - bodyModel[11].setRotationPoint(6F, 3F, -0.5F); - bodyModel[11].rotateAngleZ = -0.26179939F; - - bodyModel[12].addBox(0F, 0F, 0F, 5, 2, 2, 0F); // Box 12 - bodyModel[12].setRotationPoint(0F, 3F, -1F); - - bodyModel[13].addBox(0F, 0F, 0F, 6, 1, 1, 0F); // Box 13 - bodyModel[13].setRotationPoint(2F, 5F, -0.5F); - - bodyModel[14].addBox(0F, 0F, 0F, 1, 4, 1, 0F); // Box 14 - bodyModel[14].setRotationPoint(0.5F, 1F, -1.5F); - bodyModel[14].rotateAngleX = -0.61086524F; - - bodyModel[15].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 16 - bodyModel[15].setRotationPoint(3F, -1F, -0.5F); - - for(int i = 0; i < 16; i++) - { - bodyModel[i].setTextureSize(textureX, textureY); - bodyModel[i].mirror = true; - } - } - - @Override - 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); - for(int i = 0; i < 16; i++) - { - bodyModel[i].render(f5); - } - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelGloves.java b/src/main/java/com/hbm/render/model/ModelGloves.java deleted file mode 100644 index 797d82d0d..000000000 --- a/src/main/java/com/hbm/render/model/ModelGloves.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.render.model; - -public class ModelGloves { - - //TODO: make the rubber gloves actually render when worn - public ModelGloves() { - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelGrenade.java b/src/main/java/com/hbm/render/model/ModelGrenade.java deleted file mode 100644 index 88ee4dddb..000000000 --- a/src/main/java/com/hbm/render/model/ModelGrenade.java +++ /dev/null @@ -1,67 +0,0 @@ -// Date: 23.01.2019 10:30:04 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelGrenade extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - - public ModelGrenade() { - textureWidth = 32; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 8, 8, 8); - Shape1.setRotationPoint(-4F, -4F, -4F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 16); - Shape2.addBox(0F, 0F, 0F, 4, 6, 6); - Shape2.setRotationPoint(-8F, -3F, -3F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 20, 16); - Shape3.addBox(0F, 0F, 0F, 1, 4, 4); - Shape3.setRotationPoint(-9F, -2F, -2F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0F); - } - - 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); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelNightmare.java b/src/main/java/com/hbm/render/model/ModelNightmare.java deleted file mode 100644 index 750e64b28..000000000 --- a/src/main/java/com/hbm/render/model/ModelNightmare.java +++ /dev/null @@ -1,198 +0,0 @@ -// Date: 08.12.2016 20:24:28 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelNightmare extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Bullet1; - ModelRenderer Bullet2; - ModelRenderer Bullet3; - ModelRenderer Bullet4; - ModelRenderer Bullet5; - ModelRenderer Bullet6; - - public ModelNightmare() { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 3, 8, 2); - Shape1.setRotationPoint(0F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, -0.3490659F); - Shape2 = new ModelRenderer(this, 42, 0); - Shape2.addBox(0F, 0F, 0F, 9, 6, 2); - Shape2.setRotationPoint(-8F, -5F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 14); - Shape3.addBox(0F, 0F, 0F, 4, 2, 1); - Shape3.setRotationPoint(-0.03333334F, -3F, 0.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0.715585F); - Shape4 = new ModelRenderer(this, 22, 0); - Shape4.addBox(0F, 0F, 0F, 6, 4, 3); - Shape4.setRotationPoint(-7F, -4F, 0F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape5 = new ModelRenderer(this, 0, 0); - Shape5.addBox(0F, 0F, 0F, 1, 1, 1); - Shape5.setRotationPoint(0F, 0F, 0F); - Shape5.setTextureSize(64, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 34, 8); - Shape6.addBox(0F, 0F, 0F, 13, 2, 2); - Shape6.setRotationPoint(-21F, -4F, 0F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 17); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(2F, -3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.715585F); - Shape8 = new ModelRenderer(this, 4, 17); - Shape8.addBox(0F, 0F, 0F, 2, 1, 1); - Shape8.setRotationPoint(2F, -4F, 0.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0.715585F); - Shape9 = new ModelRenderer(this, 0, 20); - Shape9.addBox(0F, 0F, 0F, 6, 1, 1); - Shape9.setRotationPoint(-14F, -2F, 0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 26, 8); - Shape10.addBox(0F, 0F, 0F, 2, 2, 2); - Shape10.setRotationPoint(-19F, -5F, 0F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0.6108652F); - Shape11 = new ModelRenderer(this, 0, 10); - Shape11.addBox(0F, 0F, 0F, 4, 3, 1); - Shape11.setRotationPoint(-2F, 1F, 0.5F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 10, 0); - Shape12.addBox(0F, 0F, 0F, 1, 3, 1); - Shape12.setRotationPoint(0F, 0F, 0.5F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0.5235988F); - Bullet1 = new ModelRenderer(this, 6, 22); - Bullet1.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet1.setRotationPoint(-7.5F, -4F, -1F); - Bullet1.setTextureSize(64, 32); - Bullet1.mirror = true; - setRotation(Bullet1, 0F, 0F, 0F); - Bullet2 = new ModelRenderer(this, 0, 22); - Bullet2.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet2.setRotationPoint(-6.5F, -4F, -1F); - Bullet2.setTextureSize(64, 32); - Bullet2.mirror = true; - setRotation(Bullet2, 0F, 0F, 0F); - Bullet3 = new ModelRenderer(this, 6, 22); - Bullet3.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet3.setRotationPoint(-4.5F, -4F, -1F); - Bullet3.setTextureSize(64, 32); - Bullet3.mirror = true; - setRotation(Bullet3, 0F, 0F, 0F); - Bullet4 = new ModelRenderer(this, 0, 22); - Bullet4.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet4.setRotationPoint(-3.5F, -4F, -1F); - Bullet4.setTextureSize(64, 32); - Bullet4.mirror = true; - setRotation(Bullet4, 0F, 0F, 0F); - Bullet5 = new ModelRenderer(this, 6, 22); - Bullet5.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet5.setRotationPoint(-1.5F, -4F, -1F); - Bullet5.setTextureSize(64, 32); - Bullet5.mirror = true; - setRotation(Bullet5, 0F, 0F, 0F); - Bullet6 = new ModelRenderer(this, 0, 22); - Bullet6.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet6.setRotationPoint(-0.5F, -4F, -1F); - Bullet6.setTextureSize(64, 32); - Bullet6.mirror = true; - setRotation(Bullet6, 0F, 0F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - - int ammo = ItemGunBase.getMag(item); - - if(ammo > 0) - Bullet1.render(f5); - if(ammo > 1) - Bullet2.render(f5); - if(ammo > 2) - Bullet3.render(f5); - if(ammo > 3) - Bullet4.render(f5); - if(ammo > 4) - Bullet5.render(f5); - if(ammo > 5) - Bullet6.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelNightmare2.java b/src/main/java/com/hbm/render/model/ModelNightmare2.java deleted file mode 100644 index 143dfe549..000000000 --- a/src/main/java/com/hbm/render/model/ModelNightmare2.java +++ /dev/null @@ -1,265 +0,0 @@ -// Date: 08.12.2016 20:42:59 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import com.hbm.items.weapon.ItemGunBase; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.entity.Entity; -import net.minecraft.item.ItemStack; - -public class ModelNightmare2 extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - ModelRenderer Shape10; - ModelRenderer Shape11; - ModelRenderer Shape12; - ModelRenderer Bullet1; - ModelRenderer Bullet2; - ModelRenderer Bullet3; - ModelRenderer Bullet4; - ModelRenderer Bullet5; - ModelRenderer Bullet6; - ModelRenderer Shape13; - ModelRenderer Shape14; - ModelRenderer Shape15; - ModelRenderer Shape16; - ModelRenderer Shape17; - ModelRenderer Shape18; - ModelRenderer Shape19; - - public ModelNightmare2() { - textureWidth = 64; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 3, 8, 2); - Shape1.setRotationPoint(0F, 0F, 0F); - Shape1.setTextureSize(64, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, -0.3490659F); - Shape2 = new ModelRenderer(this, 42, 0); - Shape2.addBox(0F, 0F, 0F, 9, 6, 2); - Shape2.setRotationPoint(-8F, -5F, 0F); - Shape2.setTextureSize(64, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 0, 14); - Shape3.addBox(0F, 0F, 0F, 4, 2, 1); - Shape3.setRotationPoint(-0.03333334F, -3F, 0.5F); - Shape3.setTextureSize(64, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0F, 0.715585F); - Shape4 = new ModelRenderer(this, 22, 0); - Shape4.addBox(0F, 0F, 0F, 6, 4, 3); - Shape4.setRotationPoint(-7F, -4F, 0F); - Shape4.setTextureSize(64, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, 0F, 0F); - Shape6 = new ModelRenderer(this, 34, 8); - Shape6.addBox(0F, 0F, 0F, 13, 2, 2); - Shape6.setRotationPoint(-21F, -4F, 0F); - Shape6.setTextureSize(64, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0F); - Shape7 = new ModelRenderer(this, 0, 17); - Shape7.addBox(0F, 0F, 0F, 1, 2, 1); - Shape7.setRotationPoint(2F, -3F, 0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0.715585F); - Shape8 = new ModelRenderer(this, 4, 17); - Shape8.addBox(0F, 0F, 0F, 2, 1, 1); - Shape8.setRotationPoint(2F, -4F, 0.5F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0.715585F); - Shape9 = new ModelRenderer(this, 0, 20); - Shape9.addBox(0F, 0F, 0F, 6, 1, 1); - Shape9.setRotationPoint(-14F, -2F, 0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - Shape10 = new ModelRenderer(this, 26, 8); - Shape10.addBox(0F, 0F, 0F, 2, 2, 2); - Shape10.setRotationPoint(-19F, -5F, 0F); - Shape10.setTextureSize(64, 32); - Shape10.mirror = true; - setRotation(Shape10, 0F, 0F, 0.6108652F); - Shape11 = new ModelRenderer(this, 0, 10); - Shape11.addBox(0F, 0F, 0F, 4, 3, 1); - Shape11.setRotationPoint(-2F, 1F, 0.5F); - Shape11.setTextureSize(64, 32); - Shape11.mirror = true; - setRotation(Shape11, 0F, 0F, 0F); - Shape12 = new ModelRenderer(this, 10, 0); - Shape12.addBox(0F, 0F, 0F, 1, 3, 1); - Shape12.setRotationPoint(0F, 0F, 0.5F); - Shape12.setTextureSize(64, 32); - Shape12.mirror = true; - setRotation(Shape12, 0F, 0F, 0.5235988F); - Bullet1 = new ModelRenderer(this, 6, 22); - Bullet1.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet1.setRotationPoint(-7.5F, -4F, -1F); - Bullet1.setTextureSize(64, 32); - Bullet1.mirror = true; - setRotation(Bullet1, 0F, 0F, 0F); - Bullet2 = new ModelRenderer(this, 0, 22); - Bullet2.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet2.setRotationPoint(-6.5F, -4F, -1F); - Bullet2.setTextureSize(64, 32); - Bullet2.mirror = true; - setRotation(Bullet2, 0F, 0F, 0F); - Bullet3 = new ModelRenderer(this, 6, 22); - Bullet3.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet3.setRotationPoint(-4.5F, -4F, -1F); - Bullet3.setTextureSize(64, 32); - Bullet3.mirror = true; - setRotation(Bullet3, 0F, 0F, 0F); - Bullet4 = new ModelRenderer(this, 0, 22); - Bullet4.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet4.setRotationPoint(-3.5F, -4F, -1F); - Bullet4.setTextureSize(64, 32); - Bullet4.mirror = true; - setRotation(Bullet4, 0F, 0F, 0F); - Bullet5 = new ModelRenderer(this, 6, 22); - Bullet5.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet5.setRotationPoint(-1.5F, -4F, -1F); - Bullet5.setTextureSize(64, 32); - Bullet5.mirror = true; - setRotation(Bullet5, 0F, 0F, 0F); - Bullet6 = new ModelRenderer(this, 0, 22); - Bullet6.addBox(0F, 0F, 0F, 1, 2, 1); - Bullet6.setRotationPoint(-0.5F, -4F, -1F); - Bullet6.setTextureSize(64, 32); - Bullet6.mirror = true; - setRotation(Bullet6, 0F, 0F, 0F); - Shape13 = new ModelRenderer(this, 14, 0); - Shape13.addBox(0F, 0F, 0F, 1, 1, 2); - Shape13.setRotationPoint(-13F, -3.5F, -2F); - Shape13.setTextureSize(64, 32); - Shape13.mirror = true; - setRotation(Shape13, 0F, 0F, 0F); - Shape14 = new ModelRenderer(this, 34, 12); - Shape14.addBox(0F, 0F, 0F, 6, 1, 1); - Shape14.setRotationPoint(-19F, -3.5F, -1.533333F); - Shape14.setTextureSize(64, 32); - Shape14.mirror = true; - setRotation(Shape14, 0F, 0F, 0F); - Shape15 = new ModelRenderer(this, 10, 4); - Shape15.addBox(0F, 0F, 0F, 1, 5, 1); - Shape15.setRotationPoint(-4F, -5F, 3F); - Shape15.setTextureSize(64, 32); - Shape15.mirror = true; - setRotation(Shape15, 0F, 0F, 0F); - Shape16 = new ModelRenderer(this, 10, 10); - Shape16.addBox(-1F, -4F, 0F, 1, 4, 1); - Shape16.setRotationPoint(-3F, -5F, 3F); - Shape16.setTextureSize(64, 32); - Shape16.mirror = true; - setRotation(Shape16, 0F, 0F, -0.5235988F); - Shape17 = new ModelRenderer(this, 14, 8); - Shape17.addBox(0F, 0F, 0F, 5, 1, 1); - Shape17.setRotationPoint(-10F, -8.5F, 3F); - Shape17.setTextureSize(64, 32); - Shape17.mirror = true; - setRotation(Shape17, 0F, 0F, 0F); - Shape18 = new ModelRenderer(this, 14, 12); - Shape18.addBox(-9F, 0F, 0F, 9, 1, 1); - Shape18.setRotationPoint(-10F, -8.5F, 3F); - Shape18.setTextureSize(64, 32); - Shape18.mirror = true; - setRotation(Shape18, 0F, 0F, -0.6108652F); - Shape19 = new ModelRenderer(this, 14, 10); - Shape19.addBox(-5F, 0F, -1F, 5, 1, 1); - Shape19.setRotationPoint(-16F, -3.5F, 4F); - Shape19.setTextureSize(64, 32); - Shape19.mirror = true; - setRotation(Shape19, 0F, -0.4461433F, 0F); - } - - public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, ItemStack item) { - super.render(entity, f, f1, f2, f3, f4, f5); - setRotationAngles(f, f1, f2, f3, f4, f5, entity); - GL11.glDisable(GL11.GL_CULL_FACE); - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - Shape10.render(f5); - Shape11.render(f5); - Shape12.render(f5); - GL11.glEnable(GL11.GL_CULL_FACE); - - Shape13.render(f5); - Shape14.render(f5); - Shape15.render(f5); - Shape16.render(f5); - Shape17.render(f5); - Shape18.render(f5); - Shape19.render(f5); - - int ammo = ItemGunBase.getMag(item); - - if(ammo > 0) - Bullet1.render(f5); - if(ammo > 1) - Bullet2.render(f5); - if(ammo > 2) - Bullet3.render(f5); - if(ammo > 3) - Bullet4.render(f5); - if(ammo > 4) - Bullet5.render(f5); - if(ammo > 5) - Bullet6.render(f5); - - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_LIGHTING); - - Tessellator tessellator = Tessellator.instance; - int color = 0xFF0000; - - tessellator.startDrawing(3); - tessellator.setColorOpaque_I(color); - tessellator.addVertex(-19F / 16F, -3F / 16F, -1F / 16F); - tessellator.addVertex(-150, 0, 0); - tessellator.draw(); - - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glPopMatrix(); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelPip.java b/src/main/java/com/hbm/render/model/ModelPip.java deleted file mode 100755 index 6fe5f40c2..000000000 --- a/src/main/java/com/hbm/render/model/ModelPip.java +++ /dev/null @@ -1,223 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: Pip -// Model Creator: -// Created on:09.12.2017 - 12:48:52 -// Last changed on: 09.12.2017 - 12:48:52 - -package com.hbm.render.model; - -import org.lwjgl.opengl.GL11; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelPip extends ModelBase -{ - - public ModelRenderer pipModel[]; - - int textureX = 128; - int textureY = 128; - - public ModelPip() - { - textureWidth = 128; - textureHeight = 128; - pipModel = new ModelRenderer[39]; - pipModel[0] = new ModelRenderer(this, 1, 1); // Box 0 - pipModel[1] = new ModelRenderer(this, 49, 1); // Box 1 - pipModel[2] = new ModelRenderer(this, 97, 1); // Box 2 - pipModel[3] = new ModelRenderer(this, 1, 9); // Box 3 - pipModel[4] = new ModelRenderer(this, 25, 9); // Box 4 - pipModel[5] = new ModelRenderer(this, 49, 9); // Box 5 - pipModel[6] = new ModelRenderer(this, 73, 9); // Box 6 - pipModel[7] = new ModelRenderer(this, 81, 17); // Box 7 - pipModel[8] = new ModelRenderer(this, 97, 17); // Box 10 - pipModel[9] = new ModelRenderer(this, 1, 25); // Box 12 - pipModel[10] = new ModelRenderer(this, 1, 9); // Box 14 - pipModel[11] = new ModelRenderer(this, 17, 25); // Box 15 - pipModel[12] = new ModelRenderer(this, 41, 25); // Box 16 - pipModel[13] = new ModelRenderer(this, 49, 9); // Box 17 - pipModel[14] = new ModelRenderer(this, 113, 17); // Box 18 - pipModel[15] = new ModelRenderer(this, 73, 17); // Box 19 - pipModel[16] = new ModelRenderer(this, 65, 25); // Box 20 - pipModel[17] = new ModelRenderer(this, 113, 25); // Box 22 - pipModel[18] = new ModelRenderer(this, 65, 25); // Box 23 - pipModel[19] = new ModelRenderer(this, 1, 33); // Box 24 - pipModel[20] = new ModelRenderer(this, 81, 33); // Box 25 - pipModel[21] = new ModelRenderer(this, 1, 41); // Box 26 - pipModel[22] = new ModelRenderer(this, 89, 33); // Box 27 - pipModel[23] = new ModelRenderer(this, 105, 33); // Box 28 - pipModel[24] = new ModelRenderer(this, 33, 41); // Box 29 - pipModel[25] = new ModelRenderer(this, 49, 41); // Box 30 - pipModel[26] = new ModelRenderer(this, 65, 41); // Box 31 - pipModel[27] = new ModelRenderer(this, 105, 41); // Box 32 - pipModel[28] = new ModelRenderer(this, 1, 49); // Box 33 - pipModel[29] = new ModelRenderer(this, 17, 49); // Box 34 - pipModel[30] = new ModelRenderer(this, 33, 49); // Box 35 - pipModel[31] = new ModelRenderer(this, 57, 49); // Box 36 - pipModel[32] = new ModelRenderer(this, 81, 49); // Box 37 - pipModel[33] = new ModelRenderer(this, 105, 49); // Box 38 - pipModel[34] = new ModelRenderer(this, 1, 57); // Box 39 - pipModel[35] = new ModelRenderer(this, 89, 25); // Box 40 - pipModel[36] = new ModelRenderer(this, 97, 41); // Box 41 - pipModel[37] = new ModelRenderer(this, 49, 49); // Box 42 - pipModel[38] = new ModelRenderer(this, 73, 57); // Box 43 - - pipModel[0].addBox(0F, 0F, 0F, 20, 3, 2, 0F); // Box 0 - pipModel[0].setRotationPoint(-20F, -5.5F, -1F); - - pipModel[1].addBox(0F, 0F, 0F, 20, 2, 3, 0F); // Box 1 - pipModel[1].setRotationPoint(-20F, -5F, -1.5F); - - pipModel[2].addBox(0F, 0F, 0F, 10, 8, 3, 0F); // Box 2 - pipModel[2].setRotationPoint(0F, -6F, -1.5F); - - pipModel[3].addBox(0F, 0F, 0F, 6, 5, 5, 0F); // Box 3 - pipModel[3].setRotationPoint(2F, -5F, -2.5F); - - pipModel[4].addBox(0F, 0F, 0F, 6, 6, 4, 0F); // Box 4 - pipModel[4].setRotationPoint(2F, -5.5F, -2F); - - pipModel[5].addBox(0F, 0F, 0F, 6, 4, 6, 0F); // Box 5 - pipModel[5].setRotationPoint(2F, -4.5F, -3F); - - pipModel[6].addBox(0F, 0F, 0F, 7, 2, 1, 0F); // Box 6 - pipModel[6].setRotationPoint(-7F, -2.5F, -0.5F); - - pipModel[7].addBox(-6F, 0F, 0F, 6, 3, 1, 0F); // Box 7 - pipModel[7].setRotationPoint(15F, -2.5F, -1.5F); - pipModel[7].rotateAngleZ = 0.61086524F; - - pipModel[8].addBox(0F, 0F, 0F, 5, 5, 3, 0F); // Box 10 - pipModel[8].setRotationPoint(10F, -2.5F, -1.5F); - - pipModel[9].addBox(-6F, 0F, 0F, 6, 3, 1, 0F); // Box 12 - pipModel[9].setRotationPoint(15F, -2.5F, 0.5F); - pipModel[9].rotateAngleZ = 0.61086524F; - - pipModel[10].addBox(-6F, 0F, 0F, 1, 3, 1, 0F); // Box 14 - pipModel[10].setRotationPoint(15F, -2.5F, -0.5F); - pipModel[10].rotateAngleZ = 0.61086524F; - - pipModel[11].addBox(0F, 0F, 0F, 6, 6, 4, 0F); // Box 15 - pipModel[11].setRotationPoint(12F, 4F, -2F); - - pipModel[12].addBox(-5F, -7F, 0F, 5, 7, 4, 0F); // Box 16 - pipModel[12].setRotationPoint(18F, 4F, -2F); - pipModel[12].rotateAngleZ = -0.52359878F; - - pipModel[13].addBox(0F, -2F, 0F, 1, 2, 1, 0F); // Box 17 - pipModel[13].setRotationPoint(12F, -2.5F, -0.5F); - pipModel[13].rotateAngleZ = 0.34906585F; - - pipModel[14].addBox(-0.5F, -3F, 0F, 3, 1, 1, 0F); // Box 18 - pipModel[14].setRotationPoint(12F, -2.5F, -0.5F); - pipModel[14].rotateAngleZ = 0.34906585F; - - pipModel[15].addBox(0F, 0F, 0F, 1, 3, 5, 0F); // Box 19 - pipModel[15].setRotationPoint(8F, -4F, -2.5F); - - pipModel[16].addBox(0F, 0F, 0F, 1, 3, 5, 0F); // Box 20 - pipModel[16].setRotationPoint(1F, -4F, -2.5F); - - pipModel[17].addBox(0F, 0F, 0F, 5, 3, 2, 0F); // Box 22 - pipModel[17].setRotationPoint(5F, 2F, -1F); - - pipModel[18].addBox(-1F, -0.5F, 0F, 1, 3, 1, 0F); // Box 23 - pipModel[18].setRotationPoint(9F, 2F, -0.5F); - pipModel[18].rotateAngleZ = 0.43633231F; - - pipModel[19].addBox(0F, 0F, 0F, 5, 1, 2, 0F); // Box 24 - pipModel[19].setRotationPoint(-19.5F, -6.5F, -1F); - - pipModel[20].addBox(0F, 0F, 0F, 4, 1, 1, 0F); // Box 25 - pipModel[20].setRotationPoint(-19F, -7.5F, -0.5F); - pipModel[20].rotateAngleZ = 0.26179939F; - - pipModel[21].addBox(0F, 0F, 0F, 15, 1, 2, 0F); // Box 26 - pipModel[21].setRotationPoint(-4F, -7F, -1F); - - pipModel[22].addBox(1F, 0F, 0F, 3, 4, 3, 0F); // Box 27 - pipModel[22].setRotationPoint(-3F, -12F, -1.5F); - - pipModel[23].addBox(1F, 0F, 0F, 3, 3, 4, 0F); // Box 28 - pipModel[23].setRotationPoint(-3F, -11.5F, -2F); - - pipModel[24].addBox(0F, 0F, 0F, 3, 3, 4, 0F); // Box 29 - pipModel[24].setRotationPoint(6F, -11.5F, -2F); - - pipModel[25].addBox(0F, 0F, 0F, 3, 4, 3, 0F); // Box 30 - pipModel[25].setRotationPoint(6F, -12F, -1.5F); - - pipModel[26].addBox(0F, 0F, 0F, 13, 3, 3, 0F); // Box 31 - pipModel[26].setRotationPoint(-3F, -11.5F, -1.5F); - - pipModel[27].addBox(0F, 0F, 0F, 3, 4, 3, 0F); // Box 32 - pipModel[27].setRotationPoint(-6F, -12F, -1.5F); - - pipModel[28].addBox(0F, 0F, 0F, 3, 3, 4, 0F); // Box 33 - pipModel[28].setRotationPoint(-6F, -11.5F, -2F); - - pipModel[29].addBox(0F, 0F, 0F, 4, 5, 3, 0F); // Box 34 - pipModel[29].setRotationPoint(-10F, -12.5F, -1.5F); - - pipModel[30].addBox(0F, 0F, 0F, 4, 3, 5, 0F); // Box 35 - pipModel[30].setRotationPoint(-10F, -11.5F, -2.5F); - - pipModel[31].addBox(0F, 0F, 0F, 4, 4, 4, 0F); // Box 36 - pipModel[31].setRotationPoint(-10F, -12F, -2F); - - pipModel[32].addBox(0F, 0F, 0F, 5, 3, 4, 0F); // Box 37 - pipModel[32].setRotationPoint(10F, -11.5F, -2F); - - pipModel[33].addBox(0F, 0F, 0F, 5, 4, 3, 0F); // Box 38 - pipModel[33].setRotationPoint(10F, -12F, -1.5F); - - pipModel[34].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 39 - pipModel[34].setRotationPoint(2F, -12F, -2F); - - pipModel[35].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 40 - pipModel[35].setRotationPoint(-2F, -8F, -0.5F); - - pipModel[36].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 41 - pipModel[36].setRotationPoint(6F, -8F, -0.5F); - - pipModel[37].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 42 - pipModel[37].setRotationPoint(2.5F, -12.5F, -1F); - - pipModel[38].addBox(0F, 0F, 0F, 3, 1, 3, 0F); // Box 43 - pipModel[38].setRotationPoint(2F, -13.5F, -1.5F); - - - for(int i = 0; i < 39; i++) - { - pipModel[i].setTextureSize(textureX, textureY); - pipModel[i].mirror = true; - } - - } - - @Override - 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); - GL11.glDisable(GL11.GL_CULL_FACE); - for(int i = 0; i < 39; i++) - { - pipModel[i].render(f5); - } - GL11.glEnable(GL11.GL_CULL_FACE); - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/model/ModelRocket.java b/src/main/java/com/hbm/render/model/ModelRocket.java deleted file mode 100644 index 78dbc2895..000000000 --- a/src/main/java/com/hbm/render/model/ModelRocket.java +++ /dev/null @@ -1,121 +0,0 @@ -// Date: 20.01.2019 12:33:09 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRocket extends ModelBase { - // fields - ModelRenderer Shape1; - ModelRenderer Shape2; - ModelRenderer Shape3; - ModelRenderer Shape4; - ModelRenderer Shape5; - ModelRenderer Shape6; - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelRocket() { - textureWidth = 32; - textureHeight = 32; - - Shape1 = new ModelRenderer(this, 0, 0); - Shape1.addBox(0F, 0F, 0F, 7, 2, 2); - Shape1.setRotationPoint(0F, -1F, -1F); - Shape1.setTextureSize(32, 32); - Shape1.mirror = true; - setRotation(Shape1, 0F, 0F, 0F); - Shape2 = new ModelRenderer(this, 0, 4); - Shape2.addBox(0F, 0F, 0F, 3, 1, 1); - Shape2.setRotationPoint(-3F, -0.5F, -0.5F); - Shape2.setTextureSize(32, 32); - Shape2.mirror = true; - setRotation(Shape2, 0F, 0F, 0F); - Shape3 = new ModelRenderer(this, 8, 4); - Shape3.addBox(0F, 0F, 0F, 3, 1, 1); - Shape3.setRotationPoint(-3F, -0.5F, -0.5F); - Shape3.setTextureSize(32, 32); - Shape3.mirror = true; - setRotation(Shape3, 0F, 0.1745329F, 0F); - Shape4 = new ModelRenderer(this, 0, 6); - Shape4.addBox(0F, 0F, -1F, 3, 1, 1); - Shape4.setRotationPoint(-3F, -0.5F, 0.5F); - Shape4.setTextureSize(32, 32); - Shape4.mirror = true; - setRotation(Shape4, 0F, -0.1745329F, 0F); - Shape5 = new ModelRenderer(this, 8, 6); - Shape5.addBox(0F, 0F, 0F, 3, 1, 1); - Shape5.setRotationPoint(-3F, -0.5F, -0.5F); - Shape5.setTextureSize(32, 32); - Shape5.mirror = true; - setRotation(Shape5, 0F, 0F, -0.1745329F); - Shape6 = new ModelRenderer(this, 0, 8); - Shape6.addBox(0F, -1F, 0F, 3, 1, 1); - Shape6.setRotationPoint(-3F, 0.5F, -0.5F); - Shape6.setTextureSize(32, 32); - Shape6.mirror = true; - setRotation(Shape6, 0F, 0F, 0.1745329F); - Shape7 = new ModelRenderer(this, 0, 10); - Shape7.addBox(0F, 0F, 0F, 4, 4, 0); - Shape7.setRotationPoint(4F, 0F, 0F); - Shape7.setTextureSize(32, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, -0.7853982F); - Shape8 = new ModelRenderer(this, 0, 14); - Shape8.addBox(0F, 0F, 0F, 4, 0, 4); - Shape8.setRotationPoint(4F, 0F, 0F); - Shape8.setTextureSize(32, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0.7853982F, 0F); - Shape9 = new ModelRenderer(this, 8, 8); - Shape9.addBox(0F, 0F, 0F, 1, 1, 1); - Shape9.setRotationPoint(7F, -0.5F, -0.5F); - Shape9.setTextureSize(32, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - 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); - Shape8.render(f5); - Shape9.render(f5); - } - - public void renderAll(float f5) { - Shape1.render(f5); - Shape2.render(f5); - Shape3.render(f5); - Shape4.render(f5); - Shape5.render(f5); - Shape6.render(f5); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelRocketOld.java b/src/main/java/com/hbm/render/model/ModelRocketOld.java deleted file mode 100644 index a1c846d49..000000000 --- a/src/main/java/com/hbm/render/model/ModelRocketOld.java +++ /dev/null @@ -1,63 +0,0 @@ -// Date: 20.07.2015 22:08:24 -// Template version 1.1 -// Java generated by Techne -// Keep in mind that you still need to fill in some blanks -// - ZeuX - -package com.hbm.render.model; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelRocketOld extends ModelBase { - // fields - ModelRenderer Shape7; - ModelRenderer Shape8; - ModelRenderer Shape9; - - public ModelRocketOld() { - textureWidth = 64; - textureHeight = 32; - - Shape7 = new ModelRenderer(this, 10, 0); - Shape7.addBox(0F, 0F, 0F, 1, 2, 2); - Shape7.setRotationPoint(-3F, -2F, -0.5F); - Shape7.setTextureSize(64, 32); - Shape7.mirror = true; - setRotation(Shape7, 0F, 0F, 0F); - Shape8 = new ModelRenderer(this, 0, 4); - Shape8.addBox(0F, 0F, 0F, 10, 1, 1); - Shape8.setRotationPoint(-8F, -1.5F, 0F); - Shape8.setTextureSize(64, 32); - Shape8.mirror = true; - setRotation(Shape8, 0F, 0F, 0F); - Shape9 = new ModelRenderer(this, 0, 0); - Shape9.addBox(0F, 0F, 0F, 3, 2, 2); - Shape9.setRotationPoint(-6.5F, -2F, -0.5F); - Shape9.setTextureSize(64, 32); - Shape9.mirror = true; - setRotation(Shape9, 0F, 0F, 0F); - } - - @Override - 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); - Shape7.render(f5); - Shape8.render(f5); - Shape9.render(f5); - } - - private void setRotation(ModelRenderer model, float x, float y, float z) { - model.rotateAngleX = x; - model.rotateAngleY = y; - model.rotateAngleZ = z; - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } - -} diff --git a/src/main/java/com/hbm/render/model/ModelTwiGun.java b/src/main/java/com/hbm/render/model/ModelTwiGun.java deleted file mode 100755 index 2318476af..000000000 --- a/src/main/java/com/hbm/render/model/ModelTwiGun.java +++ /dev/null @@ -1,329 +0,0 @@ -//This File was created with the Minecraft-SMP Modelling Toolbox 2.3.0.0 -// Copyright (C) 2017 Minecraft-SMP.de -// This file is for Flan's Flying Mod Version 4.0.x+ - -// Model: TwiGun -// Model Creator: -// Created on: 01.11.2017 - 20:26:01 -// Last changed on: 01.11.2017 - 20:26:01 - -package com.hbm.render.model; //Path where the model is located - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; - -public class ModelTwiGun extends ModelBase //Same as Filename -{ - int textureX = 128; - int textureY = 128; - ModelRenderer[] bodyModel; - - public ModelTwiGun() //Same as Filename - { - textureWidth = 128; - textureHeight = 128; - bodyModel = new ModelRenderer[65]; - bodyModel[0] = new ModelRenderer(this, 1, 1); // Rotor5 - bodyModel[1] = new ModelRenderer(this, 17, 1); // Rotor4 - bodyModel[2] = new ModelRenderer(this, 33, 1); // Rotor1 - bodyModel[3] = new ModelRenderer(this, 49, 1); // Rotor6 - bodyModel[4] = new ModelRenderer(this, 65, 1); // Rotor3 - bodyModel[5] = new ModelRenderer(this, 81, 1); // Rotor2 - bodyModel[6] = new ModelRenderer(this, 89, 1); // Box 8 - bodyModel[7] = new ModelRenderer(this, 113, 1); // Box 9 - bodyModel[8] = new ModelRenderer(this, 1, 9); // Box 10 - bodyModel[9] = new ModelRenderer(this, 17, 9); // Box 11 - bodyModel[10] = new ModelRenderer(this, 33, 9); // Box 12 - bodyModel[11] = new ModelRenderer(this, 49, 9); // Box 13 - bodyModel[12] = new ModelRenderer(this, 65, 9); // Box 14 - bodyModel[13] = new ModelRenderer(this, 1, 17); // Box 15 - bodyModel[14] = new ModelRenderer(this, 9, 17); // Box 16 - bodyModel[15] = new ModelRenderer(this, 33, 17); // Box 17 - bodyModel[16] = new ModelRenderer(this, 73, 9); // Box 18 - bodyModel[17] = new ModelRenderer(this, 105, 9); // Box 19 - bodyModel[18] = new ModelRenderer(this, 57, 17); // Box 20 - bodyModel[19] = new ModelRenderer(this, 33, 17); // Box 21 - bodyModel[20] = new ModelRenderer(this, 1, 25); // Box 22 - bodyModel[21] = new ModelRenderer(this, 73, 17); // Box 23 - bodyModel[22] = new ModelRenderer(this, 25, 33); // Box 24 - bodyModel[23] = new ModelRenderer(this, 1, 25); // Box 25 - bodyModel[24] = new ModelRenderer(this, 57, 33); // Box 26 - bodyModel[25] = new ModelRenderer(this, 89, 33); // Box 27 - bodyModel[26] = new ModelRenderer(this, 1, 49); // Box 28 - bodyModel[27] = new ModelRenderer(this, 1, 49); // Box 29 - bodyModel[28] = new ModelRenderer(this, 97, 17); // Box 30 - bodyModel[29] = new ModelRenderer(this, 25, 49); // Box 31 - bodyModel[30] = new ModelRenderer(this, 65, 49); // Box 32 - bodyModel[31] = new ModelRenderer(this, 25, 57); // Box 33 - bodyModel[32] = new ModelRenderer(this, 65, 57); // Box 34 - bodyModel[33] = new ModelRenderer(this, 33, 65); // Box 35 - bodyModel[34] = new ModelRenderer(this, 97, 49); // Box 36 - bodyModel[35] = new ModelRenderer(this, 57, 25); // Box 37 - bodyModel[36] = new ModelRenderer(this, 73, 65); // Box 38 - bodyModel[37] = new ModelRenderer(this, 1, 73); // Box 40 - bodyModel[38] = new ModelRenderer(this, 33, 73); // Box 41 - bodyModel[39] = new ModelRenderer(this, 49, 73); // Box 42 - bodyModel[40] = new ModelRenderer(this, 105, 57); // Box 43 - bodyModel[41] = new ModelRenderer(this, 113, 65); // Box 44 - bodyModel[42] = new ModelRenderer(this, 113, 25); // Box 45 - bodyModel[43] = new ModelRenderer(this, 121, 9); // Box 46 - bodyModel[44] = new ModelRenderer(this, 73, 73); // Box 47 - bodyModel[45] = new ModelRenderer(this, 25, 73); // Box 48 - bodyModel[46] = new ModelRenderer(this, 89, 73); // Box 49 - bodyModel[47] = new ModelRenderer(this, 25, 25); // Box 50 - bodyModel[48] = new ModelRenderer(this, 17, 9); // Box 51 - bodyModel[49] = new ModelRenderer(this, 49, 33); // Box 52 - bodyModel[50] = new ModelRenderer(this, 81, 33); // Box 53 - bodyModel[51] = new ModelRenderer(this, 57, 1); // Box 54 - bodyModel[52] = new ModelRenderer(this, 73, 1); // Box 55 - bodyModel[53] = new ModelRenderer(this, 105, 73); // Box 56 - bodyModel[54] = new ModelRenderer(this, 89, 73); // Box 57 - bodyModel[55] = new ModelRenderer(this, 17, 81); // Box 58 - bodyModel[56] = new ModelRenderer(this, 73, 81); // Box 59 - bodyModel[57] = new ModelRenderer(this, 1, 89); // Box 60 - bodyModel[58] = new ModelRenderer(this, 33, 89); // Box 61 - bodyModel[59] = new ModelRenderer(this, 49, 41); // Box 63 - bodyModel[60] = new ModelRenderer(this, 89, 81); // Box 64 - bodyModel[61] = new ModelRenderer(this, 113, 81); // Box 65 - bodyModel[62] = new ModelRenderer(this, 1, 89); // Box 66 - bodyModel[63] = new ModelRenderer(this, 89, 89); // Box 67 - bodyModel[64] = new ModelRenderer(this, 17, 97); // Box 68 - - bodyModel[0].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor5 - bodyModel[0].setRotationPoint(-12F, 0F, 0F); - - bodyModel[1].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor4 - bodyModel[1].setRotationPoint(-12F, 0F, 0F); - bodyModel[1].rotateAngleX = 2.0943951F; - - bodyModel[2].addBox(0F, 1F, -1F, 3, 4, 2, 0F); // Rotor1 - bodyModel[2].setRotationPoint(-12F, 0F, 0F); - bodyModel[2].rotateAngleX = -2.0943951F; - - bodyModel[3].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor6 - bodyModel[3].setRotationPoint(-12F, 0F, 0F); - - bodyModel[4].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor3 - bodyModel[4].setRotationPoint(-12F, 0F, 0F); - bodyModel[4].rotateAngleX = 2.0943951F; - - bodyModel[5].addBox(0F, 4.5F, -0.5F, 3, 1, 1, 0F); // Rotor2 - bodyModel[5].setRotationPoint(-12F, 0F, 0F); - bodyModel[5].rotateAngleX = -2.0943951F; - - bodyModel[6].addBox(0F, 0F, 0F, 5, 0, 8, 0F); // Box 8 - bodyModel[6].setRotationPoint(-13F, -6F, -4F); - - bodyModel[7].addBox(0F, -1F, -1F, 5, 2, 2, 0F); // Box 9 - bodyModel[7].setRotationPoint(-13F, 0F, 0F); - - bodyModel[8].addBox(0F, -1F, -1F, 5, 2, 2, 0F); // Box 10 - bodyModel[8].setRotationPoint(-13F, 0F, 0F); - bodyModel[8].rotateAngleX = 0.78539816F; - - bodyModel[9].addBox(0F, 0F, 0F, 5, 0, 5, 0F); // Box 11 - bodyModel[9].setRotationPoint(-13F, -6F, 4F); - bodyModel[9].rotateAngleX = -0.78539816F; - - bodyModel[10].addBox(0F, 0F, 0F, 9, 1, 1, 0F); // Box 12 - bodyModel[10].setRotationPoint(-15F, -3F, 7F); - - bodyModel[11].addBox(0F, 0F, -5F, 5, 0, 5, 0F); // Box 13 - bodyModel[11].setRotationPoint(-13F, -6F, -4F); - bodyModel[11].rotateAngleX = 0.78539816F; - - bodyModel[12].addBox(0F, 0F, 0F, 9, 1, 1, 0F); // Box 14 - bodyModel[12].setRotationPoint(-15F, -3F, -8F); - - bodyModel[13].addBox(0F, 0F, 0F, 5, 0, 7, 0F); // Box 15 - bodyModel[13].setRotationPoint(-13F, 6.5F, -3.5F); - - bodyModel[14].addBox(0F, 0F, 0F, 5, 0, 10, 0F); // Box 16 - bodyModel[14].setRotationPoint(-13F, 6.5F, 3.5F); - bodyModel[14].rotateAngleX = 1.13446401F; - - bodyModel[15].addBox(0F, 0F, -10F, 5, 0, 10, 0F); // Box 17 - bodyModel[15].setRotationPoint(-13F, 6.5F, -3.5F); - bodyModel[15].rotateAngleX = -1.13446401F; - - bodyModel[16].addBox(0F, 0F, 0F, 2, 2, 16, 0F); // Box 18 - bodyModel[16].setRotationPoint(-15F, -2F, -8F); - - bodyModel[17].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 19 - bodyModel[17].setRotationPoint(-16F, -2F, -2F); - - bodyModel[18].addBox(0F, 0F, 0F, 5, 1, 1, 0F); // Box 20 - bodyModel[18].setRotationPoint(-13F, 6F, -0.5F); - - bodyModel[19].addBox(0F, 0F, 0F, 2, 5, 2, 0F); // Box 21 - bodyModel[19].setRotationPoint(-15F, 2F, -1F); - - bodyModel[20].addBox(0F, 0F, 0F, 0, 10, 10, 0F); // Box 22 - bodyModel[20].setRotationPoint(-13F, -5F, -5F); - - bodyModel[21].addBox(0F, -1.5F, -1.5F, 3, 3, 3, 0F); // Box 23 - bodyModel[21].setRotationPoint(-19F, 0F, 0F); - - bodyModel[22].addBox(0F, -2F, -2F, 8, 4, 4, 0F); // Box 24 - bodyModel[22].setRotationPoint(-27F, 0F, 0F); - - bodyModel[23].addBox(0F, -1.5F, -1.5F, 3, 3, 3, 0F); // Box 25 - bodyModel[23].setRotationPoint(-19F, 0F, 0F); - bodyModel[23].rotateAngleX = -0.78539816F; - - bodyModel[24].addBox(0F, -2F, -2F, 8, 4, 4, 0F); // Box 26 - bodyModel[24].setRotationPoint(-27F, 0F, 0F); - bodyModel[24].rotateAngleX = -0.78539816F; - - bodyModel[25].addBox(0F, 0F, 0F, 14, 6, 4, 0F); // Box 27 - bodyModel[25].setRotationPoint(-6F, -3F, -2F); - - bodyModel[26].addBox(0F, 0F, 0F, 2, 2, 16, 0F); // Box 28 - bodyModel[26].setRotationPoint(-8F, -2F, -8F); - - bodyModel[27].addBox(0F, 0F, 0F, 3, 4, 4, 0F); // Box 29 - bodyModel[27].setRotationPoint(-9F, -2F, -2F); - - bodyModel[28].addBox(0F, 0F, 0F, 2, 5, 2, 0F); // Box 30 - bodyModel[28].setRotationPoint(-8F, 2F, -1F); - - bodyModel[29].addBox(0F, 0F, 0F, 14, 1, 5, 0F); // Box 31 - bodyModel[29].setRotationPoint(-6F, -3F, 2F); - bodyModel[29].rotateAngleX = -0.26179939F; - - bodyModel[30].addBox(0F, 0F, 0F, 14, 1, 1, 0F); // Box 32 - bodyModel[30].setRotationPoint(-6F, -1.5F, 6F); - - bodyModel[31].addBox(0F, -1F, 0F, 14, 1, 5, 0F); // Box 33 - bodyModel[31].setRotationPoint(-6F, 1F, 2F); - bodyModel[31].rotateAngleX = 0.26179939F; - - bodyModel[32].addBox(0F, -1F, -5F, 14, 1, 5, 0F); // Box 34 - bodyModel[32].setRotationPoint(-6F, 1F, -2F); - bodyModel[32].rotateAngleX = -0.26179939F; - - bodyModel[33].addBox(0F, 0F, -5F, 14, 1, 5, 0F); // Box 35 - bodyModel[33].setRotationPoint(-6F, -3F, -2F); - bodyModel[33].rotateAngleX = 0.26179939F; - - bodyModel[34].addBox(0F, 0F, 0F, 14, 1, 1, 0F); // Box 36 - bodyModel[34].setRotationPoint(-6F, -1.5F, -7F); - - bodyModel[35].addBox(0F, 0F, 0F, 5, 0, 4, 0F); // Box 37 - bodyModel[35].setRotationPoint(-8F, -6F, -2F); - bodyModel[35].rotateAngleZ = 0.78539816F; - - bodyModel[36].addBox(0F, 0F, 0F, 16, 4, 2, 0F); // Box 38 - bodyModel[36].setRotationPoint(-6F, 3F, -1F); - - bodyModel[37].addBox(0F, 0F, 0F, 6, 6, 6, 0F); // Box 40 - bodyModel[37].setRotationPoint(8F, -3F, -3F); - - bodyModel[38].addBox(0F, 0F, 0F, 3, 2, 10, 0F); // Box 41 - bodyModel[38].setRotationPoint(8F, -2F, -5F); - - bodyModel[39].addBox(0F, 0F, 0F, 4, 1, 13, 0F); // Box 42 - bodyModel[39].setRotationPoint(8F, -1.5F, -6.5F); - - bodyModel[40].addBox(0F, 0F, 0F, 8, 3, 3, 0F); // Box 43 - bodyModel[40].setRotationPoint(14F, -1F, -1.5F); - - bodyModel[41].addBox(0F, 0F, 0F, 1, 7, 3, 0F); // Box 44 - bodyModel[41].setRotationPoint(22.5F, -1F, -1.5F); - - bodyModel[42].addBox(0F, 0F, 0F, 4, 4, 3, 0F); // Box 45 - bodyModel[42].setRotationPoint(18F, 2F, -1.5F); - - bodyModel[43].addBox(0F, 0F, 0F, 2, 4, 1, 0F); // Box 46 - bodyModel[43].setRotationPoint(13F, 2F, 0F); - - bodyModel[44].addBox(0F, -5F, 0F, 2, 5, 3, 0F); // Box 47 - bodyModel[44].setRotationPoint(18F, 6F, -1.5F); - bodyModel[44].rotateAngleZ = -0.43633231F; - - bodyModel[45].addBox(0F, 0F, 0F, 6, 1, 2, 0F); // Box 48 - bodyModel[45].setRotationPoint(10F, 6F, -1F); - - bodyModel[46].addBox(0F, 0F, 0F, 3, 2, 2, 0F); // Box 49 - bodyModel[46].setRotationPoint(14F, -3F, -1F); - bodyModel[46].rotateAngleZ = 0.78539816F; - - bodyModel[47].addBox(0F, 0F, 0F, 2, 1, 5, 0F); // Box 50 - bodyModel[47].setRotationPoint(14F, 0F, -2.5F); - - bodyModel[48].addBox(0F, 0F, 0F, 1, 1, 1, 0F); // Box 51 - bodyModel[48].setRotationPoint(10.5F, -3.5F, -0.5F); - - bodyModel[49].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 52 - bodyModel[49].setRotationPoint(9F, -3.5F, -2F); - - bodyModel[50].addBox(0F, 0F, 0F, 3, 1, 1, 0F); // Box 53 - bodyModel[50].setRotationPoint(10F, -3.5F, 1F); - - bodyModel[51].addBox(0F, 0F, 0F, 1, 1, 3, 0F); // Box 54 - bodyModel[51].setRotationPoint(9F, -3.5F, -1F); - - bodyModel[52].addBox(0F, 0F, 0F, 1, 1, 3, 0F); // Box 55 - bodyModel[52].setRotationPoint(12F, -3.5F, -2F); - - bodyModel[53].addBox(0F, 0F, 0F, 1, 6, 2, 0F); // Box 56 - bodyModel[53].setRotationPoint(22F, -0.5F, -1F); - - bodyModel[54].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 57 - bodyModel[54].setRotationPoint(-5F, -0.5F, -6F); - - bodyModel[55].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 58 - bodyModel[55].setRotationPoint(-4F, -0.5F, -6F); - - bodyModel[56].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 59 - bodyModel[56].setRotationPoint(-3F, -0.5F, -6F); - - bodyModel[57].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 60 - bodyModel[57].setRotationPoint(-2F, -0.5F, -6F); - - bodyModel[58].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 61 - bodyModel[58].setRotationPoint(-1F, -0.5F, -6F); - - bodyModel[59].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 63 - bodyModel[59].setRotationPoint(-4F, -3.5F, -1F); - - bodyModel[60].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 64 - bodyModel[60].setRotationPoint(-1F, -3.5F, -1F); - - bodyModel[61].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 65 - bodyModel[61].setRotationPoint(2F, -3.5F, -1F); - - bodyModel[62].addBox(0F, 0F, 0F, 2, 1, 2, 0F); // Box 66 - bodyModel[62].setRotationPoint(5F, -3.5F, -1F); - - bodyModel[63].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 67 - bodyModel[63].setRotationPoint(0F, -0.5F, -6F); - - bodyModel[64].addBox(0F, 0F, 0F, 0, 3, 12, 0F); // Box 68 - bodyModel[64].setRotationPoint(1F, -0.5F, -6F); - - for(int i = 0; i < 65; i++) - { - bodyModel[i].setTextureSize(textureX, textureY); - bodyModel[i].mirror = true; - } - } - - @Override - 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); - for(int i = 0; i < 65; i++) - { - bodyModel[i].render(f5); - } - } - - @Override - public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) - { - super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java b/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java index 23714debb..e712391ee 100644 --- a/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java +++ b/src/main/java/com/hbm/sound/MovingSoundPlayerLoop.java @@ -7,6 +7,7 @@ import net.minecraft.client.audio.MovingSound; import net.minecraft.entity.Entity; import net.minecraft.util.ResourceLocation; +@Deprecated //wtf is this horseshit public abstract class MovingSoundPlayerLoop extends MovingSound { public static List globalSoundList = new ArrayList(); diff --git a/src/main/java/com/hbm/sound/MovingSoundXVL1456.java b/src/main/java/com/hbm/sound/MovingSoundXVL1456.java deleted file mode 100644 index 304e123ef..000000000 --- a/src/main/java/com/hbm/sound/MovingSoundXVL1456.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hbm.sound; - -import com.hbm.items.ModItems; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; - -public class MovingSoundXVL1456 extends MovingSoundPlayerLoop { - - public MovingSoundXVL1456(ResourceLocation p_i45104_1_, Entity player, EnumHbmSound type) { - super(p_i45104_1_, player, type); - this.setPitch(0.5F); - } - - @Override - public void update() { - super.update(); - - ItemStack i = null; - - if(this.player != null) { - i = ((EntityPlayer)this.player).getItemInUse(); - } - - //this.setPitch(this.getPitch() + 0.1F); - - if(i == null || (i != null && i.getItem() != ModItems.gun_xvl1456) || !((EntityPlayer)this.player).isSneaking() || ((EntityPlayer)this.player).getItemInUseDuration() <= 0) - this.stop(); - } -} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index b9fe59269..3c3ad4a6b 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -1,5 +1,4 @@ { - "misc.nullTau": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullChopper": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullCrashing": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, "misc.nullMine": {"category": "player", "sounds": [{"name": "misc/null", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/textures/models/JetPackPurple.png b/src/main/resources/assets/hbm/textures/models/JetPackPurple.png deleted file mode 100644 index c1d0faf6f24e0128c4d04780f5a70e650c7a824a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599 zcmV-d0;v6oP)rbfU220wO|?%zLxp$&=;-KZ zkWwN=DG&t`LeL=5rE%j9iKHN5Wux^C8j8i%*zp<*K3qg0EKZC(lli}9_uts^SHYBDmXz9=<<%u#js3>Xr#<(_}tYKN_#fGNnRqEEe%gvple(q3&R!uug0&TA39?hjcHeb7^gO!` z0C3AjWTM~iqm(LAbNtadNo@h96$5s#M002ovPDHLkV1hEe6P^G7 diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltAction.png b/src/main/resources/assets/hbm/textures/models/ModelBoltAction.png deleted file mode 100644 index 41051291459bfb3da97db26693b44eca69e28af7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2099 zcmV-32+a41P)J!l+96vzMP+g;^O5S;@_p%jKd(u5? -MFfiS3uKyX}P z6?O`#I6|%o21AG|n~=h&IT2jQjZ@f#5D1*YjSGoz28VzNP8yK}k|H2Otiat_yLXxt zr?)pZyR$p{aUb%{56s@qyq%fdnRzqw^k$sF5#@53nWhQLvS8abEX#rls#B+$y~g6kpaM|Q>Uao zA_!Gk$8lU)Q9f>dah{`c+_`fn0|3j*%Pi@8C;eVQ-$pf!Fj?`vH5vdwW_EU#0l@V1 zbYI6r-SX5}US4MWebR3)YJhw9?)B6|&yA`&j9Vx_RVPa;Y91=jh~;QB8cM@n-1pUu zUNiDU)&NO*il_lpdR81wAbT#321xS0$3X+Qs{kN)9zeWG4S-*(U%7Hcc{Pyc@FcD# zqJAIMa>?G^a2zMnizH!`d&H<2Zp!5{3ztfc=cU&#UtmqAje}Mj6Gqm(=FBVrpy{-c zGqd1j_&61LUgn?wnmA~+anL%%gmJ>XP8gl%`Dgs%ROES?ueW|yuITEea}0o6{;>D- zd%vG1KX7|x;rDGfZ7P%B@0U&+ubEljFh1_L+`Det;_O}(Lkw8?{>PE(3B!acH!TiY zhwkr}PFwo>pw;eqjt}GGNPEW_A_;8@9&3&wcag>NpNQuKyzKB(nE?%lR8Q zqw}8Ug>qN!KUQk!o(4b}(YVBqPXKzxBEL8lc~M3+e}4Q^$zLWPlz&i}RP*NJ$lj38 z=K%nXMgstP?oHEF`tGuCn*==v7ywl1QR4=IajSHeUEO$+0f1Yjvy57r->efrPYVs2 ztp>>lwcMcmqs*3rXOi#aw_ut+C0Q~V+6NT4Jd{+6@lU7pGa~dzrb93$}8#i3rWOEo~fUPqx&NSsI9vZl5S%;zWZ#>vi_^xyp!PEHMdg{g#J&+5h< zN`HH2#ra{|HlpMMz_r)`>Gyg~7wJG%H=Y< zefxF>=(-`%{y7oHaeT*rij%Ruy{#0+qiX2smqBP;FaWRrnasJ6w`lprMIq^OP?HX+ z`2_OeIWvnFP1{xDd^+UR!27uIaiZ^Am}xjI78e)U*4CD9UQ0_$o@J}dMj}h&n;T!U zudc6-oVLp}=hDD8}kh5H; z%c-2z6Al1PL(PY8)VX@?+mSA>(RA9bJ)J5fj!$5iw+-)C7nVj?88qoJwsQbg75}P} z`bW4`I?Imp*gtNJtp*TR0W{MeH_c%14xwrGT+#$nIm_2GnBV0>>^E&p7+LH$ZQNWu z!?Y&oKSTSt*FXJ;$#%U0-5s-GyJdsqc^T33M{9r%dSl3#lOZ>2pm($7pf+ieSFWE7 z@9Cz;PVx?CeBNXMTR( zJ|EOY`CLTO^(9?St78aP} zIJ#F4h{$#T^5o@D{SLbFm9FA%sCxRhCLMZuS#hPvT22dwX<&1GGqeXrm6t&(pELq# z0RUPP^qC$FU`<#(*D#{W%MdGB92PYFqo)Db2R2$xOZnlb@|w{jQ(P&s&GpSpaiz!r zfK)or>Dl%{XW|z(Jju|Y=|7&z5%=xw@9zVE^6A(7^Y86Fal?5dP38XM3~d)bU4Q0= z#d!fuGNk7NEG;cDTIMB%+{yUk)+k-QwQIOY{}zzO8FZS_C-8g#pz9f%q%nxctnumT zoxj5+)DXlUVC1*2U);y9I%M$kiRz_ujCcMdo)u2JziIoLCS5!YKs5P^AD;eyL6Y@j zW@ZMpTFveC6Gj#jMpin}qi}Lg<+TN+rRfizIY7N$cmHB1gHFGcZSm$SjGy_36^3MZ zEubsEzohOE!fT8q<2(PXR{#AY)&UVwWuvU|wLM_4c;*1Av;82sq&>FV2p%U%Mx)Va dG#ZVZ{{f6M6T3H*_Ot*1002ovPDHLkV1muD7ajlr diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionDark.png deleted file mode 100644 index 3bd22f1f959907dc9c7ed5bbb89a2e91f8c7d801..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2391 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 M07*qoM6N<$g3S^-ssI20 diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionGreen.png deleted file mode 100644 index 1c5c31255c0bdc15212cb167a25300a3ca54c029..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2088 zcmV+@2-o+CP)&ubP(7{|Y>yQ{t_=CvS{^x)A$|AO=q31T2fgf}T99+E>8 zUTWVY)lv0*WZ{kb?o=|DYfQS}aIG!9@CQ`|}RspB|sT^GLZ!*yNgpeyV9J_sRTY2=ARl+6>4 z<>TGEcW@jBj^l*+Vu<%?$mH+ezi(+raDW^;=nNPR7VF~0ixdFPoja!-5lQIE5<)^* zQ9f^adBU-L+`D(r0)W}sSz5H*Me8f6Zgk^FlNHNtFaQ9op`jrP00RR99i0&dJEii{Ld z1L%ybJeoiiE{_H%Qr=$B0O3;rkh~6H9HtJyKdVnqPisF7lsP?#PZL?|M>k)pvfG4^ zOa&=IH;;&JGu+hcb($_!oLHeJZ%k6+6A+)kah>q$xO=^nbC>z)$n!EE-hV(q0t6(0 z?bzYfc5DEMxXb)>rHGY|-K2PY=6lBpf8Hamykgf!6OJ2x8%w8}CQxuJ+C|MKX*j_=pqJ0A>nk zL;SrFR+1)Qd6eDD{8aMH&!KvzVvkInm?;QVLj zrS60fY#!fK4w9tuQkRD1;^SPtv#iz8V;z7c#O5V_eq#RYD)ZBk7iDzQXL0GKuaZwn zKPgYTX-D$#->$u(QmFs{JkJAw$i3q@AUo;xuBzK2m^HvYz#2WP-+o|^&5Y5 zx8V!NWKhCS0W!b-{{DT=QJdI8q0wlBoq<4zQcVGAY;63Ajg2pbxQ1eJ z6*gRyFd})L|MvVyo4&0^qd}S47w2()IuQMn{8XsYNs?tSLx*VKP`MlQu=$E!SXi(c zjRsZiwdeQatNdj6zK<;F00=F1K>06a3~iM9wAE@!-TM0awB;GHFs|z+hLKsmRC0#= z#4Le2t8|&n;NYNAUe%dYB*kSYm(onZ&1O^SCu`88Ms7Bn;i^~s6G>Xd8`81s^*X(M z`?dwNw;{3b=R^o0()pkHsd(|?g_awSt|6mS2BD*Z4aE1KsWun#Hf@<-7K%O&8p@%x zJ%OUU_m7urqlYNZUQ~6OD_5@2M~@y!)0&!^iaoZfY$U2Ue)xWles^oW>$H{G6Szl` zMp9`*9e!T?p7OuH{^nL!)o*XuYdgTi!~_)^abjX3GSWq}Ezi=@k|hhn?wP-8&D1TF zwkNRHrvMSwfJNnkef;hs5BB7ZNy^mzHZ@pudN& z+xhn9k6oQ#o8M5Vvwu&uCy;lS!SAa}iz6)$hVnSFYXDspf7mI#62@l6XfMzGM~x$^ z0mP>Ow$hhrhUw{P>Ukbotrng=dv>Tgrp<2%Epy~DO>nYuQo1vk|H_52?QO$$Y;1em z7`-}5yG0Xp+n2*-a$p6!^wp(YQw8(Wk>_Q^oj+MLz}(y%ouBVMD_$9x4?{FKtc?!< z7QYR8KSv~ci^q25%4D)^#ZHo!rORM;{v-_m02eM?pzJLvAp}7Xgnv6bJJ{LT!Ryzr zd#iwLWz`jEA7)gkR1&p?<2YDbTMH8tU#d8cgC|d(L@G|z0SuiXvmJnG z0{+zRq$}U(I{OXxOVb#3iHx$^wHjp$rj@%ZsUt9}yo!;Lk=?_X_A~<10sxFA=r9ot z;GS?J*EF)qs}LJmoE8k7BhmrtR7j$e1m;MWu5*T*Tp`IB+>_}TC``+Ut%F0l?Enta8IXa8T2$;ucU97MC( zj2yMJx9i!T6PbT4tCGuLVrwcb3vO zgzy@p$jKgjSflr&|U2($rT;3rV|(p27|%SasCH&xK#|V Swu(*w0000OV diff --git a/src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png b/src/main/resources/assets/hbm/textures/models/ModelBoltActionSaturnite.png deleted file mode 100644 index f89c1a96078ae127f1599cd8008fa91fb483e75f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2012 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 diff --git a/src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png b/src/main/resources/assets/hbm/textures/models/ModelCalDualStock.png deleted file mode 100644 index c24d880639a4209058720d5c37bb121b77bc91ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 668 zcmV;N0%QG&P)sYO9jod~DGhxN#n=0}bJ;1tg&WXVi0BRjlyfJv zl1NAiU6ZEiRTNNiKFczrwT3*;8wIA6GFP^W|d{;t)&8O3eceGuA#);;Kq>atCR0-7U2PptiGISa-6+2 zL{SuW_kD+lkgRch3`%H&@a;0HAxV_N!A zHQ}MZgQ&YNbCnSa1cRNBb~{ND_!;2)pAUfnUGl*J zp*FXgGQkwU;BGZAF1>XDD*3UEZ21(OE1 zPO2h~y*mf(y$jH^Gtlu{sUe+z6m3G=n!vFS&G`k!B7R&8*AeId0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0m(^3K~!i%?U_+- z!ypWXbEG}yC7P5Q%^{*TUFc2bWL?skb4A>t(hHhQQKGQUr5{3If z^~d~eet*6Up0eHcJ`96F>HFTGg!FyeQ1HvLL>EAF^>sNx_SBcRQ_u*UAOM6G2n9cm z<39un9#5^`uD!(SO8`+0Gvj0crGj?NTLb{4m}3iQ+rhWR&Zyy(0vdoC;2Hw*ih0c} z6^|MVfb1&{C)_pHZ)=R;0&^PxA%SuTnteF>$}BY{NOxnmOl9F7-Dv>W|JH0W_pP7} zUiB;Ple7`*YvYb%--5OOp#T5? diff --git a/src/main/resources/assets/hbm/textures/models/ModelDash.png b/src/main/resources/assets/hbm/textures/models/ModelDash.png deleted file mode 100755 index 26e6cac9dc5860c6b6036a1f6e24d3a950574564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc4IQ2?jv*CsZ>M?}9X8-`F8%VR`h|;Bv#xjW zf;*nG`aeeK+?m0!cxHev%eue$%k-7D1TTtTs?*MCsQIk@xTV-UO}46qbA|qDrCR!Q zc)loGeCz2gy`yV@;@qYSYngQVu1VZzvs?6d$NQ6~*jBaOTFAU&@8(}~m<1l`-l$`K zeJYPx?TAn3zp0ye)Q+6#WSqK50Krc=@HyjduD88)JbS?}ppGv+@`}5)R-I>mJa^`w zQjykglU}@>`g7KWb1&q!gQjsV z#?QMf-yrbF{)XAv`|J5%_kRkXBz|j}fxOMKhmdI`7{2zDh*W#KT;@ymU7}xMX1PboFyt=akR{06p~Bq5uE@ diff --git a/src/main/resources/assets/hbm/textures/models/ModelLeverAction.png b/src/main/resources/assets/hbm/textures/models/ModelLeverAction.png deleted file mode 100644 index 8068043e3ea7f36f13ee707ccd3ce4e7849c94f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D22@EzK~#8N?Oe}m z6+0C6?-4{09tbW9Qg{m&-E?6WcGFEa^}(w=Dsn}*Dkwz-#g&`>rFop{cl~-iNzTko zdM7ivFl6rJy}i947y20@bp*)Kds=mD@M-ZL69G~oI2WFqfDL8=l0qSNl-%BGN9%0g@@it zL?I!G#dUR+#UrxWq}{KcpR04y!Tq53~8+X0Zk zSS{yBm53VXvr+>*q0#Rs^k9z%baF3_mrERsd+UGh+5DTJ(oh@&2Mu+Ol*`TI(U$=L zi!<=l6=ndS|IW<hHzVJVXOF_yrw_yB;a@jWd5%0ygFL1| zdCn8Qv9hr`-yS>&t0(uve}CV*k;-%AX&U4qm9i+$dBQhVHdbddj+~32;vjL}^T&5@ zq~aj$B+wv_X{wXl-UTQ?iNo>8>ce$kp6bVIi~%(M zJpg5yA#YALYiz=0V`G$CZlC3=6UFo;29%bz4Dd!P-TuC0KXf62K*ubAW8ybat|Z$6bUUxw*t_hoK>FlxYg>idP)acjen1P z%$sG`Wpi?Cy)BzmZlCqpcL4kZy#J^^KiK z6;KU#!5!w7!ziev=L0RY7<5J;Z43%LAn5%`+C-2i}87hvU0UNI%07XViH7go8J z-f`=iucfuEQ~RFcjylRAfGwKq20Wp^yoV}t^t^B> zNmE&!DEk-yawC5o_Ay(?fnisA4z4$M;wQfk;LW6%9`c7C9$te5EL;E%g#!z-Z;ze# z=o4((w5E!wlPWa-_AE4Wi8}yh?%aZA?->Nvs(aFWa|=71 zAA4UggvYLo(E$*#ytfMgofQFw@aO>8l?4(2;Ax&d7$SB^gx*97_J{`h5DCwJ-n3HM zOg#cbEUM@D+X4WKDISMw8riH-+VP!V#sVDx3x|k4^=sP*Fx4(#;ckwrUkU)RkRLl} zK_A9|@*I)o@FmjZfu~3C`d|p{z}P_zLI-8_ArV#?y%!&4`pV%BAR|VXMH>mRX^R0D1(d@3W#cliByCm4kCmqp!Y3$g(3HNgFX)bFbH2ylBC_#Y8p zpy06{tu_Dv002ovPDHLkV1fVu04a1uSaeNqWMymsRApmmZe=e_Wp-t9L1T1jZ*DJ5 WZ)9a`Ol5XuazSHsX>V@dwy6Qrpib@p diff --git a/src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png b/src/main/resources/assets/hbm/textures/models/ModelLeverActionDark.png deleted file mode 100644 index b8d66c59d6021946c4690b8bf42ff1e7ba192d49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2019 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 Z_45e`^+RByg8U*74h|Q?e6ZSm{{pi~WNH8a diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipGrey.png b/src/main/resources/assets/hbm/textures/models/ModelPipGrey.png deleted file mode 100644 index 9173393a22f048143404d527be0e49ea933d9c12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1838 zcmeHI=|2;E0RPQwjvV0$b3A!;c&I0yEoY9AGdUt-Jk5QdPpG*v^*q9O=y60oi=tGH zNzEb~De**BP41z574dkj5vUG2{Y28_u|`2%U0shJgTWwrKcIQ5 z{Hj;btLL@yf{4(}Oivf)%(Gam?l~ThH~Yl=N@k{rc-t)7e-J1XFSoh$gBDk5PKKQN z43~TH4wuUfQr53uFd@x;Osu8}hTA5ohWE<|HDhieqe?xseaP9l@Tk*w(<&I*lIj5r zgaSfc9q+8fG-*Y)D3e~@=dP|MY}Z>wqwulYCL&5uO1YQ`VQP|nBkM1wDbB+GU41;M zKf^EhgR!=3^GAz!hE%$IJ3QC52Sxv(IR7+fdvs@KC)dk2BS@n8$pv@kbR(FQYt=o7 z`5OP(h`vlS6xwV;TfPptq=gA_L5_zF0kg_Q(MgD;&XAP+)P(Qktz8mlYg!-jx1qxNLf6 z#38O^Vqm4R^>oVsU5>n)GVzE?PO`dqy?SCZC>YUY_S(ize5M`a?>`O>i&daKV#?m* zHyO{BX=!)ZeVSL}jH7_Ix3gnEz@)LseBR_~jE z-|MxVEtba*G8ppY=b`Vj;wbSPg9omi$;BdOaz|>tzmX!Tw<--jv*_%0L73Suj#p{s zt|8TPM%=lj4e14^q6if6h0u0ydFWXq!XPgPQoA5v(d^`vpKRW?ijq_fxChx#(^6X< zPO`Bt+E~4>l48yksCsstx#2f4N+c5h%p1U28b!g!u5Y$D4ENJ($c2FfSsC;xpy#1s zS!PJEoJIi(6!Q0H`&TW>VJImrYLN&53F8FoR*QsznROg;d^pidTf5Ilw9DVQOFZ(y zvC~|{HAT(ir*!l4!!dsRG_hUe!{wc3$y(`niW;_O=|x;DVWDO*V*jR!6V{;J^=Tok zbsvHNjfyp`g{ZpGI1Yx;2!R(0WFkTfq^vBYR}flUi}gHDLb5;CnsKY^$90WeWM1-H zj3%Y(s>z$}3cG2^w_C?^3`OgYag_?^!pIQ&CX4a1Is)w+=*)FHV1DKWkiESDjDS z?!w6iz))tCjV~gEb?X&UJ(VF$qa#Kt$9j9OX?@LTozng%9D@|pKqorUE1x@=HPtXUS&LbLe$#z-S_;sC-u zVRLl2;3r8SHk7R2SNwnXpWWb-e2Gg)q-gS&@4p9}>|AY|Yyz(CS-B)TpCp&~kkA<5 Q789cH?jD&iQ?rx)F9Ab65&!@I diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png b/src/main/resources/assets/hbm/textures/models/ModelPipNoScope.png deleted file mode 100644 index f912f4df18bb2ae875a697866f87228bcf072847..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1573 zcmd^=850+s3dsU7`rNi(@jD zEAuwP-7=FhPaKt(8N$C007wI?uPc; zA?2Hu6n3)9A*6Q)V4R=pS)i_8e|Bd;aVSp|05s;QZim2jwsMSHKpX(5b$v6)Bh+94 z09N6SMqMBV3QOC)kl*ii5ohJAYid?LdUW&Ff4XzBiarA)=3mpp)FZEd#@X70UQ#p* zwT=Db<3?#8F+8dD!(NETv{c$ogcAq^=Q*ZdWO`bfg)fOjG7Hd<)G|!{tf@8ny>RPr zKl$2P^Jh|0(xv8!$;rh$ytJ#UtDbmKuRH@tMz8#azX55$+rAdWwgMKGmN`XyKEDBr zdoXmKT8ly9ge=aSU5URrg@)_6EwdDc+V+TYTX~_zsDXa6Ho6s%t?0e6IjOx|a;TV8 zYl1x(uiR3^;V4WP-s|wu03eNBb6lK%rL|^ZpLl&eA=@L501L)5V;Af*?d$IP z??Q?Vwzi);^1eJ|PcS3}>p6+ajNX|V&fs5et|_KRZ<#x9ipsN|{1Y`*peC?R(QlXV zn};9QHyM^15!w4o-2mS*g)?JdGh=4H3Wh+bYm8!|ieIlS1~KBt(p{_1|2%qJk9lMWRq}G_Fd)~>)C2BdVSmj(6n;Y zDShH`W7eOqA<-yyjTl$?_*TS#B0y1G^MKZ2zIZ^#Wr0=^h`~HyGMUoM!i5vj-4C=vma?(3| zjv|IxAEx_uX6kRjfVJ0%;pR_9?vD1+%1)L+vbWV#Hk$HA7u3$D_lX|VrrxzXN~yNv zjxIDh{O)uFNN*7p~-ozd*XJ1~5!Gq{d2Q(ndse)U5B`u_5AU;IjS0S*9asOk|Q?}s7yQNWR zMUYDXawHI3OB*2L!9ETYJ>Nu(V_XNUsnN=5N(=;s* z1IE|$#^y|rbC)6y7?`r;+uKMEQu~*U>_xNVZ6gHF-7TIHtZL87=E7n+yv;v$pR&_@ za#nCE8q%}fj1HEBJ!6s`dgb0G(SswtTHJyb28^q=Ol_m@7V&cTsB4jgcI_CnX44bIr9 bYVppO<2?!3uqePg3Tx@(6A?2_laT)f=FXrn diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipRed.png b/src/main/resources/assets/hbm/textures/models/ModelPipRed.png deleted file mode 100644 index 2488821dd61668266db4288cca4d5857a2559d2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1853 zcmeHI`#aMM82`>@N1|gT-dvB^dcM-W_<}WihQ4h)B1SZU9i7w|ePs91j^AMx4M%4n_oeWR&YRP*0n7TE1C#6)&k z9Eh9X6~OUnf7!9?t~bP=KP5Ojn=-Sc+bKV(QYeI)ekX}@qiIpzrXcT?7P~skO2|X3 z?TA5o+9IptpK`@aI#rVvbxVq+`Ic^xGaFFMcNG6e@0@XVg`+Labm|7d!(gsIYl)JQ zq8{9&Sy0N-r>Dc_KN{=_y@9EnM)O2|e=-HF$a!e6#^ar(CD!ry&2#aAUDswDx_#)g zf$~O&#|$u_CZr>7YnER@Oxuv4_XsY}KE%+D1Y#mzcMJ%5ll!W3MgxyPrP%|g(^9@q zDEiYOVy1ZN^72sD_%x~nmc!tp&|`J?jr(M}%*Bycj6Bh+ie?a-Q>$2I9e?D@Xz!1m`xw8jdgQM~dh z30=}RqWa(f8j9*y#a+j{$|i_t!b#pcgQk;XdfIn*)JAmft zvpmY!9O}b2(XVpN2@_l66vchw2L@H^=eSB$1Q1JzJ>kcul+IIMD4XdHKD9Y2H#1kn z_bcK@Pj=fZ_a+`!+rTPB(2pf_MZApglc|?~w~+^wrm2<|zV(f^*HWRL=;2I8fsemD zKt@Y%rXSovFQ4u=NKxB&1lO(GV^|{0<@99_k;llayZgjl(wmlrIf6@bwB@n4(}}e< zF5O&+yDmexP2EjtXn@RL2b%1#TPSWmRp|P6Ch;kz#uqz4-atr*PTiNel3iwfCoqzg$K-6V2azoHSQXOyP=yWl z37YqzvKXe|@1UNbMDC(=0vPGu%6Ywuk|N2}pz(nE5WXd+w}DvcB|hbLKYZ!^=U5y= zW$h_jsB9OBNvH_Og1~3ja{BPTvZi3kK6qeIkWKR!hpUPY#b?UvI8p|h^nhWk>*z1Q z*JvtqHr6kj=&%e*+K=QC)ECiKGm)JLsL3<)qO;T|v;3zFksSc-(fyIO?fKkcU@7Z6vqJM%}xsG^*hf2)c0X^@2ZvOVl zjR+7(F)g^37^bH+gH-N}rX(XkXDkS}O_aM?YbHuor+gE;0ebn#sJp&S8Cp}AXgl`y z|FHl1X7f(>ga=y#E?+ItJ~rT}hZpX-JK>6UT$AA8n{YBVJc0zAB8A&}dq>56WU6WZ E0?GS%ivR!s diff --git a/src/main/resources/assets/hbm/textures/models/ModelPipSilver.png b/src/main/resources/assets/hbm/textures/models/ModelPipSilver.png deleted file mode 100644 index 0e874ca240d51e61412f9e3b2c3d118601c32bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1515 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 LNkvXXu0mjfW%5gz diff --git a/src/main/resources/assets/hbm/textures/models/ModelRPG.png b/src/main/resources/assets/hbm/textures/models/ModelRPG.png deleted file mode 100644 index a7323d537ea242dbd00a8702b72f1202af0acc28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1771 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 Kc4cxsUx#cYy#_@9 diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverGold.png deleted file mode 100644 index 647bcea5bb246dc8df6f3e146a9a536d95df2682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`91>!(+*D; z$B>G+x3l(liy8_XzwRV0EzR%3ox5(2{W1HiZW}JRt$CBnBIqLE`a#6CySpy^`R@EU zqn*)}vuhug*?rinGTGB;^52Qu3z#c^R(a&x-w|5coj9q?zvfTX@(pJnK0kW+%iHgN zQ@lA|S6xbEy(d#C{doTVTW6nME!`#PX*JjEZo|?Qs`K(4bPK(fOaDu)+%?_i%d@+@ z6SuDXebJ2Jbx?fW9G|4yx7NnLn}7SstKe$~t#mgs?y=gsda8H3Xv{XdEVKA7tI_ot zTSU#1_FpmFys>dnpY}oRQ{TBk#{Se>B){|>>x<2g1LkjJG&c>LvaPQu{W?gQQNf*4 z7oNW_U%DjrE|)!*nM(3emd{p4wC8`X{OZ_et#Wd4f2r@B+}@7~KR#VfV~n4$;_`H} z^}SVfM;v$R+6$!`8mQK_Uiq6KvBQk}6YmPu{I}Cpvu|J1>%RI!|M^UV2%Ga0W-SkX zadNYwZLQ&nwcgSp+0ncGOy@FH*5BJ!{ATak=p^$4>rN(2urXsiZ=DmeHutU7)IH8c z`=e%?{Zw4?c>Bp`<_#ajTCZ%;eY5%DR&&RBZoZNmzhT)&mk{j3Fy=KfS?ud8)*3J2M>v~N|85TzYG_*xs^-uTxhp&Y6 zFND3~(m!wwL0D&-?osGl`K+S*+mdA!+~1agiK8FIUPg95*1fbj>~QoR_O)%> wEBLeewrBW*i73|mhjCYQ<2Ibu=B;ORTe-hZWQyBwU^-{;boFyt=akR{0KEZ#kN^Mx diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverIron.png deleted file mode 100644 index 594005b8e9b727c0bee67d4f5cd3058586a6891e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 818 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`91>!(*{o$ z$B>G+x6=(LNf`>bKIc%Gb7Ug_!!r|^+0V)R=4xv>vQSxO!h{J8%qxsye52!U*RRsu zI_>7IiwkbO4F4J)v|6>)+j#L(<=JP|-jwZL@qWJjmr3vD9ez0BW?RADxWhkd_;$5y zSf?sEE%EHcZH9GQqrMhLmd<=9sq**x_35jm4aAlnxy-Af>UXjvw*5%yrwe7fdoP(4 z*56=Dh<#OJ^))H__SX1U^KU(R8GOspx_2X^&D=|wOD82t>aRUNL(*RLuH=W_`W5y2 z_a9x}=p^0Mx86m+=hxFB&fkCSxTL#;%ue_JwUM}S2Qi%m1HkmpF<6oIz_&xF47d<&LQzAIU%r?U2FuZOp! zv4pI~D+|tf8vFG(MAp4|zP+Pv%8v8}{{7B>-?9Dq@yk%HBj|cy*6tq39=<7!j|1EK zjwkD6if=#D-^6<|!|>o1zK>5X+pWI$aFuh@o^KK9k8-?w^4sL?Gt)jWcUskEZoai* zdAQ7!TbHyA_1I?ouIq;jRDes=ojGu9;qxUT{6dz(a0!!*^M;RadT+&D5%M4%#0y zd)trx2|e@GH{WMCf4*a>Q!Qo%XC!s8L9C zj=ghV-m22$4BvzL7LnVR{@NW#=KFYk;=iLU|1PaxX>p@a<~SN!>CcfUV%jO1p=;VI znvjbiY(=yetTeR@6X*{qUE>-Z6uO2rIv7M;ei6~VWzEHnVwsVX6Ls%3sU42m!y0-# qYKtnE@NL>!pq(YAedD9(E_LOTJ3TgQ|62k~-wd9velF{r5}E)iE_ILq diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverLead.png deleted file mode 100644 index 69ed11934322edf46fd5c405e16b4914214759ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 921 zcmV;K17`e*P)N2bZe?^J zG%heMF)*zP3cvsW0~Sd{K~#8N?V2%e+dvRS6}U>804`MO3~ua7g`+A(9Jp~2BY+XW z2w=Og3QJ8=Bsq)^kbC$5ISr#fo==RHLyC*g5hcz8zPUR)yWBsdNDI)2%w`{p%ge8# zRo7~b>+5+X)`o|NAI1Isx56GFoY#|1tKhAX_A!4teP6ESwRO2?V0t_rzi0uvqRx0) zfI8!pE;ky%xHS)5TznDPn5J*705~sod%G;fzKz?wG(U~W)u(KNP3ocmygGGPE0s>G z&~$$8nfs@7xB_zJ4>g%gBh-u36rfa}_ zjN?dc$}c|x(5pAEOVca{k2=r0yOMYscS#|TAE&g;}qxU za0OWlrma|r^r&-MV>gO6t^}_rpD&1cc^v1nhwFRE~NLO+(A&FHu?q&s2_jM{4@%>5u$Whf0g!naWWw@Jy%1t!xoIQ#sl? zFoK`v&~%gWlatw+4i4U~Jov`iYU`i?FpVN?GHrj$1npG;V3tK_G7X)ceh}?V0eH3X z**-h_)M(mjZwhdJ{#oP|z#7IK0n-%bd!};K3v3Zk0BagbOpXJ diff --git a/src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png b/src/main/resources/assets/hbm/textures/models/ModelRevolverSaturnite.png deleted file mode 100644 index 508d1e8b60c4f833e1aaad7a8172c75795dc3edd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 987 zcmV<110?*3P)-ptN>V_{fX)%kPh0JvKJEfjD3^p{11Qn{j^-uWgb8-?ZdO|6t- zVqyYQ0&H(>r4RV^$J9A4-`~(l9YDWMrNDeotH0E51LSYq(m#Cg57(a^*R0XmzIpA~ zP8)xr*!dR%(&Uv zS@!n!nE3iTt&{?wSS<3#SD#uy-);_LP=DX|vF}bl4h8@2AMoDX*|2REdUyIUA0BJk zI6)B5Y&Ka~SO_O}T{m<{lxDL@p->2quaTKwpw(&(oGbd>ahy;`*1GKHFAictr4-L! z9B_8}-EIja`;3CQM+~m(vb(z*esdfL&+}pn4uXK0nHj3pDvslXItqotP{Yl5rBv(= z%jI$d$JkG*`&>9b$CK(l02j_fSJv(D``>$`Sv-VRt3|O`1mN)Skg2Ju)DzHZwOCwS zjLB-X8s>L^ZqzbPgq}l9pL{+KK)c$8t8>B-46936E4F!jmF zGvS0sN1eWW;G~$#Fe@yYIKO@Knq~S9iup<@{@mK?3vaR5pKL1ykACju0mk@fJt`X~ zS;m_(H3!HtJ|!1O-_?~>9aEB#l^qAOo9%WR=!K@G+iMzN=ix(e97!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`91>!(+p1+ z$B>G+w=?(p=@{~~vcEL@z;OGnZbnANf<~se&h1MUE`B5nHB3D^2;> z{E|GiKH=Ll=Wp1>Y*}3?dH()Am*DHK*r&_O&&-v7cdT&F%#>)3Lfe;Hc=CI<^#A-n zZ~pVGd$MESNsH{gnKLWTLD#EwxpaWmoJ&vJ7+Y^YTKIqcdZp~(?~8L89tB+wo+$GB zTHfEF|5wz?=WpV>w(=O;hj&xng=x*5_A$EV*_l6@vgaDs|8dUU9$hJ=@kO!FMnGEP z`u59G;_u%pM)pNZ3Q@ZIFuR@KBqUl=h-+2{(Lnnys zUiC<~g16wDozJRLp0aLRX+^nE0lNtsP8xm<-+0tHi;v;I(vln3AMR(AEAH6e_eNi> zXL_CQ$tMaNO=xI=?T`1Tq+SW>UkrQ2rGM}mg0RwxbMnqE+@sRB@>zvrbx`o0hP^8_ z;||;lk=6G&zp77sNxE*E_#SpJVS1eV*5p}_S>JkgKVW_5diRlPbo}EFtPv+B_1X9B Rm<3G744$rjF6*2UngBs@VqE|L diff --git a/src/main/resources/assets/hbm/textures/models/ModelRocketOld.png b/src/main/resources/assets/hbm/textures/models/ModelRocketOld.png deleted file mode 100644 index 36835fb13ccb95770b928d3256a93d250bb97c0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3HE3&8=$zQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKn+!%E{-7?&Tpr^^g3c7(yGs6ESt7)?z*yz z%Yz(`um%nN`2Uz_C&*c)7*cO4s6YhE`chadZpI$+&Gf? z-r)@|&w>Q5=Qqyx$RxbcJ?@?Sgv)fgfIst{7q;iOPAu>E9d+zKpV}Oye{=RH%~z{= za98@-n%7<54>4@wp16luM#Sren6wAS{mtLsC-MnDC}8_?OXS#m^*=2t4L5VHEo+){ zP-NRN#dj_4Z)^`Rs6E_&W8I5)b@w++m*F^k;oR=+_4A&8dzrQ8U>&1F>~*8LeySWy zCpY;_QrY-B#Y9RsecoYz+5en(PWB&9zAe;!^w7Fa@22n)|2gMPe3xcQ&F-`4yDhJJ zz-rkMZH;NohbngYE%0vKE5aCkI69-D+36-%irxIv1r}3Qt$H)-LsN)|YakMOsjjqt z^7ID74_aGp0HcP%)78&qol`;+kSSK;8d2h#pOTux5R#glk(a9PSDKw#r0?XN+ra<; diff --git a/src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png b/src/main/resources/assets/hbm/textures/models/ModelSkyStinger.png deleted file mode 100644 index 6b0f85daaa3d2e5b38097b3d097ef200ccfebb11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2184 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 P00000NkvXXu0mjfF$3#@ diff --git a/src/main/resources/assets/hbm/textures/models/ModelXVL1456.png b/src/main/resources/assets/hbm/textures/models/ModelXVL1456.png deleted file mode 100644 index 0faabee248a40d42e062ba820c2c8118123c436f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3108 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 diff --git a/src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png b/src/main/resources/assets/hbm/textures/models/bombletThetaTexture.png deleted file mode 100755 index e4f809d0d404a90cc3d3132fb6a534a7bf581b77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17044 zcmW(+cRZWj`_8bcMir&@YOS_Ljam^^tF6&VDNz&^r7b0hBy=NUv{f@oztZ=ut)+I9 z7)7nts1Xt(DN2k;i1>Mbf1Kxh&hyVX=YFnpKlgRr_j%>!;vgz4Cky}pM4cQjTs`P9 z|1}|jgJ(PBPVYenjJWD>9#H;6fpIY43$k&x0RXCShq-t755|WcINpi?01hAhuK|ar zQQU)<$0O}LBCmx9Mn>OxbQkd8&b_e6GhuflRgBK)pD{2!8;17>0M7F{U9h>1@adm^ zv9aZKgUsxj*{J9^zuNqyc_eQ2>IZ)#p^)>wCy)2aN*D|Oxu9RG;itgw*X!sP`QYgF zj$p%_xtYVafA^ru$SC}7yiy9)@?12EoNXMp`itecRKtRhBTxg+bO{4Hr6c|B<#{f6 zPBsB2Z@pXNiXiB*6Gt>hcQO(94Ku>XXxrKSO6K9#2a(LM-(1`>)4%h7=-OMg=zzgw@K8*fcL`+UF6&i-L)1xYg;vRgSB!Tq$kVB7L2_e*nDSlkFze6D{c zlsyU2jEZ7;e#y4%9u3xuK?e_w|Me*41BWP}oz)g0G0 zWAM>oIaOXgu6LMkFSqG_EV=UWZ1}27a3`~#1-$sI_$)+b=q&!RN|}{I^w9CA3&qX$ z(F|PlR3w%(rEE%<53g>Wv=w|B)9Dy0so z=On#CvXOec`G#d0&69Jv{E|trq@MV0Ia6UjV+8;8SU+m>SUv|1+lUakRC@_kuaw{{ zaWgHWpkw=7&lygA4P30JJZAl9UgBw9Ju!HxvKU{%d{S*p7 zj9;?OkC@^X(cpPgtUMRyEUwkgJwZoc$D4!S=g3t3MFb6;ke~c@ncI`RVsxFeJRaSn zHx}XIQ>ixhPkZ#DLiqeAeJcFPb;^WxjzswArTu^RqD83DBz^vy zL{jeaAz8rtpq5V7LYL){@hG{;v(U1hATko&la;~~O%A+|xAU(n-~Olf;c9+#ocxM$ z)reOd7EdC$MrUy!S%Gq)(M)Ns$e`NBSx2JBp&iZ%{Nb|45P{Oieu1qwUYng@ z012Pun0J~3HXWj`kP2uXn(N46wg>XzV3nrD#>|bRhpgZIX3X+;9Z>=gOodyvIz%_` zdqHT_2uY>yUAJmOng8wYS~{OO@DfV;W=0Lfq$9(5P8x~L3|4QX#xg2_Zgysgh7F&( zsqPQQ6kt_Mkme*Xr{Li#?DB{kORvR_<5c(9xyyQj4n9`KS=%nV7Ga!3@`*$)Wm~eh zhbqM#>YXn)zVG$_Z&Q+MJcY)$YXkiM1`9WjG2UzrLbS(@<+*&&H|Cq3fHP9U`KL)I zbN6Jd(Vauy=GW%qALAgq&0`(s#r5Ov4^;J7bBflxw>#`={o9q5JbmlN)}opg3?YLo z=dqUH|7HMKfK+D_%Z0kG*^auOhJW}d{ZP0X06F#znN-V?Yt4B&qvN-W{d2{qAZJR-3t|=y$(QqG z!|%KN2lN7Mg{!3i`tJ@eBS1MNwfx(;bm8hv9lC^w`L)6mtJl}8nnaH_-5D7 zvr{K8Y5$dpA9}Wr@tOUd6*`Z672fq7(rPS+UO#TV?$v^0o_flR^QJsWr0 zeDYsGbYwJS!HFFEp8;K%8n>_NzDm6L^WZdvD_Yv+`JM8!h8T6W82rFiyX>;5angab zVAHWG#~^R0HvP;z=OT=2c7rxgW6e!|9bE?B%kg7s7KozE+4JhXN~c@fy^P}2tIB2B zcXRi;Yei?4HOm!0JMEGoNGooXdy2!zWr|Mnun{XHqObo@s{PDuRg%T2wmOaa+ShizhU zGOolPUh(STig5!AW?nP)+dp*F5l!*l(wIEhn=3zl_JrSNMy zvNNE{Oek7-g9JmW`ZqF~WIXvl+iy^A+{xOnf>BGeyzLY{cSWozaZCo_dMJ35=4$H& zp7Fd5*NgSbZjKJE(QBM`T+daAZXdU>X!#*p2|xM#RT<60yvFDM;hBA2QP`UzU8^Pn zm=~_1WwdKrPyQ8nr#5o-Cg3w7$@JO#OF`Hg*sPw9%Jl&A#gWL_{wAv|tHub+$!&Tk z_@@AB-RBXcXKh%1dST;SP}UjzqDRssa2y`zy3CU4Qrr3O3}pK$C!x-a=1}_&;L=uq z#=XWdP`FZ3QIU``Q@eCOR=5fw3~~M(`P_kwYP4BD^pf^6lnaxb1T>a!FzbUU*TdNtc@}Q$` zPrY9{T{zmUOfB^0 zlm@=fTxA{Y9cO-7REKqh1?c|Z9eLW-HLp#ZE_Hw{7efoC#?IA-@$IhUF_sVJagZnh zyr`oB!=%wiZ#gO0DEg2*UfmK8uNa83U}jfPqSWVKl*->_!HlSs$?&9x!`)EfuU2L>Uu>aebc|?i3OM$Z7h(UN(SeOvV)W1C_}wQ4wnTCc z%^u%g6R7m57A`8(-98qE05pai0Bk?BIjpl-ePtjqJ%dFi{tS5*(JIRfO%XWnAcS0ru4 zwQ2^|Z6LGSc|~V()K)tWdF)7v=Nr3FPs4ip87Z*1Q@b@}W3hMg!KlDy+9I;HIR+lJ zV4xlsckk+k-Qu3{?;q)V^iTOy?gjtvJK0^xJAdbrQ8BUWt^avp2P^6j zAsqS5G+$}2uPaZ9_tPOyX?M9Re@%(`*`Yv*v+00c_A20(weOc`qBa<>2GGOw3@_`s z7*_>O9b{pS5RTxQ7H~pac@N3@te2}@mP=K|0|lbr!czxQD*_O>xF6J@J@z8xj$iVC za?2Iua@t-^)v?T>nT3-#EqAjwoWfGV_xfFT-VS9QZY8;dxptJiqsVAxSo6+s7GgE7 zC1_~*K0Bs=wL9Y`y&}GEO!UUoCYEcYlSomN@5{3`UzUCoW>^ zAZ;{Oicq9=m2~C-f7e-^;AgK(tDYv@V(Q9TCrPR>OEV|hb4o!u#W`wL2DC+bds*bB zpsds&aVqjNvj$^3}9cN>a_ zd5j&VG+ikEB?ay)+Y+jUp3qY5(be$b@2s<*7f$mgb-0Vvc7e1@zbPl4u zA|8Zh-AQ?QqF$D~m1nR}A=erjzSI&+A#8jIk6TZHZI4%2qfZTL3&j0)NM#KgePpkV zM?NU+`6=J+vTxM3^W69EX0e+6E^-m12j>-N0-$4Ya0>|2Zd--;Y|&bQV9S>LcShjiT%6Z(Mqsn*I33)1$aO%8g!F3PCoHzS$_NY(bPM#fNX-Q#fNPm)6Xx;C8G z_v_co)}Yd-V?LWb<25~~O}Zsqn#%a3)%*MhW3q*wSQjs{%7Gyy7B^aa{Q{F=rQ8AD zWZ*hAq93=5)r&BsMp&aG9muhqEK|9B|CHXky?+mRQVqMyoEWf6L@Fh;`(hZJCBHJXv18( z3~$*Cpz|R<%Np78ycKw7yUk$=M3l-BDH~rV913b~J3Yf1ibQ5p^EtW&uc9ZMQGPx~ zoG)4I`6^1gAZz-*fF~)=-8$gKYU>7k%RKIStIO4F! z)y&x(!3%^t(5ZauXBPCxs}%8Y9CT6nmm@X#$0&S1q79zn{S#AU%1kdiud6>X9)9F^ z5F$?eVd}I%eKTlHWH_V0d#pjUeEm!4vR!JIiF`F8G^j!vR*Yb{G{^HQ-q)cvIJq4l zG>`WXjuw^r3OYWd(VA?f8Q$MR5Yn9xw+h4xe-*wE&3?QW@>DzNL)LPr`<2mqc_md{ zv~*mk_YyT)lE)qvfs>iVxQ6-Rco3gnzG$H{_Uf`&!*fsW(|(i@KJDhAjF! zt51Y4STgl?S@P3gx=ORktOAvJZ<~G(Py81gQtSYDU-v5-fsjMxlz#0g&05KO&Oge( zY5mN5dOC~Ujj2rbv7zf6+jXI`$1(h;DE?f8ric0R?+Cd!(>goL&D6Z{?Wvi3->722 zpQkM*@9T3u@049Ir<0HZv*d5O`o-Mq?(s%xC?qZaQ@uc8RM zfW@=l=U{(ng#TU<2hx)4iI@?P?g_$ za(JrDEQ``5ewMun&@nNDBLi?0|6b*3Kove_$FEb*Az-F}lm29n{RgfZ7r}ZNRvga` z%vCDP^C1ZqjR>jug0u$ds(@)8t4?`VLQ#DZQ}TpO$x_4^3$!}m=V^7#EB6VEwQ{X@ zYEF)ir1@M`)yQ+q-L@B8Z9U{4sU|*YqkE#FN@t?@X-%d=yKuoah-PB*%jzh`9 z`-g@p7`)84el#1@KJyaa`qEn6x?fr`m~JB;I|w*@%3o8#0|0WtuK?};&PS~?8$4qPJaJ2OzqFC== ztc3v7-N4h2MGL9eBbCsaa;G(_>X?}Y4}{M*lW&k~yYEI#yQi^H59Iq-_UONWqtc(% zWP9jow=^q)GaTfe4Y*Vn-Kb2uYCt^>mxW-F*_pbP#?Ahv2`>9|yaK;08F}vydz47Y z6>H?G67VVEQTDOFKH}QgG{1T3*Pw^Ffn*6@6f}>a zLhpT8jEk;i2U!R2m+KoWE8jVpx|Q#pr#>0GsQhp~Js%O>GRje&plxlZqIPAKm%qpL z_bg+_U*m>Wf$ZfxhzdyiNCID}%fFAYz*D{<3YJicd_uoqOrbhdo!2Cp_Dgmm{Z{hA zMUvV6k!nfPA2?ZHO-9+rjon>OeDYS_p5XtcrTn{AdCUM>XD|c%L&q;Je_K?+ge~kX za`q`h=iW6%Z6lHIl>Is_5+RVG z(Qq`uXUG_|1_+&T>I5HEG=x5mg&)}{KLo>waWZ0>$|XN3?^qbW*1?!vBW%lolSIM{=c$81UImRmNB4+{4UAbNIoa5D?KB?{&pBgR6 zS1O^EAgC1!d}aiSquMI(44(ZuqdY!1rqb2f^BnDuni2_RRycm(1Cbe)rm&3sy-_35K@ z=@xw%R0J{Y7fj=4kF)zeL|10VM-{I*pt&K5GDv2332|~ehHSi;8DI5fF@@w`F)hS! zO^sV6UL^bcdhcLh% zz=?kZPkLeGt~4MvR}#h`m@Zqts>L_zYl&}C>K_Wn1Dc)!Uv<6xD}{WLWNMy7?h*j; zstML`Q+q5%DpWd~8;Ya zvyJXjqnNa0k`2;{WiG#a(V8HSPF{Q78o8`IPNNIamwRQrTE_D3n-xUd;%4jR|I_Q4 zNstNWD*6SS-JL7T%e(kY@O9?B=`kCB!tr3JJu&oyYuNHr@aNp(=)+I5#NjNCe$-)a zrd93gdJB5DV5#xb(Dqcz*lu~~1(evO@f>g4&Pm*vOnD> zllqfM^xfvw`Q>h8*AG+02*XlR;=bPx)ey^9%vR|TxrCw&&&%}pLEf;>VFM^#E9MrRW1%ZXF_@-direisFE2iHR=@`y z+g0DpS;Q$f_-Uh%5mg7Qz$VqW@}?luQ$}3g;JQ3iRV50PAl(f-Y@~9W0j@A0;xHj8 z+^C%m2Ux@{`5w3sZ;>#YbV4G+PTQckb;s%45vlXlh)5iiWWl@cnZWj2?Z_GV^mUY* zGeQ{APJTh39dbVq6EB9{4-1EHxVQYhL8#kbAHdISS*)7x4Jq#rFN$$zD=;e`DpeQjtUs+2f{Eo1 z_I`=I!iqO6?|dzkSwjXUgXYV^BT}zf#wXFaY~6VVTfJ46ckX)rjN_cyYqd*fTWu=bP$TC z5SAO|Mm;wWOFW?`xS$`~Rj*RK_qiUK8}RVjkD!fYshSwkOFtY$zquN$@7r3lY~_c& z3R*d>=!l&+u-$Ef>E2IV0cvN(x~AUUnm5TCYnp4+jEY%Bp9Pgw{E$9Y-5Cl1e6$^k5x~wK{^Ga0un7204&_^C&>jcL*#Lt`_%-GugUyLjH$W z0e=4t9&Z&=5>|Quwl@TE?gA{dEP2tDyiZtcVwZ%6*ZS3T;+DN{+oR&Lmn%|)^rc%y zelvc_j?Nn&D$JXY+~X4&M+tQHy5si|^R%2Ncxs~^HVe0bme+bvJS%OD0%&6{oVYq{ zA2p%lq1mKs&0{)~b6l}qxbq7Hdnm10qkdC4$##ENk~?l-OW~LR_Dd@mfc_LD`~Ye{0|q<^NrKiu zc$wWBt%p)|Bg(T_K2d?!@2`7>p25nfzg&+h{ikD;MDF{p%ZuokHfpRV}vjE%9J z(`HtH2|St=sbga1^{9guv_Cx%cCe~C?v$56-iPPH%b78UG z62QLVJKRin8I+XbM<~D}oQDBs7(eL770Lk>A9P8ktgSn@dOb-wy%%b99!nx~2);I# z{&;9a9J;RYDo3y!%?dbU+wqsbKzoa=Jb~`I)OZW%G%YS-j;2 zMWb$j$?4tS%km$nlfA+@rWe-N>*+wWZ)J`3wA`|BIHLdgUrNmOYExY3c&$T} zpSJP=>G9dJs+f5zGl1t#;4h18jvFP_7?VT%PrI}%`)gSLy)~2|d}?-cpcZ)H=970| ziG5Y^m~Kp0fw!q+Z0PzWntCBFH|O8yZNXP5h$*?E0J`s!Z9PD0QR@j>ss$Z7*k zYHO#V!}55a1!h*~vU{{$`?ZfQpjnNOm7h*ij5b$?Z^jp%)s#DKN`1t;uLL=d1uG89 zr9vjToaz3&~ z?Up=0EFo7{$=f+Gyi99;f--htG>NYx=h^aChYoA+2)nbj%J_MSIR1qvDPoh++)fLV zP?-Vo{SI;0Cqs8_#jTd^4k#(*QdXqMh!O1M4kczTx+yqRk*_XeZ^i4>pH81t``DR; zj<6r-dQck!?B)yj?f~?)m;jv59}nY$i?)e3M&e9?EoQtc1hZ-w)?ojx8$hUml0(fl zy(l!~kkI=)6$DaBpNj?^!Efras@PoVONB%3mK&S8C-X;F_7Bd}*z*+%Gkq;D%W8Ww z;>`8}bPew+~0GJh**CbM9F{{&+9YJFg_0JsSp}v zNCmXzM*F4D$67-(ZX$Zp1+PM9;Zm_KShMV+!D5*D&|-Vjr=Q&>gA+fc%F%!{v-sui zKJ@lBI=Y=DzTLz%t~h5}6DaK}s^S`#Y-9Q801HhMY5?FM!&Lkn6!1(0lOITs_Koag z0Ho+bdTtCp6T|I?P)$g4m=-@!$zTBn+HRD}sU7&hB4&pZGRF@vl)m z5ajvjXwg{D>pbJVqa`wq(p`?7n&?gSsL17BWviuSdM;dN*E4yEec#UZ7vKJt`2OVc z73IG%Tid8EqdUZ8!nLwM#3NnhVvm&dB25THimVMOcrZUN-&g{C;V`ECI2H?i95=Wm zXI+3mjacuj(mooju??*ElT}FWw-a*5j^rEm45{NB#P!(-X%%1K8>RXy%J zQe#rL*sT%Ul`d0xKpJdUVy$_9eYevA`c6tWlLXNG^ zNYmhj0UBCvt+o8G$(u`2cAX9xX9X~c*B$+vBG<}{FV!M8Q@UhqcZcqD*(0UDe4Bid zcjo(cICqgeRq1UR&V6s1dO9A^{iNXWYuC8nOC{pd>uA}z7}h2H+5Qkbg?g+&W4AGV^N1(^T--V5tRTPm!D_Y8D5j;Zo4Exg)^Zz_vwQGZ@W%Z*lJE zYpH?@jZr65oqDtdV)z5pZPdLDUyHW7$h0CxJ2%H~O%CK#RK(7^!}!Hem>_ukR3@*& zXTx|+kj#Bj{A9l9J*Ut96tWgqzyIVVm6~fKs)L5Gi}VDT8T^Li0J%i#I$ZpC!)W@z zU0;=1+1=7w0UsnZ8!mtu2F{XMrYK~q44?V&c*vC4w5(iLMKX8bQXw>bmS0E0Nm$`V zsJZa{>qZy!yq!kwy5bec9}ndSo-ELPoe!d9dhPaU__w?Bz_~3R%u+_nUKY9KP9tKb zc61Z$gkl8*^`G%gk53&CHJ#B%8l(^DnMS-;ROF?{So3j|e|}d|$q!Qj@`(c_&*fh> zY$B2bZ)0u46q!zAj>=o{$^%Ma$;V;BzEG)W5Vg9J zia}r~if`nl)XG;Hm996~&6cYBBKdurz%^K`n=w=NKF~S8G?T*1BzpD`)D0e+J9ofH z>L(VuJ0a76fYHv7K;Apz(e-pPyGJw670V@F;j2!%n&4(^Y$ToIQLZ}w`%a=vUT!NF?zwgH|o2aJf`;^1iP5c<1T~sfh z06#;u{;Q(&5ulIeaee5PjLj_IiO2(@f%p{9_vgK+{Ec5uCZ1zPo1E0udDD!EOvM=^ zjM@#l@YO25ayOz4@NUPznKYf}-_n_ql`g4?AKE*cjN{Bh`y{+}gJsSAKql6VwK9o< z?WDzUdRPqCRy+zh{=%A_=BiF_vApxor;i=E+rox$rnqusltDW76e2+ z!j9%UMqmI0$-f$4QFbKqFB}j{vo8eaxV8W;Js%KMY%xA&hT5&k-8Xd1IPoZyug&7P zcl=SctW)tSxi#wk{w{$(o~K?*%nE0 zihbS~PRT;OTJulf$L#XGE{zu8?Ogfzst$)xW|I31jhi{v;bH~F2&Z6{;{k5O&eiV~ z_r?dml;F=;UC{I*hA5e@6dQCivenl)axb|_nvTzI`~;b1IrgX=+F1qk;P|WUM}bpL z(1h-+_;pwNEbJGvLL-s=&GDh$=OVcB=7g7vq*Zp)ZZtVwz;TNErDTBM;lrD*7(XU6 zu*+MHk622psUcJ;B#q6C8oyw#F_Lef^JV2 zp9+>6)K{V1z7H_-edVBqM**)53R9nDA;;wRTwD%O8=dG?{SLm5&6#D`u(wH1gRGH- zA8=z%rWEz6H22#m(1>z)dHhb$9mm_DzX@#gQY)7=+Jcx_udVx0fD9b_0t;R4>%De+ zo^sFfyL40Lq1!*-;KmkfpX&=|d|ASuS>q}l8OXW+!D+lf+fDSyf@JH-chP{hi=(-f z-y(ls%1PzZxOzV6MG#gBY^@LKu~gwuO^H3@W_FzSPuvq2)pPQ5_X;AJbd%v$Rz>3K zp7N@d)!zvjvQJ1r$8(-5ce!;UM`i%F-w(rY^lEyUkO-W(`M7wE$Bws!s z==Eon<&`3D>W*$<7MeAHD?%aBLx6YwASUFNs|Tfcl*5n#E;- z$$h}Xmoe#Hg28oyY13NG7d%Hyt#@o9+5b3oGn~Ovm7t47YVVImRqI}O*5*2v<1$uo z@?RBXpAUkr~! zG2GFNe*^XGoyTo#{2ohYk7%}UoH?P~@q)cR)GG(g>jdzpaF`ulU{PY1mns09cPb7^ zFrQ86bFZ^8w`WnZqXB#>hX78q2;om3wbC>~POHL^?g#+?qgrXKYs17u#d*(>ySAxo z3~*;3%mYJUOF5D_m}T`QvwTa!u>vuz>)N_qK;C`5 zPp7ikW9|F%yDbrvIfBPzYjeW5YtsU5_2!2qfiLy}qzTVCAlPFzQWPwbZozD(^FQeK z4f`N?-CVA%TSiUu)1eGtib84@Wld`*p>DI>!)1; zcwFR^iai7?_j;;{7O;5i59t?#r6F#)#Etd@CpB4B^e5kLVOh<1(*Cra^sZgFnqmy8 zw|7GTt|Rfx179!rIsH^2#skb3h=fyzlm=-zs>%onlxYvQcu?5)j0D`~(#*XsJ&8v> zkvU?#S5M2d%6&Yo3bFP-*kq|Lw+qcS^?n=hBLpTrn zM+OQudU(HT^yA=F8tE;%Wv#;rryK!U8DjkXE`9_G7#254pj!dlM#I2`;N#=m02tUq z@arUixS1AM)c)eJ^V4WvE6xG*HjR%7PQRRxpkmPD_&EUR&?R)FmUaTYIe?eYr)|>L z`1vfOMrroXtP)cz9(G(DbL=dzzK)EX%=Kvi=qhn!Go|Z{QL9#?%j?d1D2`I@Nm!(t zW>qdA81e!L(&v+k&5tsdQ#12Yw~l1g+Z?elTs^{${Qcq#B!Agx0x5dE?}Pw9|2t#bepbxL+o{=n5(jUU;NHO#T|sT@x!Dpf7dewEGK-5l2S~A{ci6yb-|-b zW_!?-)Vf;@$SgfbH4P_%FOTm|ebM%j4tOvOJoFNEC{k_rB;efa=EJtsa>+1D6HzOc zv0%${pgF3E_4nAUJeo&tmv#m6{qx{NvN^Nc(-70s*_*01`xvVOvU+3^%80Dt(;{zz zp6UGz3VKEuxzUg29~i}#Ol~7Yb4T9mLUv2KvYN-ecIk9#cflqbikLo6aed)!$y>|l z$v?IKaY;rNuoNQTp(&rPj@%)F6aWnVLVMqeJ0SVBgqcSE0^@)0u&Y~&gif525WS+V zaQK-_YZ0H}u5f@$MdlrERbVpV3Y*rOhic%a^B=2^flzc$O|u4+E6c!%umEwDrH{=l8g`iVjT^o|NCML*vUj#*a{_@VsDEZ2>i(PqQ zps%#TOlx!dYHoTz8Kj{GB>}%?76KfvI$rtn$Rx7oQo$)@D78kdnt`1;P0R``lrJ1b zrd7S4oZ*5>;yK{woGV$Wlf*nRa%d0mY7Lbnu3$o3sIlyQb-JbG=#%iHq0H`%%hp!r zFXMS^pd-Mn9srb5!mMFk?mg;H6#PsyJ-H#_w`_ms)A8}*F!6x?g4;D!*;!D`p{u|? ztn|&{6DrwZLWcZr&p~`zbnKsXS^v>6UCcr^*hACisM;SuUYQfuE^DDNze1N8WAFUz z7!<_>>1zhVRKnNqSS2MZq-8_rD0k!TDRC|`cT)bG%NGi`Sn}^e-*{P}_D;DnJ^!|I zfS8BBc@D9GES6@q)_5nySgQGeAG%{Q^o4)FdW|Wf7W)rTbYCad7?|D+Hcv`FjUp{R zaUlr0+N7Hm$T%(`W&901CMO}r4lSJ1GEF&&BKIB{#&U$A7s%s2_Eq!llC!-p&X~1) zWz2bv5H5+862TA^^X7!7<5f)(qD%|u)khj7G?G^fuekRLEb&Y&ZP_Bez{xQTVlbX zpkV~^&V~7S{!;A_jomf(Yjdt(K+!xl(R7s2gNzz^^RmibyB=U%!49A$0Rjw>yfwPl zcKVYkOK%b_lwJk&Fi<2Pr)NlC@>SX4T1-E>gfGPjEcq+arM%4MdPxn|&1cp}4uT?&mJx(S#SPY+$#$X5*09u&dAJb81nYYn0;>Nxegv|| z4yD(R)&NcR67^8Nk5d3@a;Aom9-NtC9;WGh4b{Av&CZd=}l(nNcMH8bz2E+ zh<()!Zusnf74IBRAtD=785E|s|GUgrZ{iK4)Rny9*Ea_B0?pZ*m`=SkCVh@T=;7FL zPKjL?S#T1U&A0R~1eEV%eU*XGN5i|zf-23J3z6XLl$LanN@OHF_z0XOGyp*!2w=X_ zmoiQyu3bvHtwyu|pdy_$^;<|`w(84GA~&t-pMR=J#gem}cD+uD>WBypDeE=)M065! zSKQIEYAyW3Vlmd)eBlO?6!y6_o<1T0Z4u#$mQ{mTF1gJhD zW{-e3hf?vOjmOtYu@kw<@rAN=gF1gC+|;d# zi)gKCnhr^U8q{PmrQ+yvP{$PkXXZ_j|_N-oJ2$aSUY~IsvMVoVqyqFxh2Kb)nUF4JmiMTuc`Bc(x4)kY_^=$K`Ohn?+-i=Fo07Da>o8CNZc2jq&gU~n? z-JCW}6(d-XgW^S|_WuS!W~`LHy0A_fHf$pYcjUfCro5bnO+SWBi}x1pOG&6 z=;8@Cn@hvv_y~rDM3-N#`}Ie$!rugoB;6vV>ebeJmH0P@@M_hInkwDH*Fu@&xB*CF z>55EYbH!{G_3Z3&TWuaAyXMlq<7Ur!}^%Qti%J{`sDN; z>ulHlumx)37UAUAZQH+REuD>heFoIO@|3Olb<>4Wr|e%TxmFm*MU5u8$eb9t3?$vW z0xE7UO?cyK0(cMaaBU4N4nKY7;qOlrb*^6tOlhIJL}HK&Pu)y@HUN;4fyD1_xJ$0J zo9;nQ_I`=~IeAau)RFw#0MK#rl#^-e%5+$Cm{4pepg>`I@%^@yX&)xW3I{suMm&%W z3hSSqu%rEayxy&IyXS4?w?Tv2lS@zeeeH~Y*L*Saeg=1L?X1?DhEnjT+4X@RO%&=a zLC>lxy+uERgA9+n`T8jt)@DBgoF`UbEPs7!#TM2KoF#yJN z_2x&LwI0E~r5HXfk5`92Q-I38CkR@`hwFUk zJrEGm1-zwxD(N7v;c`%^x#5*cTbV|&?dwmr`^(Sz%{79drf5Z}hhrBanYkki?#&5{ z5!2FQmJz;D`QWYIRj%|1Uw6Yv;O8rnl_yO1Kg$(>%J>z_N#*>K1iCY_2B8Kltoo!yP4jfsz zQM%07xN>dy1Oawx0a`Lc1bGq^*_{<%d+-0ydz}9Oz5$Udh4W#rw6B@|_px93Q@TAt zpm3k6GF{)=e1%xy8*LZ4Y_pFak)*?x�MVG0r7lC$=)W^b|X0JQOz9ZE<8 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 Date: Tue, 10 Sep 2024 21:40:39 +0200 Subject: [PATCH 19/20] keybind bullshittery --- .../java/com/hbm/items/IEquipReceiver.java | 3 +- src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/weapon/ItemCrucible.java | 2 +- .../com/hbm/items/weapon/ItemGunBase.java | 2 +- .../com/hbm/items/weapon/sedna/GunConfig.java | 22 +++++++-- .../{ItemGunBase.java => ItemGunBaseNT.java} | 29 +++++++++++- .../com/hbm/items/weapon/sedna/Receiver.java | 2 +- .../sedna/{ => factory}/GunFactory.java | 11 +++-- .../weapon/sedna/factory/GunStateDecider.java | 34 +++++++------- .../hbm/items/weapon/sedna/factory/Lego.java | 47 +++++++++++++++---- .../sedna/mags/MagazineStandardBase.java | 10 ++-- .../java/com/hbm/main/ModEventHandler.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 21 +++++++++ .../packet/toclient/GunAnimationPacket.java | 30 ++++++++++++ .../item/weapon/sedna/ItemRenderDebug.java | 27 +++++++++-- .../weapon/sedna/ItemRenderWeaponBase.java | 4 +- 16 files changed, 194 insertions(+), 54 deletions(-) rename src/main/java/com/hbm/items/weapon/sedna/{ItemGunBase.java => ItemGunBaseNT.java} (86%) rename src/main/java/com/hbm/items/weapon/sedna/{ => factory}/GunFactory.java (76%) diff --git a/src/main/java/com/hbm/items/IEquipReceiver.java b/src/main/java/com/hbm/items/IEquipReceiver.java index 1f0c76ecd..62746e4b0 100644 --- a/src/main/java/com/hbm/items/IEquipReceiver.java +++ b/src/main/java/com/hbm/items/IEquipReceiver.java @@ -1,9 +1,10 @@ package com.hbm.items; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; public interface IEquipReceiver { - public void onEquip(EntityPlayer player); + public void onEquip(EntityPlayer player, ItemStack stack); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index caf07f784..4305c7155 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -36,7 +36,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.*; import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.items.weapon.ItemMissile.MissileFuel; import com.hbm.items.weapon.ItemMissile.MissileTier; -import com.hbm.items.weapon.sedna.GunFactory; +import com.hbm.items.weapon.sedna.factory.GunFactory; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.potion.HbmPotion; diff --git a/src/main/java/com/hbm/items/weapon/ItemCrucible.java b/src/main/java/com/hbm/items/weapon/ItemCrucible.java index 14e0818cf..b2201d593 100644 --- a/src/main/java/com/hbm/items/weapon/ItemCrucible.java +++ b/src/main/java/com/hbm/items/weapon/ItemCrucible.java @@ -34,7 +34,7 @@ public class ItemCrucible extends ItemSwordAbility implements IEquipReceiver { } @Override - public void onEquip(EntityPlayer player) { + public void onEquip(EntityPlayer player, ItemStack stack) { if(!(player instanceof EntityPlayerMP)) return; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 56e9d3be8..cfefa2357 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -801,7 +801,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu } @Override - public void onEquip(EntityPlayer player) { + public void onEquip(EntityPlayer player, ItemStack stack) { if(!mainConfig.equipSound.isEmpty() && !player.worldObj.isRemote) { player.worldObj.playSoundAtEntity(player, mainConfig.equipSound, 1, 1); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java index e76ffd55e..896d09832 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/GunConfig.java @@ -1,8 +1,11 @@ package com.hbm.items.weapon.sedna; import java.util.function.BiConsumer; +import java.util.function.BiFunction; -import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.item.ItemStack; @@ -16,6 +19,7 @@ public class GunConfig { protected float durability; protected int drawDuration = 0; protected Crosshair crosshair; + protected boolean reloadAnimationsSequential; /** Lambda functions for clicking shit */ protected BiConsumer onPressPrimary; protected BiConsumer onPressSecondary; @@ -28,13 +32,16 @@ public class GunConfig { protected BiConsumer onReleaseReload; /** The engine for the state machine that determines the gun's overall behavior */ protected BiConsumer decider; + /** Lambda that returns the relevant animation for the given params */ + protected BiFunction animations; /* GETTERS */ - public Receiver[] getReceivers(ItemStack stack) { return receivers; } - public float getDurability(ItemStack stack) { return durability; } - public int getDrawDuration(ItemStack stack) { return drawDuration; } - public Crosshair getCrosshair(ItemStack stack) { return crosshair; } + public Receiver[] getReceivers(ItemStack stack) { return receivers; } + public float getDurability(ItemStack stack) { return durability; } + public int getDrawDuration(ItemStack stack) { return drawDuration; } + public Crosshair getCrosshair(ItemStack stack) { return crosshair; } + public boolean getReloadAnimSequential(ItemStack stack) { return reloadAnimationsSequential; } public BiConsumer getPressPrimary(ItemStack stack) { return this.onPressPrimary; } public BiConsumer getPressSecondary(ItemStack stack) { return this.onPressSecondary; } @@ -48,6 +55,8 @@ public class GunConfig { public BiConsumer getDecider(ItemStack stack) { return this.decider; } + public BiFunction getAnims(ItemStack stack) { return this.animations; } + /* SETTERS */ public GunConfig rec(Receiver... receivers) { this.receivers = receivers; return this; } @@ -69,4 +78,7 @@ public class GunConfig { //decider public GunConfig decider(BiConsumer lambda) { this.decider = lambda; return this; } + + //anims + public GunConfig anim(BiFunction lambda) { this.animations = lambda; return this; } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java similarity index 86% rename from src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java rename to src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index 0dcbb7478..b7376acc8 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -1,19 +1,29 @@ package com.hbm.items.weapon.sedna; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.interfaces.IItemHUD; +import com.hbm.items.IEquipReceiver; import com.hbm.items.IKeybindReceiver; import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.render.util.RenderScreenOverlay; import com.hbm.util.EnumUtil; +import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; -public class ItemGunBase extends Item implements IKeybindReceiver { +public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipReceiver, IItemHUD { public static final String KEY_DRAWN = "drawn"; public static final String KEY_AIMING = "aiming"; @@ -34,7 +44,7 @@ public class ItemGunBase extends Item implements IKeybindReceiver { return config_DNA; } - public ItemGunBase(GunConfig cfg) { + public ItemGunBaseNT(GunConfig cfg) { this.setMaxStackSize(1); this.config_DNA = cfg; } @@ -68,6 +78,11 @@ public class ItemGunBase extends Item implements IKeybindReceiver { if(keybind == EnumKeybind.RELOAD && !newState && getReloadKey(stack)) { if(config.getReleaseReload(stack) != null) config.getReleaseReload(stack).accept(stack, ctx); this.setReloadKey(stack, newState); return; } } + @Override + public void onEquip(EntityPlayer player, ItemStack stack) { + if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.EQUIP.ordinal()), (EntityPlayerMP) player); + } + @Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean isHeld) { @@ -152,4 +167,14 @@ public class ItemGunBase extends Item implements IKeybindReceiver { this.player = player; } } + + @Override + public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) { + if(type == ElementType.CROSSHAIRS) { + event.setCanceled(true); + if(aimingProgress >= 1F) return; + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + RenderScreenOverlay.renderCustomCrosshairs(event.resolution, Minecraft.getMinecraft().ingameGUI, gun.getConfig(stack).getCrosshair(stack)); + } + } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java index 777ae34f6..b5320d003 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/Receiver.java +++ b/src/main/java/com/hbm/items/weapon/sedna/Receiver.java @@ -4,7 +4,7 @@ import java.util.function.BiConsumer; import java.util.function.BiFunction; import com.hbm.handler.CasingEjector; -import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.mags.IMagazine; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java similarity index 76% rename from src/main/java/com/hbm/items/weapon/sedna/GunFactory.java rename to src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 9644efb0a..424da2c29 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -1,8 +1,10 @@ -package com.hbm.items.weapon.sedna; +package com.hbm.items.weapon.sedna.factory; import com.hbm.items.ModItems; -import com.hbm.items.weapon.sedna.factory.GunStateDecider; -import com.hbm.items.weapon.sedna.factory.Lego; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.mags.MagazineRevolverDrum; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -18,7 +20,7 @@ public class GunFactory { BulletConfig ammo_debug = new BulletConfig().setItem(ModItems.ammo_debug); - ModItems.gun_debug = new ItemGunBase(new GunConfig() + ModItems.gun_debug = new ItemGunBaseNT(new GunConfig() .dura(600).draw(15).crosshair(Crosshair.L_CLASSIC) .rec(new Receiver() .dmg(10F).delay(10).mag(new MagazineRevolverDrum(0, 6).addConfigs(ammo_debug)) @@ -27,6 +29,7 @@ public class GunFactory { .pp(Lego.LAMBDA_STANDARD_FIRE) .pt(Lego.LAMBDA_TOGGLE_AIM) .decider(GunStateDecider.LAMBDA_STANDARD_DECIDER) + .anim(Lego.LAMBDA_DEBUG_ANIMS) ).setUnlocalizedName("gun_debug").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java index 590231996..d4d3fdc8d 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunStateDecider.java @@ -4,10 +4,10 @@ import java.util.function.BiConsumer; import java.util.function.BooleanSupplier; import com.hbm.items.weapon.sedna.GunConfig; -import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.items.weapon.sedna.Receiver; -import com.hbm.items.weapon.sedna.ItemGunBase.GunState; -import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -20,10 +20,10 @@ public class GunStateDecider { * It supports draw delays as well as semi and auto fire */ public static BiConsumer LAMBDA_STANDARD_DECIDER = (stack, ctx) -> { - GunState lastState = ItemGunBase.getState(stack); + GunState lastState = ItemGunBaseNT.getState(stack); deciderStandardFinishDraw(stack, lastState); deciderStandardReload(stack, ctx, lastState, 0); - deciderAutoRefire(stack, ctx, lastState, 0, () -> { return ItemGunBase.getPrimary(stack); }); + deciderAutoRefire(stack, ctx, lastState, 0, () -> { return ItemGunBaseNT.getPrimary(stack); }); }; /** Transitions the gun from DRAWING to IDLE */ @@ -31,8 +31,8 @@ public class GunStateDecider { //transition to idle if(lastState == GunState.DRAWING) { - ItemGunBase.setState(stack, GunState.IDLE); - ItemGunBase.setTimer(stack, 0); + ItemGunBaseNT.setState(stack, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, 0); } } @@ -49,12 +49,12 @@ public class GunStateDecider { //if after reloading the gun can still reload, assume a tube mag and resume reloading if(cfg.getReceivers(stack)[recIndex].getMagazine(stack).canReload(stack, player)) { - ItemGunBase.setState(stack, GunState.RELOADING); - ItemGunBase.setTimer(stack, cfg.getReceivers(stack)[recIndex].getReloadDuration(stack)); + ItemGunBaseNT.setState(stack, GunState.RELOADING); + ItemGunBaseNT.setTimer(stack, cfg.getReceivers(stack)[recIndex].getReloadDuration(stack)); //if no more reloading can be done, go idle } else { - ItemGunBase.setState(stack, GunState.IDLE); - ItemGunBase.setTimer(stack, 0); + ItemGunBaseNT.setState(stack, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, 0); } } } @@ -72,17 +72,17 @@ public class GunStateDecider { //if there's a bullet loaded, fire again if(rec.getCanFire(stack).apply(stack, ctx)) { rec.getOnFire(stack).accept(stack, ctx); - ItemGunBase.setState(stack, GunState.JUST_FIRED); - ItemGunBase.setTimer(stack, rec.getDelayAfterFire(stack)); + ItemGunBaseNT.setState(stack, GunState.JUST_FIRED); + ItemGunBaseNT.setTimer(stack, rec.getDelayAfterFire(stack)); //if not, revert to idle } else { - ItemGunBase.setState(stack, GunState.IDLE); - ItemGunBase.setTimer(stack, 0); + ItemGunBaseNT.setState(stack, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, 0); } //if not, go idle } else { - ItemGunBase.setState(stack, GunState.IDLE); - ItemGunBase.setTimer(stack, 0); + ItemGunBaseNT.setState(stack, GunState.IDLE); + ItemGunBaseNT.setTimer(stack, 0); } } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 312433444..54100485e 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -3,11 +3,17 @@ package com.hbm.items.weapon.sedna.factory; import java.util.function.BiConsumer; import java.util.function.BiFunction; -import com.hbm.items.weapon.sedna.ItemGunBase; -import com.hbm.items.weapon.sedna.ItemGunBase.GunState; -import com.hbm.items.weapon.sedna.ItemGunBase.LambdaContext; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.GunState; +import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.GunAnimationPacket; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; /** @@ -21,9 +27,9 @@ public class Lego { * If IDLE and the mag of receiver 0 can be loaded, set state to RELOADING. Used by keybinds. */ public static BiConsumer LAMBDA_STANDARD_RELOAD = (stack, ctx) -> { - if(ItemGunBase.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getMagazine(stack).canReload(stack, ctx.player)) { - ItemGunBase.setState(stack, GunState.RELOADING); - ItemGunBase.setTimer(stack, ctx.config.getReceivers(stack)[0].getReloadDuration(stack)); + if(ItemGunBaseNT.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getMagazine(stack).canReload(stack, ctx.player)) { + ItemGunBaseNT.setState(stack, GunState.RELOADING); + ItemGunBaseNT.setTimer(stack, ctx.config.getReceivers(stack)[0].getReloadDuration(stack)); } }; @@ -31,15 +37,15 @@ public class Lego { * If IDLE and ammo is loaded, fire and set to JUST_FIRED. */ public static BiConsumer LAMBDA_STANDARD_FIRE = (stack, ctx) -> { - if(ItemGunBase.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getCanFire(stack).apply(stack, ctx)) { - ItemGunBase.setState(stack, GunState.JUST_FIRED); - ItemGunBase.setTimer(stack, ctx.config.getReceivers(stack)[0].getDelayAfterFire(stack)); + if(ItemGunBaseNT.getState(stack) == GunState.IDLE && ctx.config.getReceivers(stack)[0].getCanFire(stack).apply(stack, ctx)) { + ItemGunBaseNT.setState(stack, GunState.JUST_FIRED); + ItemGunBaseNT.setTimer(stack, ctx.config.getReceivers(stack)[0].getDelayAfterFire(stack)); ctx.config.getReceivers(stack)[0].getOnFire(stack).accept(stack, ctx); } }; /** Toggles isAiming. Used by keybinds. */ - public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { ItemGunBase.setIsAiming(stack, !ItemGunBase.getIsAiming(stack)); }; + public static BiConsumer LAMBDA_TOGGLE_AIM = (stack, ctx) -> { ItemGunBaseNT.setIsAiming(stack, !ItemGunBaseNT.getIsAiming(stack)); }; /** Returns true if the mag has ammo in it. Used by keybind functions on whether to fire, and deciders on whether to trigger a refire, */ public static BiFunction LAMBDA_STANDARD_CAN_FIRE = (stack, ctx) -> { return ctx.config.getReceivers(stack)[0].getMagazine(stack).getAmount(stack) > 0; }; @@ -53,5 +59,26 @@ public class Lego { public static BiConsumer LAMBDA_DEBUG_FIRE = (stack, ctx) -> { EntityPlayer player = ctx.player; player.worldObj.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.shotgunShoot", 1F, 1F); + if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); + }; + public static BiFunction LAMBDA_DEBUG_ANIMS = (stack, type) -> { + switch(type) { + case CYCLE: + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addKeyframePosition(0, 0, 0, 50).addKeyframePosition(0, 0, -3, 50).addKeyframePosition(0, 0, 0, 250)) + .addBus("HAMMER", new BusAnimationSequence().addKeyframePosition(0, 0, 1, 50).addKeyframePosition(0, 0, 1, 300).addKeyframePosition(0, 0, 0, 200)) + .addBus("DRUM", new BusAnimationSequence().addKeyframePosition(0, 0, 1, 50)); + case CYCLE_EMPTY: break; + case ALT_CYCLE: break; + case EQUIP: return new BusAnimation().addBus("ROTATE", new BusAnimationSequence().addKeyframePosition(-360, 0, 0, 350)); + case RELOAD: break; + case RELOAD_CYCLE: break; + case RELOAD_EMPTY: break; + case RELOAD_END: break; + case SPINDOWN: break; + case SPINUP: break; + } + + return null; }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java index 01c83b24f..818833767 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java +++ b/src/main/java/com/hbm/items/weapon/sedna/mags/MagazineStandardBase.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.items.weapon.sedna.BulletConfig; -import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import net.minecraft.item.ItemStack; @@ -49,10 +49,10 @@ public abstract class MagazineStandardBase implements IMagazine { @Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); } // MAG TYPE // - public static int getMagType(ItemStack stack, int index) { return ItemGunBase.getValueInt(stack, KEY_MAG_TYPE + index); } - public static void setMagType(ItemStack stack, int index, int value) { ItemGunBase.setValueInt(stack, KEY_MAG_TYPE + index, value); } + public static int getMagType(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_TYPE + index); } + public static void setMagType(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_TYPE + index, value); } // MAG COUNT // - public static int getMagCount(ItemStack stack, int index) { return ItemGunBase.getValueInt(stack, KEY_MAG_COUNT + index); } - public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBase.setValueInt(stack, KEY_MAG_COUNT + index, value); } + public static int getMagCount(ItemStack stack, int index) { return ItemGunBaseNT.getValueInt(stack, KEY_MAG_COUNT + index); } + public static void setMagCount(ItemStack stack, int index, int value) { ItemGunBaseNT.setValueInt(stack, KEY_MAG_COUNT + index, value); } } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 2141b15e3..7e57bef15 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -475,7 +475,7 @@ public class ModEventHandler { && (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem()) && event.entityLiving.getHeldItem().getItem() instanceof IEquipReceiver) { - ((IEquipReceiver)event.entityLiving.getHeldItem().getItem()).onEquip((EntityPlayer) event.entityLiving); + ((IEquipReceiver)event.entityLiving.getHeldItem().getItem()).onEquip((EntityPlayer) event.entityLiving, event.entityLiving.getHeldItem()); } for(int i = 1; i < 5; i++) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 236d53157..eab51c13d 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -24,6 +24,7 @@ import com.hbm.handler.ArmorModHandler; import com.hbm.handler.GunConfiguration; import com.hbm.handler.HTTPHandler; import com.hbm.handler.HazmatRegistry; +import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; import com.hbm.hazard.HazardSystem; import com.hbm.interfaces.IHoldableWeapon; @@ -43,6 +44,7 @@ import com.hbm.items.machine.ItemDepletedFuel; import com.hbm.items.machine.ItemFluidDuct; import com.hbm.items.machine.ItemRBMKPellet; import com.hbm.items.weapon.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; @@ -103,6 +105,7 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.GameSettings; import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -1076,6 +1079,24 @@ public class ModEventHandlerClient { } } } + + boolean gunKey = keyCode == HbmKeybinds.gunPrimaryKey.getKeyCode() || keyCode == HbmKeybinds.gunSecondaryKey.getKeyCode() || + keyCode == HbmKeybinds.gunTertiaryKey.getKeyCode() || keyCode == HbmKeybinds.reloadKey.getKeyCode(); + + /* Shoot in favor of attacking */ + if(gunKey && keyCode == mc.gameSettings.keyBindAttack.getKeyCode()) { + mc.gameSettings.keyBindAttack.pressed = false; + mc.gameSettings.keyBindAttack.pressTime = 0; + } + + EntityPlayer player = mc.thePlayer; + + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemGunBaseNT) { + if(gunKey && keyCode == mc.gameSettings.keyBindPickBlock.getKeyCode()) { + mc.gameSettings.keyBindPickBlock.pressed = false; + mc.gameSettings.keyBindPickBlock.pressTime = 0; + } + } } } diff --git a/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java index 58389f2f4..377ac340b 100644 --- a/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java +++ b/src/main/java/com/hbm/packet/toclient/GunAnimationPacket.java @@ -1,6 +1,10 @@ package com.hbm.packet.toclient; +import java.util.function.BiFunction; + import com.hbm.items.weapon.ItemGunBase; +import com.hbm.items.weapon.sedna.GunConfig; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.HbmAnimations; import com.hbm.render.anim.HbmAnimations.AnimType; @@ -51,6 +55,10 @@ public class GunAnimationPacket implements IMessage { if(stack == null) return null; + if(stack.getItem() instanceof com.hbm.items.weapon.sedna.ItemGunBaseNT) { + handleSedna(player, stack, slot, AnimType.values()[m.type]); + } + if(!(stack.getItem() instanceof ItemGunBase)) return null; @@ -81,5 +89,27 @@ public class GunAnimationPacket implements IMessage { return null; } + + public static void handleSedna(EntityPlayer player, ItemStack stack, int slot, AnimType type) { + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + GunConfig config = gun.getConfig(stack); + + BiFunction anims = config.getAnims(stack); + BusAnimation animation = anims.apply(stack, type); + + if(animation == null && type == AnimType.RELOAD_EMPTY) { + animation = anims.apply(stack, AnimType.RELOAD); + } + if(animation == null && (type == AnimType.ALT_CYCLE || type == AnimType.CYCLE_EMPTY)) { + animation = anims.apply(stack, AnimType.CYCLE); + } + + if(animation != null) { + Minecraft.getMinecraft().entityRenderer.itemRenderer.resetEquippedProgress(); + Minecraft.getMinecraft().entityRenderer.itemRenderer.itemToRender = stack; + boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY; + HbmAnimations.hotbar[slot] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && config.getReloadAnimSequential(stack)); + } + } } } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java index 446246d44..49635e669 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderDebug.java @@ -2,8 +2,9 @@ package com.hbm.render.item.weapon.sedna; import org.lwjgl.opengl.GL11; -import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; import net.minecraft.item.ItemStack; @@ -11,7 +12,7 @@ import net.minecraft.item.ItemStack; public class ItemRenderDebug extends ItemRenderWeaponBase { @Override - protected float getTurnMagnitude(ItemStack stack) { return ItemGunBase.getIsAiming(stack) ? 2.5F : -0.25F; } + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.25F; } @Override protected void setupFirstPerson(ItemStack stack) { @@ -30,14 +31,34 @@ public class ItemRenderDebug extends ItemRenderWeaponBase { GL11.glScaled(scale, scale, scale); GL11.glRotated(90, 0, 1, 0); + double[] equipSpin = HbmAnimations.getRelevantTransformation("ROTATE"); + GL11.glRotated(equipSpin[0], 0, 0, 1); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(recoil[0], recoil[1], recoil[2]); + GL11.glRotated(recoil[2] * 10, 0, 0, 1); + GL11.glShadeModel(GL11.GL_SMOOTH); Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex); ResourceManager.lilmac.renderPart("Gun"); + + GL11.glPushMatrix(); + ResourceManager.lilmac.renderPart("Pivot"); + GL11.glTranslated(0, 1.75, 0); + GL11.glRotated(HbmAnimations.getRelevantTransformation("DRUM")[2] * -60, 1, 0, 0); + GL11.glTranslated(0, -1.75, 0); ResourceManager.lilmac.renderPart("Cylinder"); ResourceManager.lilmac.renderPart("Bullets"); ResourceManager.lilmac.renderPart("Casings"); - ResourceManager.lilmac.renderPart("Pivot"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); /// HAMMER /// + GL11.glTranslated(4, 1.25, 0); + GL11.glRotated(-30 + 30 * HbmAnimations.getRelevantTransformation("HAMMER")[2], 0, 0, 1); + GL11.glTranslated(-4, -1.25, 0); ResourceManager.lilmac.renderPart("Hammer"); + GL11.glPopMatrix(); + GL11.glShadeModel(GL11.GL_FLAT); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index ae12214d2..dc9a64b8b 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -4,7 +4,7 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import org.lwjgl.util.glu.Project; -import com.hbm.items.weapon.sedna.ItemGunBase; +import com.hbm.items.weapon.sedna.ItemGunBaseNT; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -220,7 +220,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { public abstract void renderOther(ItemStack stack, ItemRenderType type); public static void standardAimingTransform(ItemStack stack, double sX, double sY, double sZ, double aX, double aY, double aZ) { - float aimingProgress = ItemGunBase.prevAimingProgress + (ItemGunBase.aimingProgress - ItemGunBase.prevAimingProgress) * interp; + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; double x = sX + (aX - sX) * aimingProgress; double y = sY + (aY - sY) * aimingProgress; double z = sZ + (aZ - sZ) * aimingProgress; From 85925a54dc1bdaa3554f057e83caec59a5f71e19 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 12 Sep 2024 16:21:56 +0200 Subject: [PATCH 20/20] fixes --- changelog | 6 ++- .../inventory/recipes/ArcFurnaceRecipes.java | 2 +- src/main/java/com/hbm/itempool/ItemPool.java | 4 ++ .../java/com/hbm/itempool/ItemPoolsPile.java | 39 ++++++++++++++ src/main/java/com/hbm/util/LootGenerator.java | 51 +++++-------------- 5 files changed, 63 insertions(+), 39 deletions(-) diff --git a/changelog b/changelog index 6b89db494..198a7f873 100644 --- a/changelog +++ b/changelog @@ -1,2 +1,6 @@ +## Changed +* Most loot piles now have configurable loot pools + ## Fixed -* Fixed some things not using variable max charge for armor mods, like static pads and DNT nanosuit tooltips \ No newline at end of file +* Fixed some things not using variable max charge for armor mods, like static pads and DNT nanosuit tooltips +* Fixed arc furnace recipe config parser breaking when reading fluid recipes \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java index eaafa0638..c32d31a52 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcFurnaceRecipes.java @@ -233,7 +233,7 @@ public class ArcFurnaceRecipes extends SerializableRecipe { List mats = new ArrayList(); for(JsonElement fluid : fluids) { JsonArray matStack = fluid.getAsJsonArray(); - MaterialStack stack = new MaterialStack(Mats.matById.get(matStack.get(0).getAsInt()), matStack.get(1).getAsInt()); + MaterialStack stack = new MaterialStack(Mats.matByName.get(matStack.get(0).getAsString()), matStack.get(1).getAsInt()); if(stack.material.smeltable == SmeltingBehavior.SMELTABLE) { mats.add(stack); } diff --git a/src/main/java/com/hbm/itempool/ItemPool.java b/src/main/java/com/hbm/itempool/ItemPool.java index 0d4fd2d11..a112f92a5 100644 --- a/src/main/java/com/hbm/itempool/ItemPool.java +++ b/src/main/java/com/hbm/itempool/ItemPool.java @@ -65,6 +65,10 @@ public class ItemPool { return pool.pool; } + public static ItemStack getStack(String pool, Random rand) { + return getStack(ItemPool.getPool(pool), rand); + } + public static ItemStack getStack(WeightedRandomChestContent[] pool, Random rand) { WeightedRandomChestContent weighted = (WeightedRandomChestContent) WeightedRandom.getRandomItem(rand, pool); ItemStack stack = weighted.theItemId.copy(); diff --git a/src/main/java/com/hbm/itempool/ItemPoolsPile.java b/src/main/java/com/hbm/itempool/ItemPoolsPile.java index 46bf7adca..254016416 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsPile.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsPile.java @@ -2,6 +2,7 @@ package com.hbm.itempool; import static com.hbm.lib.HbmChestContents.weighted; +import com.hbm.inventory.material.Mats; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; @@ -14,6 +15,13 @@ public class ItemPoolsPile { public static final String POOL_PILE_HIVE = "POOL_PILE_HIVE"; public static final String POOL_PILE_BONES = "POOL_PILE_BONES"; public static final String POOL_PILE_CAPS = "POOL_PILE_CAPS"; + public static final String POOL_PILE_MED_SYRINGE = "POOL_PILE_MED_SYRINGE"; + public static final String POOL_PILE_MED_PILLS = "POOL_PILE_MED_PILLS"; + public static final String POOL_PILE_MAKESHIFT_GUN = "POOL_PILE_MAKESHIFT_GUN"; + public static final String POOL_PILE_MAKESHIFT_WRENCH = "POOL_PILE_MAKESHIFT_WRENCH"; + public static final String POOL_PILE_MAKESHIFT_PLATES = "POOL_PILE_MAKESHIFT_PLATES"; + public static final String POOL_PILE_MAKESHIFT_WIRE = "POOL_PILE_MAKESHIFT_WIRE"; + public static final String POOL_PILE_NUKE_STORAGE = "POOL_PILE_NUKE_STORAGE"; public static void init() { @@ -69,5 +77,36 @@ public class ItemPoolsPile { weighted(ModItems.cap_sparkle, 0, 4, 4, 1), }; }}; + + //medicine stashes + new ItemPool(POOL_PILE_MED_SYRINGE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.syringe_metal_stimpak, 0, 1, 1, 10), + weighted(ModItems.syringe_metal_medx, 0, 1, 1, 5), + weighted(ModItems.syringe_metal_psycho, 0, 1, 1, 5), + }; + }}; + new ItemPool(POOL_PILE_MED_PILLS) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.radaway, 0, 1, 1, 10), + weighted(ModItems.radx, 0, 1, 1, 10), + weighted(ModItems.iv_blood, 0, 1, 1, 15), + weighted(ModItems.siox, 0, 1, 1, 5), + }; + }}; + + //makeshift gun + new ItemPool(POOL_PILE_MAKESHIFT_GUN) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.gun_lever_action, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_WRENCH) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wrench, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_PLATES) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.plate_combine_steel, 0, 1, 1, 10) }; }}; + new ItemPool(POOL_PILE_MAKESHIFT_WIRE) {{ this.pool = new WeightedRandomChestContent[] { weighted(ModItems.wire_fine, Mats.MAT_ALUMINIUM.id, 1, 1, 10) }; }}; + + new ItemPool(POOL_PILE_NUKE_STORAGE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.ammo_nuke, AmmoFatman.STOCK.ordinal(), 1, 1, 10), + weighted(ModItems.ammo_nuke, AmmoFatman.LOW.ordinal(), 1, 1, 50), + weighted(ModItems.ammo_nuke, AmmoFatman.SAFE.ordinal(), 1, 1, 50), + }; + }}; } } diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index bf96fb050..ee4f64899 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -4,7 +4,6 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; -import com.hbm.inventory.material.Mats; import com.hbm.itempool.ItemPool; import com.hbm.itempool.ItemPoolsPile; import com.hbm.items.ModItems; @@ -12,7 +11,6 @@ import com.hbm.items.special.ItemBookLore; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -46,12 +44,9 @@ public class LootGenerator { else loot.addItem(new ItemStack(ModItems.ammo_rocket), -0.25, 0, -0.25); - for(int i = 0; i < 4; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, 0.25); - for(int i = 0; i < 2; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.syringe_metal_stimpak, 1), -0.25, i * 0.03125, 0.25); - for(int i = 0; i < 6; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, -0.25); + for(int i = 0; i < 4; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, 0.25); + for(int i = 0; i < 2; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.syringe_metal_stimpak, 1), -0.25, i * 0.03125, 0.25); + for(int i = 0; i < 6; i++) addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.cap_nuka, 2), 0.125, i * 0.03125, -0.25); } } @@ -61,15 +56,8 @@ public class LootGenerator { if(loot != null && loot.items.isEmpty()) { - for(int i = 0; i < 4; i++) { - int type = world.rand.nextInt(4); - Item syringe = type < 2 ? ModItems.syringe_metal_stimpak : type == 2 ? ModItems.syringe_metal_medx : ModItems.syringe_metal_psycho; - addItemWithDeviation(loot, world.rand, new ItemStack(syringe), 0.125, i * 0.03125, 0.25); - } - - int type = world.rand.nextInt(8); - Item syringe = type < 2 ? ModItems.radaway : type < 4 ? ModItems.radx : type < 7 ? ModItems.iv_blood : ModItems.siox; - addItemWithDeviation(loot, world.rand, new ItemStack(syringe), -0.25, 0, -0.125); + for(int i = 0; i < 4; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MED_SYRINGE, world.rand), 0.125, i * 0.03125, 0.25); + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MED_PILLS, world.rand), -0.25, 0, -0.125); } } @@ -84,7 +72,7 @@ public class LootGenerator { int count = world.rand.nextInt(5) + 3; for(int k = 0; k < count; k++) { - addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPool.getPool(ItemPoolsPile.POOL_PILE_CAPS), world.rand), i * 0.3125, k * 0.03125, j * 0.3125); + addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_CAPS, world.rand), i * 0.3125, k * 0.03125, j * 0.3125); } } } @@ -98,20 +86,15 @@ public class LootGenerator { if(loot != null && loot.items.isEmpty()) { boolean r = world.rand.nextBoolean(); - if(r) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.gun_lever_action), 0.125, 0.025, 0.25); + if(r) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_GUN, world.rand), 0.125, 0.025, 0.25); - if(!r || world.rand.nextBoolean()) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.wrench), -0.25, 0, -0.28125); + if(!r || world.rand.nextBoolean()) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_WRENCH, world.rand), -0.25, 0, -0.28125); int count = world.rand.nextInt(2) + 1; - for(int i = 0; i < count; i++) { - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.plate_steel), -0.25, i * 0.03125, 0.3125); - } + for(int i = 0; i < count; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_PLATES, world.rand), -0.25, i * 0.03125, 0.3125); count = world.rand.nextInt(2) + 2; - for(int i = 0; i < count; i++) - addItemWithDeviation(loot, world.rand, new ItemStack(ModItems.wire_fine, 1, Mats.MAT_ALUMINIUM.id), 0.25, i * 0.03125, 0.1875); + for(int i = 0; i < count; i++) addItemWithDeviation(loot, world.rand, ItemPool.getStack(ItemPoolsPile.POOL_PILE_MAKESHIFT_WIRE, world.rand), 0.25, i * 0.03125, 0.1875); } } @@ -121,15 +104,11 @@ public class LootGenerator { if(loot != null && loot.items.isEmpty()) { - boolean memes = world.rand.nextInt(10) == 0; - for(int i = 0; i < 4; i++) { for(int j = 0; j < 4; j++) { - if(world.rand.nextBoolean() || memes) { - int type = world.rand.nextInt(11); - AmmoFatman nuke = memes ? AmmoFatman.PUMPKIN : type == 0 ? AmmoFatman.STOCK : type <= 5 ? AmmoFatman.LOW : AmmoFatman.SAFE; - loot.addItem(ModItems.ammo_nuke.stackFromEnum(nuke), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); + if(world.rand.nextBoolean()) { + loot.addItem(ItemPool.getStack(ItemPoolsPile.POOL_PILE_NUKE_STORAGE, world.rand), -0.375 + i * 0.25, 0, -0.375 + j * 0.25); } } } @@ -170,12 +149,10 @@ public class LootGenerator { addItemWithDeviation(loot, world.rand, book, 0, 0, -0.25); int count = world.rand.nextInt(3) + 2; - for(int k = 0; k < count; k++) - addItemWithDeviation(loot, world.rand, new ItemStack(Items.book), -0.25, k * 0.03125, 0.25); + for(int k = 0; k < count; k++) addItemWithDeviation(loot, world.rand, new ItemStack(Items.book), -0.25, k * 0.03125, 0.25); count = world.rand.nextInt(2) + 1; - for(int k = 0; k < count; k++) - addItemWithDeviation(loot, world.rand, new ItemStack(Items.paper), 0.25, k * 0.03125, 0.125); + for(int k = 0; k < count; k++) addItemWithDeviation(loot, world.rand, new ItemStack(Items.paper), 0.25, k * 0.03125, 0.125); } }