diff --git a/changelog b/changelog index da40438bd..b69c7887b 100644 --- a/changelog +++ b/changelog @@ -13,6 +13,13 @@ * Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand * This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again * Piles that overheat will explode, throwing flaming graphite everywhere +* Satelllite Ground Station + * Can relay RoR commands to connected satellites and satellite info back to RoR +* Platemetal + * Decorative connected texture metal block + * Comes in all colors except brown + * NTM poop theory debunked + * Make a nice clanking noise when placing and breaking ## Changed * Updated all oil well GUI textures @@ -29,6 +36,19 @@ * The small pylon now has a steel variant * Items in the battery socket which previously didn't show up in the socket's model are now rendered * Reduced the cost for the heavy stirling engine +* Removed the satellite interface item for being basically completely useless +* Updated the satellite ID manager texture and recipe +* Satellite ID chips are now soldered +* Overhauled all satellites + * Satellites now use one item ID with meta, most satellites now have new textures + * Satellites can now be connected to ground stations and controlled with RoR commands + * Satellites now have manual pages detailing the commands + * The recipes have been updated, they now use mostly common parts and no longer feature the satellite base and heads items which are welded together + * Legacy satellites still function and can still be launched +* The PWR's coolant levels can now be read with RoR +* Soyuz and related assembly recipes now use 25kHE/t instead of just 100 +* Updated the GUI textures for the refinery, various particle accelerator parts and a few other machines +* Glyphid hive blocks now use state-of-the-fart flesh sounds ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI @@ -38,4 +58,5 @@ * Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible * This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons * Fixed some issues regarding the new crane structure -* Fixed skeletonizer ashes floating over the floor after landing \ No newline at end of file +* Fixed skeletonizer ashes floating over the floor after landing +* Fixed backface rendering of the capacitor frames when inserted in the battery socket diff --git a/gradle.properties b/gradle.properties index fb5115c4e..283f402c4 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=5758 +mod_build_number=5768 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java index 37819b5df..b359be51a 100644 --- a/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java +++ b/src/main/java/api/hbm/redstoneoverradio/IRORInteractive.java @@ -34,6 +34,10 @@ public interface IRORInteractive extends IRORInfo { return params; } + public static int parseInt(String val) { + return parseInt(val, Integer.MIN_VALUE, Integer.MAX_VALUE); + } + public static int parseInt(String val, int min, int max) { int result = 0; try { result = Integer.parseInt(val); } catch(Exception x) { diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index a79493e26..fe84c3b58 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -14,7 +14,7 @@ public class BlockEnumMulti extends BlockMulti { public Class theEnum; public boolean multiName; - private boolean multiTexture; + protected boolean multiTexture; public BlockEnumMulti(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { super(mat); diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index f2cef0da2..e6a4b5644 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -26,7 +26,12 @@ public class BlockEnums { public static enum EnumStalagmiteType { SULFUR, - ASBESTOS + ASBESTOS, + ICE, + SNOW, + GLYPHID1, + GLYPHID2, + GLYPHID3 } public static enum EnumCMMaterials { @@ -49,15 +54,15 @@ public class BlockEnums { GOLD, SCHRABIDIUM } - + /** DECO / STRUCTURE ENUMS */ //i apologize in advance - + public static enum TileType { LARGE, SMALL } - + public static enum LightstoneType { UNREFINED, TILE, @@ -65,11 +70,11 @@ public class BlockEnums { BRICKS_CHISELED, CHISELED } - + public static enum DecoComputerEnum { IBM_300PL } - + public static enum DecoCabinetEnum { GREEN, STEEL @@ -81,4 +86,21 @@ public class BlockEnums { HALOGEN } + public static enum PlatemetalType { + BASE, + BLACK, + WHITE, + RED, + GREEN, + LIGHT_GRAY, + BLUE, + PURPLE, + CYAN, + PINK, + LIME, + YELLOW, + LIGHT_BLUE, + MAGENTA, + ORANGE + } } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index d8d83ad42..aa7328075 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -255,6 +255,7 @@ public class ModBlocks { public static Block deco_rusty_steel; public static Block deco_lead; public static Block deco_beryllium; + public static Block platemetal; public static Block deco_asbestos; public static Block deco_rbmk; public static Block deco_rbmk_smooth; @@ -1430,6 +1431,7 @@ public class ModBlocks { deco_rusty_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_rusty_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_rusty_steel"); deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead"); deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium"); + platemetal = new BlockEnumMultiCT(Material.iron, BlockEnums.PlatemetalType.class, true, true).setBlockName("platemetal").setCreativeTab(MainRegistry.blockTab).setStepSound(ModSoundTypes.platemetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":platemetal"); deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos"); deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank_top"); @@ -1642,8 +1644,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); - glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); - glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); + glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -2585,6 +2587,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_rusty_steel, deco_rusty_steel.getUnlocalizedName()); GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName()); GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); + GameRegistry.registerBlock(platemetal, ItemBlockBlastInfo.class, platemetal.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); @@ -2915,7 +2918,7 @@ public class ModBlocks { GameRegistry.registerBlock(red_barrel, ItemBlockLore.class, red_barrel.getUnlocalizedName()); GameRegistry.registerBlock(pink_barrel, ItemBlockLore.class, pink_barrel.getUnlocalizedName()); GameRegistry.registerBlock(lox_barrel, ItemBlockLore.class, lox_barrel.getUnlocalizedName()); - GameRegistry.registerBlock(taint_barrel, taint_barrel.getUnlocalizedName()); + GameRegistry.registerBlock(taint_barrel, ItemBlockLore.class, taint_barrel.getUnlocalizedName()); GameRegistry.registerBlock(yellow_barrel, yellow_barrel.getUnlocalizedName()); GameRegistry.registerBlock(vitrified_barrel, vitrified_barrel.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/ModSoundTypes.java b/src/main/java/com/hbm/blocks/ModSoundTypes.java index 85f42f310..2bd3b8d6c 100644 --- a/src/main/java/com/hbm/blocks/ModSoundTypes.java +++ b/src/main/java/com/hbm/blocks/ModSoundTypes.java @@ -10,4 +10,6 @@ public class ModSoundTypes { if(type == ModSoundType.SubType.BREAK) in -= 0.15F; return in + rand.nextFloat() * 0.2F; }); + public static final ModSoundType flesh = ModSoundType.placeBreakStep("hbm:block.flesh", "hbm:block.flesh", "hbm:block.flesh", 0.5F, 1.0F); + public static final ModSoundType platemetal = ModSoundType.placeBreakStep("hbm:block.platemetalPlace", "hbm:block.platemetalPlace", "hbm:step.platemetal", 1.0F, 1.0F); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java b/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java new file mode 100644 index 000000000..670080ba5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java @@ -0,0 +1,65 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.render.block.ct.CT; +import com.hbm.render.block.ct.CTStitchReceiver; +import com.hbm.render.block.ct.IBlockCT; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockEnumMultiCT extends BlockEnumMulti implements IBlockCT { + + @SideOnly(Side.CLIENT) + public CTStitchReceiver[] receivers; + // im planning ts for shi like deco blocks n shit when the time comes + public BlockEnumMultiCT(Material mat, Class theEnum, boolean multiName, boolean multiTexture) + { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public int getRenderType() { + return CT.renderID; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + if(multiTexture) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + this.receivers = new CTStitchReceiver[enums.length]; + for(int i = 0; i < icons.length; i++) + { + Enum num = enums[i]; + String texName = this.getTextureMultiName(num); + this.icons[i] = reg.registerIcon(texName); + this.receivers[i] = IBlockCT.primeReceiver(reg, texName, this.icons[i]); + } + } + else + { + this.blockIcon = reg.registerIcon(this.getTextureName()); + this.receivers = new CTStitchReceiver[1]; + this.receivers[0] = IBlockCT.primeReceiver(reg, this.getTextureName(), this.blockIcon); + } + } + + @Override + public IIcon[] getFragments(IBlockAccess world, int x, int y, int z, int side) + { + int meta = world.getBlockMetadata(x, y, z); + return receivers[meta % receivers.length].fragCache; + + } + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) { + return this == block; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java index 5db100280..c595e2481 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -10,6 +10,7 @@ import com.hbm.items.ModItems; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; @@ -43,6 +44,8 @@ public class BlockStalagmite extends BlockEnumMulti { switch(meta) { case 0: return ModItems.sulfur; case 1: return ModItems.powder_asbestos; + case 2: return ModItems.powder_ice; + case 3: return Items.snowball; } return null; diff --git a/src/main/java/com/hbm/blocks/generic/RedBarrel.java b/src/main/java/com/hbm/blocks/generic/RedBarrel.java index d1acf2af2..c3cbe7df4 100644 --- a/src/main/java/com/hbm/blocks/generic/RedBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/RedBarrel.java @@ -17,7 +17,6 @@ import net.minecraft.world.World; public class RedBarrel extends BlockDetonatable { - // Flammable barrels also explode when shot public RedBarrel(Material material, boolean flammable) { super(material, flammable ? 2 : 0, flammable ? 15 : 0, 100, true, flammable); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java index 443778855..6b36e4a11 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineSatLink.java +++ b/src/main/java/com/hbm/blocks/machine/MachineSatLink.java @@ -19,6 +19,7 @@ import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; public class MachineSatLink extends BlockDummyable implements ILookOverlay { @@ -36,6 +37,17 @@ public class MachineSatLink extends BlockDummyable implements ILookOverlay { @Override public int[] getDimensions() { return new int[] {6, 0, 1, 0, 1, 0}; } @Override public int getOffset() { return 0; } + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX + rot.offsetX, y, z - dir.offsetZ + rot.offsetZ); + } + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java index 6b552b6f2..0f1723339 100644 --- a/src/main/java/com/hbm/commands/CommandSatellites.java +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -3,7 +3,7 @@ package com.hbm.commands; import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; @@ -38,7 +38,7 @@ public class CommandSatellites extends CommandBase { case "orbit": EntityPlayer player = getCommandSenderAsPlayer(sender); if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { - Satellite.orbit(player.worldObj, Satellite.getIDFromItem(player.getHeldItem().getItem()), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ); + XSatelliteRegistry.orbit(player.worldObj, player.getHeldItem(), ISatChip.getFreqS(player.getHeldItem()), player.posX, player.posY, player.posZ); player.getHeldItem().stackSize -= 1; sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); } else { diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index e20d2410c..82d3c673c 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -42,6 +42,8 @@ public class StructureConfig { public static int lighthouseSpawnWeight = 4; public static int oilRigSpawnWeight = 5; public static int broadcastingTowerSpawnWeight = 25; + public static int waterPumpSpawnWeight = 15; + public static int deadDishSmallSpawnWeight = 15; public static int beachedPatrolSpawnWeight = 15; public static int vertibirdSpawnWeight = 6; public static int vertibirdCrashedSpawnWeight = 10; @@ -117,6 +119,8 @@ public class StructureConfig { craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.39_craneSpawnWeight", "Spawn weight for crane structure.", 20); broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25); towerBaseSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.41_towerBaseSpawnWeight", "Spawn weight for tower base.", 30); + waterPumpSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.42_waterPumpSpawnWeight", "Spawn weight for water pump structure.", 15); + deadDishSmallSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.43_deadDishSmallSpawnWeight", "Spawn weight for dead dish small structure.", 15); structureMinChunks = CommonConfig.setDef(structureMinChunks, 4); diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index e6085233b..bf1264841 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -3,7 +3,6 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; -import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import com.hbm.items.machine.ItemPWRFuel.EnumPWRFuel; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; @@ -87,14 +86,6 @@ public class RodRecipes { CraftingManager.addShapelessAuto(new ItemStack(ModItems.nugget_lead, 24), new Object[] { new ItemStack(ModItems.rod_quad, 1, BreedingRodType.LEAD.ordinal()) }); addBreedingRod(U, ModItems.billet_uranium, BreedingRodType.URANIUM); - - //Pile fuel - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_uranium, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', U.billet() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_source, 1), new Object[] { " U ", "PUP", " U ", 'P', IRON.plate(), 'U', ModItems.billet_ra226be }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_boron, 1), new Object[] { " B ", " W ", " B ", 'B', B.ingot(), 'W', KEY_PLANKS }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.pile_rod_lithium, 1), new Object[] { ModItems.cell_empty, LI.ingot() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.pile_rod_detector, 1), new Object[] { " B ", "CM ", " B ", 'B', B.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_fuel_empty, 1), new Object[] { "ZRZ", "Z Z", "ZRZ", 'Z', ZR.ingot(), 'R', ModItems.rod_quad_empty }); addRBMKRod(U, ModItems.rbmk_fuel_ueu); addRBMKRod(ModItems.billet_uranium_fuel, ModItems.rbmk_fuel_meu); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index ae6341aad..e65363c1e 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -92,6 +92,7 @@ public class EntityMappings { addEntity(EntityBombletZeta.class, "entity_zeta", 1000); addEntity(EntityOrangeFX.class, "entity_agent_orange", 1000); addEntity(EntityDeathBlast.class, "entity_laser_blast", 1000); + addEntity(EntityOrbitalLaser.class, "entity_orbital_laser", 1000); addEntity(EntityBurningFOEQ.class, "entity_burning_foeq", 1000); addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 9d1a45f73..fed741c36 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -1,7 +1,5 @@ package com.hbm.entity.logic; -import com.hbm.entity.projectile.EntityBulletBaseNT; -import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.threading.PacketThreading; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -10,15 +8,14 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; import net.minecraft.world.World; public class EntityDeathBlast extends Entity { public static final int maxAge = 60; - public EntityDeathBlast(World p_i1582_1_) { - super(p_i1582_1_); + public EntityDeathBlast(World world) { + super(world); this.ignoreFrustumCheck = true; } @@ -39,20 +36,6 @@ public class EntityDeathBlast extends Entity { worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFacNoRad(worldObj, 40, posX, posY, posZ)); - int count = 100; - for(int i = 0; i < count; i++) { - - Vec3 vec = Vec3.createVectorHelper(0.2, 0, 0); - vec.rotateAroundY((float)(2 * Math.PI * i / (float)count)); - - EntityBulletBaseNT laser = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); - laser.setPosition(posX, posY + 2, posZ); - laser.motionX = vec.xCoord; - laser.motionZ = vec.zCoord; - laser.motionY = -0.01; - worldObj.spawnEntityInWorld(laser); - } - NBTTagCompound data = new NBTTagCompound(); data.setString("type", "muke"); PacketThreading.createAllAroundThreadedPacket(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 250)); diff --git a/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java b/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java new file mode 100644 index 000000000..5be844472 --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java @@ -0,0 +1,68 @@ +package com.hbm.entity.logic; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.util.DamageResistanceHandler.DamageClass; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class EntityOrbitalLaser extends Entity { + + public static final int maxAge = 5; + + public EntityOrbitalLaser(World world) { + super(world); + this.ignoreFrustumCheck = true; + } + + @Override + protected void entityInit() { } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public void onUpdate() { + + if(this.ticksExisted >= maxAge && !worldObj.isRemote) this.setDead(); + } + + public void explode() { + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 5F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 1_000F).setupPiercing(50F, 0.5F).setDamageClass(DamageClass.LASER)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); + vnt.explode(); + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } +} diff --git a/src/main/java/com/hbm/entity/missile/EntitySoyuz.java b/src/main/java/com/hbm/entity/missile/EntitySoyuz.java index 4561fd73d..4b0a5926c 100644 --- a/src/main/java/com/hbm/entity/missile/EntitySoyuz.java +++ b/src/main/java/com/hbm/entity/missile/EntitySoyuz.java @@ -7,7 +7,7 @@ import com.hbm.items.ISatChip; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -113,10 +113,8 @@ public class EntitySoyuz extends Entity { } if(load.getItem() instanceof ISatChip) { - - int freq = ISatChip.getFreqS(load); - - Satellite.orbit(worldObj, Satellite.getIDFromItem(load.getItem()), freq, posX, posY, posZ); + int freq = ISatChip.getFreqS(load); + XSatelliteRegistry.orbit(worldObj, load, freq, posX, posY, posZ); } } } diff --git a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java index 1acd56e2a..ece0e8f79 100644 --- a/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CentrifugeRecipeHandler.java @@ -20,7 +20,7 @@ public class CentrifugeRecipeHandler extends NEIUniversalHandler { @Override public void loadTransferRects() { super.loadTransferRects(); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(56, 0, 80, 38), "ntmCentrifuge")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(63, 7, 80, 38), "ntmCentrifuge")); guiGui.add(GUIMachineCentrifuge.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } diff --git a/src/main/java/com/hbm/handler/nei/MixerHandler.java b/src/main/java/com/hbm/handler/nei/MixerHandler.java index b93ff9ca1..3cee3b5a8 100644 --- a/src/main/java/com/hbm/handler/nei/MixerHandler.java +++ b/src/main/java/com/hbm/handler/nei/MixerHandler.java @@ -20,7 +20,7 @@ public class MixerHandler extends NEIUniversalHandler { @Override public void loadTransferRects() { super.loadTransferRects(); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(57, 25, 52, 44), "ntmMixer")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(66, 20, 52, 44), "ntmMixer")); guiGui.add(GUIMixer.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } diff --git a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java index 2bf1e9e6e..d7f8f1016 100644 --- a/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/RefineryRecipeHandler.java @@ -162,7 +162,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom guiGui = new LinkedList>(); transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery")); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(34, 34, 14, 34), "refinery")); guiGui.add(GUIMachineRefinery.class); RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); diff --git a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java index 58535bd9b..b06fe6acb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCentrifuge.java @@ -15,29 +15,33 @@ import net.minecraft.item.ItemStack; public class ContainerCentrifuge extends Container { - private TileEntityMachineCentrifuge diFurnace; + private TileEntityMachineCentrifuge centrifuge; public ContainerCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { - diFurnace = tedf; - - this.addSlotToContainer(new Slot(tedf, 0, 36, 50)); - this.addSlotToContainer(new Slot(tedf, 1, 9, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 63, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 83, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 103, 50)); - this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 123, 50)); - this.addSlotToContainer(new SlotUpgrade(tedf, 6, 149, 22)); - this.addSlotToContainer(new SlotUpgrade(tedf, 7, 149, 40)); + this.centrifuge = tedf; + + // Input + this.addSlotToContainer(new Slot(tedf, 0, 44, 57)); + // Battery + this.addSlotToContainer(new Slot(tedf, 1, 8, 57)); + // Outputs + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 70, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 90, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 110, 57)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 130, 57)); + // Upgrades + this.addSlotToContainer(new SlotUpgrade(tedf, 6, 156, 31)); + this.addSlotToContainer(new SlotUpgrade(tedf, 7, 156, 49)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 107 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162)); + this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 165)); } } @@ -83,7 +87,7 @@ public class ContainerCentrifuge extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); + return centrifuge.isUseableByPlayer(player); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java index b47d2b182..590c67a32 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineRefinery.java @@ -19,40 +19,40 @@ public class ContainerMachineRefinery extends Container { testNuke = tedf; //Battery - this.addSlotToContainer(new Slot(tedf, 0, 186, 72)); + this.addSlotToContainer(new Slot(tedf, 0, 158, 108)); //Canister Input - this.addSlotToContainer(new Slot(tedf, 1, 8, 99)); + this.addSlotToContainer(new Slot(tedf, 1, 12, 90)); //Canister Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 12, 108)); //Heavy Oil Input - this.addSlotToContainer(new Slot(tedf, 3, 86, 99)); + this.addSlotToContainer(new Slot(tedf, 3, 64, 90)); //Heavy Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 86, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 64, 108)); //Naphtha Input - this.addSlotToContainer(new Slot(tedf, 5, 106, 99)); + this.addSlotToContainer(new Slot(tedf, 5, 82, 90)); //Naphtha Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 106, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 82, 108)); //Light Oil Input - this.addSlotToContainer(new Slot(tedf, 7, 126, 99)); + this.addSlotToContainer(new Slot(tedf, 7, 100, 90)); //Light Oil Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 126, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 100, 108)); //Petroleum Input - this.addSlotToContainer(new Slot(tedf, 9, 146, 99)); + this.addSlotToContainer(new Slot(tedf, 9, 118, 90)); //Petroleum Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 146, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 118, 108)); //Sulfur Output - this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 58, 119)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 38, 90)); //Fluid ID - this.addSlotToContainer(new Slot(tedf, 12, 186, 106)); + this.addSlotToContainer(new Slot(tedf, 12, 38, 108)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 150 + i * 18)); + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 158 + i * 18)); } } for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 208)); + this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 216)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerMixer.java b/src/main/java/com/hbm/inventory/container/ContainerMixer.java index 0242b916b..2640f02bb 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMixer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMixer.java @@ -18,15 +18,15 @@ public class ContainerMixer extends Container { public ContainerMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { this.mixer = mixer; - //Battery - this.addSlotToContainer(new Slot(mixer, 0, 23, 77)); - //Item Input - this.addSlotToContainer(new Slot(mixer, 1, 43, 77)); - //Fluid ID - this.addSlotToContainer(new Slot(mixer, 2, 117, 77)); - //Upgrades - this.addSlotToContainer(new Slot(mixer, 3, 137, 24)); - this.addSlotToContainer(new Slot(mixer, 4, 137, 42)); + // Battery + this.addSlotToContainer(new Slot(mixer, 0, 12, 72)); + // Item Input + this.addSlotToContainer(new Slot(mixer, 1, 52, 72)); + // Fluid ID + this.addSlotToContainer(new Slot(mixer, 2, 126, 72)); + // Upgrades + this.addSlotToContainer(new Slot(mixer, 3, 148, 18)); + this.addSlotToContainer(new Slot(mixer, 4, 148, 36)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerPASource.java b/src/main/java/com/hbm/inventory/container/ContainerPASource.java index f9d41eb6b..c70eb7d11 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerPASource.java +++ b/src/main/java/com/hbm/inventory/container/ContainerPASource.java @@ -22,11 +22,11 @@ public class ContainerPASource extends Container { //Battery this.addSlotToContainer(new Slot(tile, 0, 8, 72)); //Inputs - this.addSlotToContainer(new Slot(tile, 1, 62, 18)); - this.addSlotToContainer(new Slot(tile, 2, 80, 18)); + this.addSlotToContainer(new Slot(tile, 1, 62, 16)); + this.addSlotToContainer(new Slot(tile, 2, 80, 16)); //Containers - this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 45)); - this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 45)); + this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 43)); + this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 43)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java index 788b1a4d3..bf64fcaf8 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCentrifuge.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCentrifuge; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineCentrifuge; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -18,25 +19,32 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { public GUIMachineCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) { super(new ContainerCentrifuge(invPlayer, tedf)); - centrifuge = tedf; - this.xSize = 176; - this.ySize = 186; + this.centrifuge = tedf; + this.xSize = 182; + this.ySize = 189; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 9, guiTop + 13, 16, 34, centrifuge.power, centrifuge.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 37, centrifuge.power, centrifuge.maxPower); + + String[] upgradeText = new String[4]; + upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); + upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); + upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); + upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 16, 8, 8, mouseX, mouseY, upgradeText); } @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - //String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName()); + String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName()); - //this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 + 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752); } @Override @@ -46,8 +54,8 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); if(centrifuge.hasPower()) { - int i1 = (int) centrifuge.getPowerRemainingScaled(35); - drawTexturedModalRect(guiLeft + 9, guiTop + 48 - i1, 176, 35 - i1, 16, i1); + int i1 = (int) centrifuge.getPowerRemainingScaled(37); + drawTexturedModalRect(guiLeft + 8, guiTop + 55 - i1, 182, 37 - i1, 16, i1); } if(centrifuge.isProcessing()) { @@ -55,11 +63,13 @@ public class GUIMachineCentrifuge extends GuiInfoContainer { for(int i = 0; i < 4; i++) { int h = Math.min(p, 36); - drawTexturedModalRect(guiLeft + 65 + i * 20, guiTop + 50 - h, 176, 71 - h, 12, h); + drawTexturedModalRect(guiLeft + 72 + i * 20, guiTop + 57 - h, 182, 73 - h, 12, h); p -= h; if(p <= 0) break; } } + + this.drawInfoPanel(guiLeft + 160, guiTop + 16, 8, 8, 8); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java index b3aae3272..0dc1383e2 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineRefinery.java @@ -26,53 +26,47 @@ public class GUIMachineRefinery extends GuiInfoContainer { super(new ContainerMachineRefinery(invPlayer, tedf)); refinery = tedf; - this.xSize = 210; - this.ySize = 231; + this.xSize = 182; + this.ySize = 240; } @Override public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 30, guiTop + 27, 21, 104); // Render tooltip for column. - refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 86, guiTop + 42, 16, 52); - refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 106, guiTop + 42, 16, 52); - refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 42, 16, 52); - refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 146, guiTop + 42, 16, 52); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 52, refinery.power, refinery.maxPower); + refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 12, guiTop + 17, 16, 70); // Render tooltip for column. + refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 64, guiTop + 35, 16, 52); + refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 82, guiTop + 35, 16, 52); + refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 100, guiTop + 35, 16, 52); + refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 118, guiTop + 35, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 158, guiTop + 18, 16, 88, refinery.power, refinery.maxPower); } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - 34/2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752); } @Override protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 350, 256); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); // power - int j = (int)refinery.getPowerScaled(50); - func_146110_a(guiLeft + 186, guiTop + 69 - j, 210, 52 - j, 16, j, 350, 256); + int j = (int)refinery.getPowerScaled(88); + drawTexturedModalRect(guiLeft + 158, guiTop + 106 - j, 182, 88 - j, 16, j); OpenGlHelper.glBlendFunc(770, 771, 1, 0); // default // input tank FluidTank inputOil = refinery.tanks[0]; if (inputOil.getFill() != 0) { - - int targetHeight = inputOil.getFill() * 101 / inputOil.getMaxFill(); - Color color = new Color(inputOil.getTankType().getColor()); - - GL11.glEnable(GL11.GL_BLEND); - GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 33, guiTop + 130 - targetHeight, 226, 101 - targetHeight, 16, targetHeight, 350, 256); - GL11.glDisable(GL11.GL_BLEND); + refinery.tanks[0].renderTank(guiLeft + 12, guiTop + 88, this.zLevel, 16, 70); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); } // fucking kgjhgdfjgdhjfg @@ -84,10 +78,10 @@ public class GUIMachineRefinery extends GuiInfoContainer { RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType()); if(recipe == null) { - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256); + func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256); } else { // Heavy Oil Products @@ -95,31 +89,31 @@ public class GUIMachineRefinery extends GuiInfoContainer { GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256); // Naphtha Oil Products color = new Color(recipe.outputs[1].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256); // Light Oil Products color = new Color(recipe.outputs[2].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256); // Gaseous Products color = new Color(recipe.outputs[3].type.getColor()); GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F); - func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256); + func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256); GL11.glDisable(GL11.GL_BLEND); GL11.glColor4f(1F, 1F, 1F, 1F); } // output tanks - refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[2].renderTank(guiLeft + 106, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[3].renderTank(guiLeft + 126, guiTop + 95, this.zLevel, 16, 52); - refinery.tanks[4].renderTank(guiLeft + 146, guiTop + 95, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 64, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[2].renderTank(guiLeft + 82, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[3].renderTank(guiLeft + 100, guiTop + 88, this.zLevel, 16, 52); + refinery.tanks[4].renderTank(guiLeft + 118, guiTop + 88, this.zLevel, 16, 52); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java index c6783fa0a..60e0954bf 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineSatLinker.java @@ -30,10 +30,10 @@ public class GUIMachineSatLinker extends GuiInfoContainer { super.drawScreen(mouseX, mouseY, f); String[] chipText = I18nUtil.resolveKeyArray("desc.gui.satlinker.chip"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft - 8, guiTop + 36 + 16, chipText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28, 16, 16, guiLeft + 20, guiTop + 28 + 16, chipText); String[] randomText = I18nUtil.resolveKeyArray("desc.gui.satlinker.random"); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, randomText); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 12, guiTop + 28 + 16, 16, 16, guiLeft + 20, guiTop + 28 + 32, randomText); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index 974e41635..b570d5c5c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -12,6 +12,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.machine.TileEntityMachineMixer; +import com.hbm.util.i18n.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -28,8 +29,8 @@ public class GUIMixer extends GuiInfoContainer { public GUIMixer(InventoryPlayer player, TileEntityMachineMixer mixer) { super(new ContainerMixer(player, mixer)); - this.mixer = mixer; + this.mixer = mixer; this.xSize = 176; this.ySize = 204; } @@ -38,7 +39,14 @@ public class GUIMixer extends GuiInfoContainer { public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); - this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower()); + this.drawElectricityInfo(this, x, y, guiLeft + 12, guiTop + 18, 16, 52, mixer.getPower(), mixer.getMaxPower()); + + String[] upgradeText = new String[4]; + upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade"); + upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed"); + upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power"); + upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive"); + this.drawCustomInfoStat(x, y, guiLeft + 152, guiTop + 55, 8, 8, x, y, upgradeText); MixerRecipe[] recipes = MixerRecipes.getOutput(mixer.tanks[2].getTankType()); @@ -50,19 +58,19 @@ public class GUIMixer extends GuiInfoContainer { if(recipe.input2 != null) label.add("-" + recipe.input2.type.getLocalizedName()); if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName()); label.add(EnumChatFormatting.RED + "Click to change!"); - this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label); + this.drawCustomInfoStat(x, y, guiLeft + 71, guiTop + 17, 12, 12, x, y, label); } - mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52); - mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52); - mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52); + mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 18, 7, 52); + mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 61, guiTop + 18, 7, 52); + mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 126, guiTop + 18, 16, 52); } @Override protected void mouseClicked(int x, int y, int i) { super.mouseClicked(x, y, i); - if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 22 < y && guiTop + 22 + 12 >= y) { + if(guiLeft + 71 <= x && guiLeft + 71 + 12 > x && guiTop + 17 < y && guiTop + 17 + 12 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); NBTTagCompound data = new NBTTagCompound(); @@ -73,9 +81,9 @@ public class GUIMixer extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer( int i, int j) { - String name = this.mixer.hasCustomInventoryName() ? this.mixer.getInventoryName() : I18n.format(this.mixer.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + + this.fontRendererObj.drawString(name, this.xSize / 2 + 40 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -85,16 +93,18 @@ public class GUIMixer extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int) (mixer.getPower() * 53 / mixer.getMaxPower()); - drawTexturedModalRect(guiLeft + 23, guiTop + 75 - i, 176, 52 - i, 16, i); + int i = (int) (mixer.getPower() * 52 / mixer.getMaxPower()); + drawTexturedModalRect(guiLeft + 12, guiTop + 70 - i, 176, 52 - i, 16, i); if(mixer.processTime > 0 && mixer.progress > 0) { - int j = mixer.progress * 53 / mixer.processTime; - drawTexturedModalRect(guiLeft + 62, guiTop + 36, 192, 0, j, 44); + int j = mixer.progress * 52 / mixer.processTime; + drawTexturedModalRect(guiLeft + 71, guiTop + 31, 192, 0, j, 44); } - mixer.tanks[0].renderTank(guiLeft + 43, guiTop + 75, this.zLevel, 7, 52); - mixer.tanks[1].renderTank(guiLeft + 52, guiTop + 75, this.zLevel, 7, 52); - mixer.tanks[2].renderTank(guiLeft + 117, guiTop + 75, this.zLevel, 16, 52); + mixer.tanks[0].renderTank(guiLeft + 52, guiTop + 70, this.zLevel, 7, 52); + mixer.tanks[1].renderTank(guiLeft + 61, guiTop + 70, this.zLevel, 7, 52); + mixer.tanks[2].renderTank(guiLeft + 126, guiTop + 70, this.zLevel, 16, 52); + + this.drawInfoPanel(guiLeft + 152, guiTop + 55, 8, 8, 8); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java index ac89ca5f1..8e727f945 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPADetector.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPADetector.java @@ -38,7 +38,7 @@ public class GUIPADetector extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 8, 5, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); @@ -57,8 +57,8 @@ public class GUIPADetector extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); int heat = (int) Math.ceil(source.temperature); - if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); - if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + if(heat <= 123) drawTexturedModalRect(guiLeft + 43, guiTop + 18, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 43, guiTop + 43, 176, 8, 8, 8); source.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); source.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java index e66461fb5..56dbd4512 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPAQuadrupole.java @@ -4,8 +4,10 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerPAQuadrupole; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole; +import com.hbm.util.EnumUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; @@ -39,7 +41,7 @@ public class GUIPAQuadrupole extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.quadrupole.hasCustomInventoryName() ? this.quadrupole.getInventoryName() : I18n.format(this.quadrupole.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 118, 22, 4210752); @@ -59,9 +61,16 @@ public class GUIPAQuadrupole extends GuiInfoContainer { int heat = (int) Math.ceil(quadrupole.temperature); if(heat <= 123) drawTexturedModalRect(guiLeft + 75, guiTop + 64, 176, 8, 8, 8); - if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8); + if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil){ + drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8); + EnumCoilType type = null; + type = EnumUtil.grabEnumSafely(EnumCoilType.class, quadrupole.slots[1].getItemDamage()); + if (type == EnumCoilType.GOLD) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 0, 28, 28); + if (type == EnumCoilType.NIOBIUM) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 0, 28, 28); + if (type == EnumCoilType.BSCCO) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 28, 28, 28); + if (type == EnumCoilType.CHLOROPHYTE) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 28, 28, 28); + } if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8); - quadrupole.coolantTanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52); quadrupole.coolantTanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIPASource.java b/src/main/java/com/hbm/inventory/gui/GUIPASource.java index 5f96b496b..17664c940 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIPASource.java +++ b/src/main/java/com/hbm/inventory/gui/GUIPASource.java @@ -46,15 +46,15 @@ public class GUIPASource extends GuiInfoContainer { info.add(EnumChatFormatting.BLUE + "Last momentum: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", source.lastSpeed)); String[] message = I18nUtil.resolveKeyArray("pa." + this.source.state.name().toLowerCase(Locale.US) + ".desc"); for(String s : message) info.add(EnumChatFormatting.YELLOW + s); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, info); - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 16, 10, 10, mouseX, mouseY, info); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 28, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation"); } @Override protected void mouseClicked(int x, int y, int i) { super.mouseClicked(x, y, i); - if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) { + if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 28 < y && guiTop + 28 + 10 >= y) { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); NBTTagCompound data = new NBTTagCompound(); data.setBoolean("cancel", true); @@ -66,7 +66,7 @@ public class GUIPASource extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 0xffffff); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752); @@ -88,8 +88,8 @@ public class GUIPASource extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j); int heat = (int) Math.ceil(source.temperature); - if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8); - if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8); + if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 16, 176, 8, 8, 8); + if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 41, 176, 8, 8, 8); int color = source.state.color; float red = (color & 0xff0000) >> 16; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java index e7f4fe2bb..4931be365 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenSatCoord.java @@ -4,19 +4,18 @@ import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; -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.toserver.SatCoordPacket; -import com.hbm.saveddata.satellites.Satellite.CoordActions; -import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.packet.toserver.NBTItemControlPacket; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; public class GUIScreenSatCoord extends GuiScreen { @@ -27,14 +26,15 @@ public class GUIScreenSatCoord extends GuiScreen { protected int guiLeft; protected int guiTop; private final EntityPlayer player; + protected ItemStack device; private GuiTextField xField; private GuiTextField yField; private GuiTextField zField; public GUIScreenSatCoord(EntityPlayer player) { - this.player = player; + this.device = player.getHeldItem(); } public void initGui() { @@ -63,37 +63,24 @@ public class GUIScreenSatCoord extends GuiScreen { protected void mouseClicked(int i, int j, int k) { super.mouseClicked(i, j, k); - if(ItemSatInterface.currentSat == null) - return; + if(!device.hasTagCompound() || !device.stackTagCompound.getBoolean(ItemSatInterface.KEY_NBT_CONNECTED)) return; this.xField.mouseClicked(i, j, k); - if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - this.yField.mouseClicked(i, j, k); + this.yField.mouseClicked(i, j, k); this.zField.mouseClicked(i, j, k); if(i >= this.guiLeft + 133 && i < this.guiLeft + 133 + 18 && j >= this.guiTop + 52 && j < this.guiTop + 52 + 18 && player != null) { if(NumberUtils.isNumber(xField.getText()) && NumberUtils.isNumber(zField.getText())) { - - if(ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) { - - if(NumberUtils.isNumber(yField.getText())) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - PacketDispatcher.wrapper.sendToServer(new SatCoordPacket((int) Double.parseDouble(xField.getText()), (int) Double.parseDouble(yField.getText()), - (int) Double.parseDouble(zField.getText()), ISatChip.getFreqS(player.getHeldItem()))); - - this.mc.thePlayer.closeScreen(); - } - - } else { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - PacketDispatcher.wrapper - .sendToServer(new SatCoordPacket((int) Double.parseDouble(xField.getText()), 0, (int) Double.parseDouble(zField.getText()), ISatChip.getFreqS(player.getHeldItem()))); - - this.mc.thePlayer.closeScreen(); - } + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("x", (int) Double.parseDouble(xField.getText())); + data.setInteger("z", (int) Double.parseDouble(zField.getText())); + if(NumberUtils.isNumber(yField.getText())) data.setInteger("y", (int) Double.parseDouble(yField.getText())); + PacketDispatcher.wrapper.sendToServer(new NBTItemControlPacket(data)); + + this.mc.thePlayer.closeScreen(); } } } @@ -108,16 +95,10 @@ public class GUIScreenSatCoord extends GuiScreen { GL11.glEnable(GL11.GL_LIGHTING); } - @Override - public boolean doesGuiPauseGame() { - return false; - } - protected void drawGuiContainerForegroundLayer(int i, int j) { this.xField.drawTextBox(); - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - this.yField.drawTextBox(); + this.yField.drawTextBox(); this.zField.drawTextBox(); } @@ -126,48 +107,34 @@ public class GUIScreenSatCoord extends GuiScreen { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(xField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 16, 0, 126, 54, 18); + if(xField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 16, 0, 126, 54, 18); + if(yField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 126, 54, 18); + if(zField.isFocused()) drawTexturedModalRect(guiLeft + 61, guiTop + 88, 0, 126, 54, 18); - if(yField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 126, 54, 18); - - if(zField.isFocused()) - drawTexturedModalRect(guiLeft + 61, guiTop + 88, 0, 126, 54, 18); - - if(ItemSatInterface.currentSat != null) { - - if(!ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y)) - drawTexturedModalRect(guiLeft + 61, guiTop + 52, 0, 144, 54, 18); + if(device.hasTagCompound() && device.stackTagCompound.getBoolean(ItemSatInterface.KEY_NBT_CONNECTED)) { drawTexturedModalRect(guiLeft + 120, guiTop + 17, 194, 0, 7, 7); - - if(ItemSatInterface.currentSat.satIface == Interfaces.SAT_COORD) { - - drawTexturedModalRect(guiLeft + 120, guiTop + 25, 194, 0, 7, 7); - } + drawTexturedModalRect(guiLeft + 120, guiTop + 25, 194, 0, 7, 7); } } - protected void keyTyped(char p_73869_1_, int p_73869_2_) { + @Override + protected void keyTyped(char c, int k) { - if(this.xField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.coordAcs.contains(CoordActions.HAS_Y) && this.yField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else if(this.zField.textboxKeyTyped(p_73869_1_, p_73869_2_)) { - } else { - - super.keyTyped(p_73869_1_, p_73869_2_); - } - - if(p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) { - this.mc.thePlayer.closeScreen(); - } + if(this.xField.textboxKeyTyped(c, k)) return; + if(this.yField.textboxKeyTyped(c, k)) return; + if(this.zField.textboxKeyTyped(c, k)) return; + + super.keyTyped(c, k); + } + @Override + public boolean doesGuiPauseGame() { + return false; } @Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); } - } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java b/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java deleted file mode 100644 index bba6b5b4f..000000000 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java +++ /dev/null @@ -1,330 +0,0 @@ -package com.hbm.inventory.gui; - -import java.util.Arrays; -import java.util.List; - -import org.lwjgl.opengl.GL11; - -import com.hbm.inventory.recipes.MachineRecipes; -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.toserver.SatLaserPacket; -import com.hbm.saveddata.satellites.Satellite.InterfaceActions; -import com.hbm.saveddata.satellites.Satellite.Interfaces; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; - -public class GUIScreenSatInterface extends GuiScreen { - - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/satellites/gui_sat_interface.png"); - protected int xSize = 216; - protected int ySize = 216; - protected int guiLeft; - protected int guiTop; - private final EntityPlayer player; - int x; - int z; - - public GUIScreenSatInterface(EntityPlayer player) { - - this.player = player; - } - - public void updateScreen() { - } - - protected void mouseClicked(int i, int j, int k) { - - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.CAN_CLICK)) { - - if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { - - mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("hbm:item.techBleep"), 1.0F)); - - int x = this.x - guiLeft + i - 8 - 100; - int z = this.z - guiTop + j - 8 - 100; - PacketDispatcher.wrapper.sendToServer(new SatLaserPacket(x, z, ISatChip.getFreqS(player.getHeldItem()))); - } - } - } - - public void drawScreen(int mouseX, int mouseY, float f) - { - this.drawDefaultBackground(); - this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); - GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(mouseX, mouseY); - GL11.glEnable(GL11.GL_LIGHTING); - } - - public void initGui() - { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; - - x = (int) player.posX; - z = (int) player.posZ; - } - - @Override - public boolean doesGuiPauseGame() { - return false; - } - - protected void drawGuiContainerForegroundLayer(int i, int j) { - - if(ItemSatInterface.currentSat != null && ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.SHOW_COORDS)) { - - if(i >= this.guiLeft + 8 && i < this.guiLeft + 208 && j >= this.guiTop + 8 && j < this.guiTop + 208 && player != null) { - - int x = this.x - guiLeft + i - 8 - 100; - int z = this.z - guiTop + j - 8 - 100; - func_146283_a(Arrays.asList(new String[] { x + " / " + z }), i, j); - } - } - } - - protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - - if(ItemSatInterface.currentSat == null) { - drawNotConnected(); - } else { - - if(ItemSatInterface.currentSat.satIface != Interfaces.SAT_PANEL) { - drawNoService(); - return; - } - - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_MAP)) { - drawMap(); - } - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_ORES)) { - drawScan(); - } - if(ItemSatInterface.currentSat.ifaceAcs.contains(InterfaceActions.HAS_RADAR)) { - drawRadar(); - } - } - } - - private int scanPos = 0; - private long lastMilli = 0; - - private void progresScan() { - - if(lastMilli + 25 < System.currentTimeMillis()) { - lastMilli = System.currentTimeMillis(); - scanPos++; - } - - if(scanPos >= 200) - scanPos -= 200; - } - - private int[][] map = new int[200][200]; - - private void drawMap() { - - World world = player.worldObj; - - for(int i = -100; i < 100; i++) { - int x = this.x + i; - int z = this.z + scanPos - 100; - int y = world.getHeightValue(x, z) - 1; - map[i + 100][scanPos] = world.getBlock(x, y, z).getMaterial().getMaterialMapColor().colorValue; - } - prontMap(); - progresScan(); - } - - private void drawScan() { - - World world = player.worldObj; - - for(int i = -100; i < 100; i++) { - int x = this.x + i; - int z = this.z + scanPos - 100; - - for(int j = 255; j >= 0; j--) { - int c = getColorFromBlock(new ItemStack(world.getBlock(x, j, z), 1, world.getBlockMetadata(x, j, z))); - - if(c != 0) { - map[i + 100][scanPos] = c; - break; - } - } - } - prontMap(); - progresScan(); - } - - private int getColorFromBlock(ItemStack stack) { - - if(stack == null || stack.getItem() == null/* || stack.getItemDamage() < 0*/) - return 0; - - if(MachineRecipes.mODE(stack, "oreCoal")) - return 0x333333; - if(MachineRecipes.mODE(stack, "oreIron")) - return 0xb2aa92; - if(MachineRecipes.mODE(stack, "oreGold")) - return 0xffe460; - if(MachineRecipes.mODE(stack, "oreSilver")) - return 0xe5e5e5; - if(MachineRecipes.mODE(stack, "oreDiamond")) - return 0x6ed5ef; - if(MachineRecipes.mODE(stack, "oreEmerald")) - return 0x6cf756; - if(MachineRecipes.mODE(stack, "oreLapis")) - return 0x092f7a; - if(MachineRecipes.mODE(stack, "oreRedstone")) - return 0xe50000; - if(MachineRecipes.mODE(stack, "oreTin")) - return 0xa09797; - if(MachineRecipes.mODE(stack, "oreCopper")) - return 0xd16208; - if(MachineRecipes.mODE(stack, "oreLead")) - return 0x384b68; - if(MachineRecipes.mODE(stack, "oreAluminum")) - return 0xdbdbdb; - if(MachineRecipes.mODE(stack, "oreTungsten")) - return 0x333333; - if(MachineRecipes.mODE(stack, "oreTitanium")) - return 0xDDDDDD; - if(MachineRecipes.mODE(stack, "oreUranium")) - return 0x3e4f3c; - if(MachineRecipes.mODE(stack, "oreBeryllium")) - return 0x8e8d7d; - if(MachineRecipes.mODE(stack, "oreSulfur")) - return 0x9b9309; - if(MachineRecipes.mODE(stack, "oreSalpeter") || MachineRecipes.mODE(stack, "oreNiter")) - return 0xa5a09d; - if(MachineRecipes.mODE(stack, "oreFluorite")) - return 0xffffff; - if(MachineRecipes.mODE(stack, "oreSchrabidium")) - return 0x1cffff; - if(MachineRecipes.mODE(stack, "oreRareEarth")) - return 0xffcc99; - - return isOre(stack) ? 0xBA00AF : 0x000000; - } - - private static boolean isOre(ItemStack stack) { - - int[] ids = OreDictionary.getOreIDs(new ItemStack(stack.getItem(), 1, stack.getItemDamage())); - - for(int i = 0; i < ids.length; i++) { - - String s = OreDictionary.getOreName(ids[i]); - - if(s.length() > 3 && s.substring(0, 3).equals("ore")) - return true; - } - - return false; - } - - private void drawRadar() { - - List entities = player.worldObj.getEntitiesWithinAABBExcludingEntity(player, AxisAlignedBB.getBoundingBox(player.posX - 100, 0, player.posZ - 100, player.posX + 100, 5000, player.posZ + 100)); - - if(!entities.isEmpty()) { - for(Entity e : entities) { - - if(e.width * e.width * e.height >= 0.5D) { - int x = (int)((e.posX - this.x) / ((double)100 * 2 + 1) * (200D - 8D)) - 4; - int z = (int)((e.posZ - this.z) / ((double)100 * 2 + 1) * (200D - 8D)) - 4 - 9; - - int t = 5; - - //TODO: fix radar screen implementation - /*if(e instanceof EntityMissileBaseAdvanced) { - t = ((EntityMissileBaseAdvanced)e).getTargetType().ordinal(); - }*/ - - if(e instanceof EntityMob) { - t = 6; - } - - if(e instanceof EntityPlayer) { - t = 7; - } - - drawTexturedModalRect(guiLeft + 108 + x, guiTop + 117 + z, 216, 8 * t, 8, 8); - } - } - } - - } - - private void prontMap() { - for(int x = 0; x < 200; x++) { - for(int z = 0; z < 200; z++) { - if(map[x][z] != 0) { - GL11.glColor3ub((byte)((map[x][z] & 0xFF0000) >> 16), (byte)((map[x][z] & 0x00FF00) >> 8), (byte)(map[x][z] & 0x0000FF)); - drawTexturedModalRect(guiLeft + 8 + x, guiTop + 8 + z, 216, 216, 1, 1); - } - } - } - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - } - - private void drawNoService() { - drawTexturedModalRect((this.width - 77) / 2, (this.height - 12) / 2, 0, 228, 77, 12); - } - - private void drawNotConnected() { - drawTexturedModalRect((this.width - 121) / 2, (this.height - 12) / 2, 0, 216, 121, 12); - } - - protected void keyTyped(char p_73869_1_, int p_73869_2_) - { - if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) - { - this.mc.thePlayer.closeScreen(); - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindForward.getKeyCode()) - { - this.z -= 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindBack.getKeyCode()) - { - this.z += 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindLeft.getKeyCode()) - { - this.x -= 50; - map = new int[200][200]; - } - - if (p_73869_2_ == this.mc.gameSettings.keyBindRight.getKeyCode()) - { - this.x += 50; - map = new int[200][200]; - } - - } - -} diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 9521c5457..bc3ebe077 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -111,12 +111,6 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear), 600, 50_000L, new ComparableStack(ModItems.warhead_nuclear), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_nuclear_cluster), 600, 50_000L, new ComparableStack(ModItems.warhead_mirv), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_volcano), 600, 50_000L, new ComparableStack(ModItems.warhead_volcano), new ComparableStack(ModItems.fuel_tank_large), new ComparableStack(ModItems.thruster_large, 3))); - - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_mapper), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_mapper))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_scanner), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_scanner))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_radar), 600, 10_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_radar))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_laser), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_laser))); - recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.sat_resonator), 600, 50_000L, new ComparableStack(ModItems.sat_base), new ComparableStack(ModItems.sat_head_resonator))); } public static HashMap getRecipes() { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java index ad06c04d4..13536e3d0 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -32,6 +32,7 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPACoil.EnumCoilType; import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod; import com.hbm.items.machine.ItemPistons.EnumPistonType; +import com.hbm.items.special.ItemSatellite.EnumSatType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze; import com.hbm.items.weapon.grenade.ItemGrenadeShell.EnumGrenadeShell; @@ -171,10 +172,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE)); this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())) .inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())) - .inputItems(new OreDictStack(PU239.billet(), 3)).setGroup(autoPileRod, INSTANCE)); - this.register(new GenericRecipe("ass.pilergp").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())) - .inputItems(new OreDictStack(PURG.billet(), 3)).setGroup(autoPileRod, INSTANCE)); // powders String autoCyclotron = "autoswitch.cyclotron"; @@ -946,13 +943,13 @@ public class AssemblyMachineRecipes extends GenericRecipes { .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000))); // space - this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1)) + this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 25_000).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1)) .inputItems(new OreDictStack(STEEL.plateWelded(), 16), new ComparableStack(ModItems.upgrade_speed_3), new ComparableStack(ModItems.upgrade_power_3), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.soyuz").setup(6_000, 100).outputItems(new ItemStack(ModItems.missile_soyuz, 1)) + this.register(new GenericRecipe("ass.soyuz").setup(6_000, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz, 1)) .inputItems(new OreDictStack(TI.shell(), 32), new OreDictStack(RUBBER.ingot(), 64), new ComparableStack(ModItems.rocket_fuel, 64), @@ -960,84 +957,76 @@ public class AssemblyMachineRecipes extends GenericRecipes { new ComparableStack(ModItems.thruster_medium, 12), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER), new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.lander").setup(2_400, 100).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1)) + this.register(new GenericRecipe("ass.lander").setup(2_400, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1)) .inputItems(new OreDictStack(AL.shell(), 4), new OreDictStack(RUBBER.ingot(), 16), new ComparableStack(ModItems.rocket_fuel, 16), new ComparableStack(ModItems.thruster_small, 3), new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED), new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz")); - this.register(new GenericRecipe("ass.satellitebase").setup(600, 100).outputItems(new ItemStack(ModItems.sat_base, 1)) - .inputItems(new OreDictStack(RUBBER.ingot(), 12), - new OreDictStack(TI.shell(), 3), + + this.register(new GenericRecipe("ass.spysat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SPY.ordinal())) + .inputItems(new OreDictStack(AL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC), + new ComparableStack(ModItems.part_generic, 8, EnumPartType.GLASS_POLARIZED), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.scansat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SCANNER.ordinal())) + .inputItems(new OreDictStack(AL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new OreDictStack(GOLD.wireDense(), 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.radarsat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.RADAR.ordinal())) + .inputItems(new OreDictStack(GOLD.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.magnetron, 32), + new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER))); + this.register(new GenericRecipe("ass.astrominer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO.ordinal())) + .inputItems(new OreDictStack(BIGMT.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 8), new ComparableStack(ModItems.thruster_medium, 1), - new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.photo_panel, 24), - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satellitemapper").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_mapper, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED), - new ComparableStack(ModBlocks.glass_quartz, 8))); - this.register(new GenericRecipe("ass.satellitescanner").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_scanner, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new OreDictStack(TI.plateCast(), 8), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.magnetron, 8), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal()))); - this.register(new GenericRecipe("ass.satelliteradar").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_radar, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 3), - new OreDictStack(TI.plateCast(), 12), - new ComparableStack(ModItems.magnetron, 12), - new ComparableStack(ModItems.coil_gold, 16), - new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal()))); - this.register(new GenericRecipe("ass.satellitelaser").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_laser, 1)) - .inputItems(new OreDictStack(STEEL.shell(), 6), - new OreDictStack(CU.plateCast(), 24), - new OreDictStack(ANY_HARDPLASTIC.ingot(), 16), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD), - new ComparableStack(ModItems.crystal_diamond, 8), - new ComparableStack(ModBlocks.glass_quartz, 8))); - this.register(new GenericRecipe("ass.satelliteresonator").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_resonator, 1)) - .inputItems(new OreDictStack(STEEL.plateCast(), 6), - new OreDictStack(STAR.ingot(), 12), - new OreDictStack(ANY_PLASTIC.ingot(), 48), + new ComparableStack(ModItems.motor_bismuth, 4), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.lunarminer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR.ordinal())) + .inputItems(new OreDictStack(BIGMT.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 8), + new ComparableStack(ModItems.thruster_medium, 1), + new ComparableStack(ModItems.motor_bismuth, 4), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.orbitallaser").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER.ordinal())) + .inputItems(new OreDictStack(WEAPONSTEEL.shell(), 16), + new ComparableStack(ModItems.photo_panel, 32), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_TANTALUM), + new ComparableStack(ModItems.crystal_redstone, 16), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.deathray").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY.ordinal())) + .inputItems(new OreDictStack(WEAPONSTEEL.shell(), 32), + new OreDictStack(PURG.billet(), 32), + new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_BISMUTH), + new OreDictStack(EMERALD.gem(), 32), + new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CONTROLLER_ADVANCED))); + this.register(new GenericRecipe("ass.xenrelay").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR.ordinal())) + .inputItems(new OreDictStack(GOLD.plateCast(), 16), + new ComparableStack(ModItems.photo_panel, 32), new ComparableStack(ModItems.crystal_xen, 1), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED))); - this.register(new GenericRecipe("ass.satelliterelay").setup(600, 100).outputItems(new ItemStack(ModItems.sat_foeq, 1)) - .inputItems(new OreDictStack(TI.shell(), 3), - new ComparableStack(ModItems.plate_desh, 8), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()), - new ComparableStack(ModItems.photo_panel, 16), - new ComparableStack(ModItems.thruster_nuclear, 1), - new ComparableStack(ModItems.ingot_uranium_fuel, 6), - new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC), + new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BISMOID), + new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE), + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED))); + + this.register(new GenericRecipe("ass.satlink").setup(100, 1_000).outputItems(new ItemStack(ModBlocks.machine_satlink)) + .inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16), + new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.magnetron, 3), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satelliteasteroidminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_miner, 1)) - .inputItems(new OreDictStack(BIGMT.plate(), 24), - new ComparableStack(ModItems.motor_desh, 2), - new ComparableStack(ModItems.drill_titanium, 2), - new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.thruster_small, 1), - new ComparableStack(ModItems.photo_panel, 12), - new ComparableStack(ModItems.centrifuge_element, 4), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); - this.register(new GenericRecipe("ass.satellitelunarminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_lunar_miner, 1)) - .inputItems(new ComparableStack(ModItems.ingot_meteorite, 4), - new ComparableStack(ModItems.plate_desh, 4), - new ComparableStack(ModItems.motor, 2), - new ComparableStack(ModItems.drill_titanium, 2), - new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED), - new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), - new ComparableStack(ModItems.thruster_small, 1), - new ComparableStack(ModItems.photo_panel, 12), - new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM))); + new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER))); this.register(new GenericRecipe("ass.nitra").setupNamed(200, 500) .inputItems(new ComparableStack(ModItems.nitra)) diff --git a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java index 0aef690b3..4849d8426 100644 --- a/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PUREXRecipes.java @@ -71,7 +71,7 @@ public class PUREXRecipes extends GenericRecipes { .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.RGP)) .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) .outputItems(new ItemStack(ModItems.billet_pu_mix, 2), - new ItemStack(ModItems.billet_uranium, 1)) + new ItemStack(ModItems.billet_nuclear_waste, 1)) .setIconToFirstIngredient()); this.register((PUREXRecipe) new PUREXRecipe("purex.pilewaste").setup(40, pilePower).setNameWrapper("purex.recycle").setGroup(autoPile, this) .inputItems(new ComparableStack(ModItems.pile_rod, 1, EnumPileRod.WASTE)) diff --git a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java index dd88e66f6..ef515383a 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolderingRecipes.java @@ -147,6 +147,16 @@ public class SolderingRecipes extends SerializableRecipe { new OreDictStack(PB.wireFine(), 32)} )); } + + recipes.add(new SolderingRecipe(new ItemStack(ModItems.sat_chip), 100, 100, + new AStack[] { + new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CHIP), + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CAPACITOR)}, + new AStack[] { + new ComparableStack(ModItems.circuit, 2, EnumCircuitType.PCB)}, + new AStack[] { + new OreDictStack(PB.wireFine(), 4)} + )); /* * UPGRADES diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index c5c3bd1da..799702a84 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -178,6 +178,7 @@ public class AnvilRecipes extends SerializableRecipe { new AStack[] {new ComparableStack(Blocks.stonebrick, 16), new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(IRON.ingot(), 8), new OreDictStack(CU.ingot(), 8)}, new AnvilOutput(new ItemStack(ModBlocks.machine_annihilator))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.plate(), 1), new AnvilOutput(new ItemStack(ModBlocks.platemetal, 4, 0))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_aluminium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BE.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_beryllium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(PB.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_lead, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION)); @@ -658,6 +659,7 @@ public class AnvilRecipes extends SerializableRecipe { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_lead, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_lead, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_beryllium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_asbestos, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_asbestos, 1))}).setTier(1)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.platemetal, 4, 0), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron, 1))}).setTier(1)); constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModBlocks.heater_firebox), @@ -862,14 +864,6 @@ public class AnvilRecipes extends SerializableRecipe { new OreDictStack(U.billet(), 3), new AnvilOutput[] { new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())), }).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(PU239.billet(), 3), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())), - }).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(PURG.billet(), 3), new AnvilOutput[] { - new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())), - }).setTier(2)); //RBMK constructionRecipes.add(new AnvilConstructionRecipe( diff --git a/src/main/java/com/hbm/items/IItemControlReceiver.java b/src/main/java/com/hbm/items/IItemControlReceiver.java index f51bcec4a..c8a7c0c18 100644 --- a/src/main/java/com/hbm/items/IItemControlReceiver.java +++ b/src/main/java/com/hbm/items/IItemControlReceiver.java @@ -1,9 +1,10 @@ package com.hbm.items; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public interface IItemControlReceiver { - public void receiveControl(ItemStack stack, NBTTagCompound data); + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6fe99b259..6f01e5de3 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -335,7 +335,6 @@ public class ModItems { public static Item plate_desh; public static Item plate_bismuth; public static Item photo_panel; - public static Item sat_base; public static Item thruster_nuclear; public static Item safety_fuse; public static Item part_generic; @@ -631,12 +630,6 @@ public class ModItems { public static Item thruster_medium; public static Item thruster_large; - public static Item sat_head_mapper; - public static Item sat_head_scanner; - public static Item sat_head_radar; - public static Item sat_head_laser; - public static Item sat_head_resonator; - public static Item seg_10; public static Item seg_15; public static Item seg_20; @@ -1334,17 +1327,17 @@ public class ModItems { public static Item missile_soyuz; public static Item missile_soyuz_lander; - public static Item sat_mapper; - public static Item sat_scanner; - public static Item sat_radar; - public static Item sat_laser; - public static Item sat_foeq; - public static Item sat_resonator; - public static Item sat_miner; - public static Item sat_lunar_miner; + public static Item satellite; + @Deprecated public static Item sat_mapper; + @Deprecated public static Item sat_scanner; + @Deprecated public static Item sat_radar; + @Deprecated public static Item sat_laser; + @Deprecated public static Item sat_foeq; + @Deprecated public static Item sat_resonator; + @Deprecated public static Item sat_miner; + @Deprecated public static Item sat_lunar_miner; public static Item sat_gerald; public static Item sat_chip; - public static Item sat_interface; public static Item sat_coord; public static Item sat_designator; public static Item sat_relay; @@ -2191,7 +2184,6 @@ public class ModItems { ingot_solinium = new Item().setUnlocalizedName("ingot_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_solinium"); nugget_solinium = new Item().setUnlocalizedName("nugget_solinium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_solinium"); photo_panel = new Item().setUnlocalizedName("photo_panel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":photo_panel"); - sat_base = new Item().setUnlocalizedName("sat_base").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_base"); thruster_nuclear = new Item().setUnlocalizedName("thruster_nuclear").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_nuclear"); safety_fuse = new Item().setUnlocalizedName("safety_fuse").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":safety_fuse"); part_generic = new ItemGenericPart().setUnlocalizedName("part_generic").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":part_generic"); @@ -2623,12 +2615,6 @@ public class ModItems { thruster_medium = new Item().setUnlocalizedName("thruster_medium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_medium"); thruster_large = new Item().setUnlocalizedName("thruster_large").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":thruster_large"); - sat_head_mapper = new Item().setUnlocalizedName("sat_head_mapper").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_mapper"); - sat_head_scanner = new Item().setUnlocalizedName("sat_head_scanner").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_scanner"); - sat_head_radar = new Item().setUnlocalizedName("sat_head_radar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_radar"); - sat_head_laser = new Item().setUnlocalizedName("sat_head_laser").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_laser"); - sat_head_resonator = new Item().setUnlocalizedName("sat_head_resonator").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":sat_head_resonator"); - seg_10 = new Item().setUnlocalizedName("seg_10").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_10"); seg_15 = new Item().setUnlocalizedName("seg_15").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_15"); seg_20 = new Item().setUnlocalizedName("seg_20").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":seg_20"); @@ -3428,23 +3414,23 @@ public class ModItems { missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); - sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_mapper"); - sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_scanner"); - sat_radar = new ItemSatChip().setUnlocalizedName("sat_radar").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_radar"); - sat_laser = new ItemSatChip().setUnlocalizedName("sat_laser").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_laser"); - sat_foeq = new ItemSatChip().setUnlocalizedName("sat_foeq").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_foeq"); - sat_resonator = new ItemSatChip().setUnlocalizedName("sat_resonator").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_resonator"); - sat_miner = new ItemSatChip().setUnlocalizedName("sat_miner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_miner"); - sat_lunar_miner = new ItemSatChip().setUnlocalizedName("sat_lunar_miner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_lunar_miner"); + satellite = new ItemSatellite().setUnlocalizedName("satellite").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":satellite"); + sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_mapper"); + sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_scanner"); + sat_radar = new ItemSatChip().setUnlocalizedName("sat_radar").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_radar"); + sat_laser = new ItemSatChip().setUnlocalizedName("sat_laser").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_laser"); + sat_foeq = new ItemSatChip().setUnlocalizedName("sat_foeq").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_foeq"); + sat_resonator = new ItemSatChip().setUnlocalizedName("sat_resonator").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_resonator"); + sat_miner = new ItemSatChip().setUnlocalizedName("sat_miner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_miner"); + sat_lunar_miner = new ItemSatChip().setUnlocalizedName("sat_lunar_miner").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":sat_lunar_miner"); sat_gerald = new ItemSatChip().setUnlocalizedName("sat_gerald").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_gerald"); sat_chip = new ItemSatChip().setUnlocalizedName("sat_chip").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_chip"); - 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 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_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F) .setUnlocalizedName("mp_thruster_10_solid"); + mp_thruster_10_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 1.5F, PartSize.SIZE_10).setHealth(15F) .setUnlocalizedName("mp_thruster_10_solid"); mp_thruster_10_xenon = new ItemCustomMissilePart().makeThruster(FuelType.XENON, 1F, 1.5F, PartSize.SIZE_10).setHealth(5F) .setUnlocalizedName("mp_thruster_10_xenon"); mp_thruster_15_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 7.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_kerosene"); mp_thruster_15_kerosene_dual = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 2.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_kerosene_dual"); @@ -3454,21 +3440,21 @@ public class ModItems { mp_thruster_15_hydrogen = new ItemCustomMissilePart().makeThruster(FuelType.HYDROGEN, 1F, 7.5F, PartSize.SIZE_15).setHealth(20F) .setUnlocalizedName("mp_thruster_15_hydrogen"); mp_thruster_15_hydrogen_dual = new ItemCustomMissilePart().makeThruster(FuelType.HYDROGEN, 1F, 2.5F, PartSize.SIZE_15).setHealth(15F) .setUnlocalizedName("mp_thruster_15_hydrogen_dual"); mp_thruster_15_balefire_short = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire_short"); - mp_thruster_15_balefire = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire"); - mp_thruster_15_balefire_large = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setHealth(35F) .setUnlocalizedName("mp_thruster_15_balefire_large"); + mp_thruster_15_balefire = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 5F, PartSize.SIZE_15).setHealth(25F) .setUnlocalizedName("mp_thruster_15_balefire"); + mp_thruster_15_balefire_large = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setHealth(35F) .setUnlocalizedName("mp_thruster_15_balefire_large"); mp_thruster_15_balefire_large_rad = new ItemCustomMissilePart().makeThruster(FuelType.BALEFIRE, 1F, 7.5F, PartSize.SIZE_15).setAuthor("The Master").setHealth(35F).setRarity(Rarity.UNCOMMON).setUnlocalizedName("mp_thruster_15_balefire_large_rad"); mp_thruster_20_kerosene = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene"); mp_thruster_20_kerosene_dual = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_dual"); - mp_thruster_20_kerosene_triple = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_triple"); + mp_thruster_20_kerosene_triple = new ItemCustomMissilePart().makeThruster(FuelType.KEROSENE, 1F, 100F, PartSize.SIZE_20).setHealth(30F) .setUnlocalizedName("mp_thruster_20_kerosene_triple"); mp_thruster_20_solid = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F).setWittyText("It's basically just a big hole at the end of the fuel tank.").setUnlocalizedName("mp_thruster_20_solid"); mp_thruster_20_solid_multi = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F) .setUnlocalizedName("mp_thruster_20_solid_multi"); mp_thruster_20_solid_multier = new ItemCustomMissilePart().makeThruster(FuelType.SOLID, 1F, 100F, PartSize.SIZE_20).setHealth(35F).setWittyText("Did I miscount? Hope not.").setUnlocalizedName("mp_thruster_20_solid_multier"); - mp_stability_10_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_stability_10_flat"); + mp_stability_10_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_10).setHealth(10F) .setUnlocalizedName("mp_stability_10_flat"); mp_stability_10_cruise = new ItemCustomMissilePart().makeStability(0.25F, PartSize.SIZE_10).setHealth(5F) .setUnlocalizedName("mp_stability_10_cruise"); mp_stability_10_space = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_10).setHealth(5F).setRarity(Rarity.COMMON).setWittyText("Standing there alone, the ship is waiting / All systems are go, are you sure?") .setUnlocalizedName("mp_stability_10_space"); - mp_stability_15_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); - mp_stability_15_thin = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); + mp_stability_15_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_15).setHealth(10F) .setUnlocalizedName("mp_stability_15_flat"); + mp_stability_15_thin = new ItemCustomMissilePart().makeStability(0.35F, PartSize.SIZE_15).setHealth(5F) .setUnlocalizedName("mp_stability_15_thin"); mp_stability_15_soyuz = new ItemCustomMissilePart().makeStability(0.25F, PartSize.SIZE_15).setHealth(15F).setRarity(Rarity.COMMON).setWittyText("Союз!").setUnlocalizedName("mp_stability_15_soyuz"); mp_stability_20_flat = new ItemCustomMissilePart().makeStability(0.5F, PartSize.SIZE_20) .setUnlocalizedName("mp_s_20"); @@ -4998,12 +4984,6 @@ public class ModItems { GameRegistry.registerItem(thruster_medium, thruster_medium.getUnlocalizedName()); GameRegistry.registerItem(thruster_large, thruster_large.getUnlocalizedName()); GameRegistry.registerItem(thruster_nuclear, thruster_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(sat_base, sat_base.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_mapper, sat_head_mapper.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_scanner, sat_head_scanner.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_radar, sat_head_radar.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_laser, sat_head_laser.getUnlocalizedName()); - GameRegistry.registerItem(sat_head_resonator, sat_head_resonator.getUnlocalizedName()); GameRegistry.registerItem(seg_10, seg_10.getUnlocalizedName()); GameRegistry.registerItem(seg_15, seg_15.getUnlocalizedName()); GameRegistry.registerItem(seg_20, seg_20.getUnlocalizedName()); @@ -5708,6 +5688,7 @@ public class ModItems { GameRegistry.registerItem(mp_chip_5, mp_chip_5.getUnlocalizedName()); //Satellites + GameRegistry.registerItem(satellite, satellite.getUnlocalizedName()); GameRegistry.registerItem(sat_mapper, sat_mapper.getUnlocalizedName()); GameRegistry.registerItem(sat_scanner, sat_scanner.getUnlocalizedName()); GameRegistry.registerItem(sat_radar, sat_radar.getUnlocalizedName()); @@ -5718,7 +5699,6 @@ public class ModItems { GameRegistry.registerItem(sat_lunar_miner, sat_lunar_miner.getUnlocalizedName()); GameRegistry.registerItem(sat_gerald, sat_gerald.getUnlocalizedName()); GameRegistry.registerItem(sat_chip, sat_chip.getUnlocalizedName()); - GameRegistry.registerItem(sat_interface, sat_interface.getUnlocalizedName()); GameRegistry.registerItem(sat_coord, sat_coord.getUnlocalizedName()); GameRegistry.registerItem(sat_designator, sat_designator.getUnlocalizedName()); GameRegistry.registerItem(sat_relay, sat_relay.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ItemModLens.java b/src/main/java/com/hbm/items/armor/ItemModLens.java index 2e55ef0e0..d9c03f752 100644 --- a/src/main/java/com/hbm/items/armor/ItemModLens.java +++ b/src/main/java/com/hbm/items/armor/ItemModLens.java @@ -8,7 +8,7 @@ import com.hbm.handler.threading.PacketThreading; import com.hbm.items.ISatChip; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.saveddata.satellites.SatelliteScanner; import net.minecraft.block.Block; @@ -53,7 +53,7 @@ public class ItemModLens extends ItemArmorMod implements ISatChip { if(lens == null) return; int freq = this.getFreq(lens); - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(freq); + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(freq); if(!(sat instanceof SatelliteScanner)) return; int x = (int) Math.floor(player.posX); diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java index 5dda87f7e..f1b8c517f 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIDMulti.java @@ -64,7 +64,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { if(data.hasKey("primary")) { setType(stack, Fluids.fromID(data.getInteger("primary")), true); } diff --git a/src/main/java/com/hbm/items/special/ItemSatellite.java b/src/main/java/com/hbm/items/special/ItemSatellite.java new file mode 100644 index 000000000..b7bdce2f0 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemSatellite.java @@ -0,0 +1,34 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.items.ISatChip; +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.i18n.I18nUtil; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; + +public class ItemSatellite extends ItemEnumMulti implements ISatChip { + + public ItemSatellite() { + super(EnumSatType.class, true, true); + } + + public static enum EnumSatType { + SPY, + SCANNER, + RADAR, + MINER_ASTRO, + MINER_LUNAR, + PRECISION_LASER, + DEATH_RAY, + XENIUM_RESONATOR, + RELAY + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add(I18nUtil.resolveKey("satchip.frequency") + ": " + getFreq(stack)); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java index ac3d2b018..dfea6222c 100644 --- a/src/main/java/com/hbm/items/tool/ItemRTTYPager.java +++ b/src/main/java/com/hbm/items/tool/ItemRTTYPager.java @@ -72,7 +72,7 @@ public class ItemRTTYPager extends Item implements IItemControlReceiver, IGUIPro } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { if(data.hasKey("chan")) { if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.stackTagCompound.setString(KEY_CHANNEL, data.getString(KEY_CHANNEL)); diff --git a/src/main/java/com/hbm/items/tool/ItemSatDesignator.java b/src/main/java/com/hbm/items/tool/ItemSatDesignator.java index 6902bce05..6295dda63 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatDesignator.java +++ b/src/main/java/com/hbm/items/tool/ItemSatDesignator.java @@ -3,8 +3,7 @@ package com.hbm.items.tool; import com.hbm.items.machine.ItemSatChip; import com.hbm.lib.Library; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; -import com.hbm.saveddata.satellites.Satellite.Interfaces; +import com.hbm.saveddata.satellites.SatelliteBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,7 +18,7 @@ public class ItemSatDesignator extends ItemSatChip { if(!world.isRemote) { - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); if(sat != null) { MovingObjectPosition pos = Library.rayTrace(player, 300, 1); @@ -29,11 +28,7 @@ public class ItemSatDesignator extends ItemSatChip { int y = pos.blockY + dir.offsetY; int z = pos.blockZ + dir.offsetZ; - if(sat.satIface == Interfaces.SAT_COORD) { - sat.onCoordAction(world, player, x, y, z); - } else if(sat.satIface == Interfaces.SAT_PANEL) { - sat.onClick(world, x, z); - } + sat.onCoordAction(world, player, x, y, z); } } diff --git a/src/main/java/com/hbm/items/tool/ItemSatInterface.java b/src/main/java/com/hbm/items/tool/ItemSatInterface.java index 480993e35..4e0de1089 100644 --- a/src/main/java/com/hbm/items/tool/ItemSatInterface.java +++ b/src/main/java/com/hbm/items/tool/ItemSatInterface.java @@ -1,14 +1,12 @@ package com.hbm.items.tool; import com.hbm.inventory.gui.GUIScreenSatCoord; -import com.hbm.inventory.gui.GUIScreenSatInterface; +import com.hbm.items.IItemControlReceiver; 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.toclient.SatPanelPacket; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -18,53 +16,45 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class ItemSatInterface extends ItemSatChip implements IGUIProvider { +public class ItemSatInterface extends ItemSatChip implements IGUIProvider, IItemControlReceiver { - @SideOnly(Side.CLIENT) - public static Satellite currentSat; + public static final String KEY_NBT_CONNECTED = "connected"; @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) { - - player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); - } - + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); return stack; } - - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - - if(world.isRemote || !(entity instanceof EntityPlayerMP)) - return; - - if(((EntityPlayerMP)entity).getHeldItem() != stack) - return; - - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); - - if(sat != null && entity.ticksExisted % 2 == 0) { - PacketDispatcher.wrapper.sendTo(new SatPanelPacket(sat), (EntityPlayerMP) entity); //making this one sat that is static might not have been a good idea - } - } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return null; + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + + if(world.isRemote || !(entity instanceof EntityPlayerMP)) + return; + + if(((EntityPlayerMP) entity).getHeldItem() != stack) + return; + + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack)); + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setBoolean(KEY_NBT_CONNECTED, sat != null); } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + @Override @SideOnly(Side.CLIENT) public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - if(this == ModItems.sat_interface) - return new GUIScreenSatInterface(player); - else if(this == ModItems.sat_coord) - return new GUIScreenSatCoord(player); - + if(this == ModItems.sat_coord) return new GUIScreenSatCoord(player); return null; } + @Override + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { + SatelliteBase sat = SatelliteSavedData.getData(player.worldObj).getSatFromFreq(this.getFreq(stack)); + if(sat != null) sat.onCoordAction(player.worldObj, player, data.getInteger("x"), data.hasKey("y") ? data.getInteger("y") : -1, data.getInteger("z")); + } } diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index 6483867c2..6be56142f 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -534,7 +534,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro } @Override - public void receiveControl(ItemStack stack, NBTTagCompound data) { + public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) { Configuration config = new Configuration(); config.readFromNBT(data); config.restrictTo(availableAbilities); diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 7edfe0a91..626bc5a1b 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 (5758)"; + public static final String VERSION = "1.0.27 BETA (5768)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index e20c75122..bf7ee5ae8 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -692,6 +692,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityRagingVortex.class, new RenderBlackHole()); RenderingRegistry.registerEntityRenderingHandler(EntityQuasar.class, new RenderQuasar()); RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast()); + RenderingRegistry.registerEntityRenderingHandler(EntityOrbitalLaser.class, new RenderOrbitalLaser()); RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeTorex.class, new RenderTorex()); //minecarts diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index de2992170..23beb5b69 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -2,6 +2,7 @@ package com.hbm.main; import com.hbm.blocks.BlockEnums.DecoCabinetEnum; import com.hbm.blocks.BlockEnums.LightstoneType; +import com.hbm.blocks.BlockEnums.PlatemetalType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAbsorber.EnumAbsorberTier; import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; @@ -391,6 +392,13 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored_ext, 1, OreDictionary.WILDCARD_VALUE) }); + String[] plateDyes = { "Black", "White", "Red", "Green", "LightGray", "Blue", "Purple", "Cyan", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange" }; + for(int i = 0; i < 14; i++) { + String dyeName = "dye" + plateDyes[i]; + addRecipeAuto(new ItemStack(ModBlocks.platemetal, 8, i + 1), new Object[] { "PPP", "PDP", "PPP", 'P', new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), 'D', dyeName }); + } + addShapelessAuto(new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), new Object[] { new ItemStack(ModBlocks.platemetal, 1, OreDictionary.WILDCARD_VALUE) }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE }); @@ -593,12 +601,10 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity }); addRecipeAuto(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.LAVA.getID()), 'S', ModItems.black_hole }); addRecipeAuto(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', GOLD.nugget(), 'G', GOLD.ingot(), 'S', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()) }); - addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', NETHERQUARTZ.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); - addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip }); + addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', SI.billet(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) }); + addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', ANY_RESISTANTALLOY.ingot(), 'S', ANY_PLASTIC.ingot(), 'C', ModItems.sat_chip }); addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS }); - addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() }); addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger }); - addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_copper, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) }); addRecipeAuto(new ItemStack(ModBlocks.radiobox), new Object[] { "PLP", "PSP", "PLP", 'P', STEEL.plate(), 'S', ModItems.ring_starmetal, 'C', ModItems.fusion_core, 'L', DURA.plate() }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 9ffb9ebc0..a11342252 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -34,7 +34,7 @@ import com.hbm.lib.HbmWorld; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPadBase; import com.hbm.tileentity.bomb.TileEntityNukeCustom; @@ -271,7 +271,7 @@ public class MainRegistry { GameRegistry.registerFuelHandler(new FuelHandler()); BulletConfigSyncingUtil.loadConfigsForSync(); CellularDungeonFactory.init(); - Satellite.register(); + XSatelliteRegistry.register(); HTTPHandler.loadStats(); CraftingManager.mainRegistry(); SiegeTier.registerTiers(); @@ -1637,6 +1637,13 @@ public class MainRegistry { ignoreMappings.add("hbm:item.drax"); ignoreMappings.add("hbm:item.drax_mk2"); ignoreMappings.add("hbm:item.drax_mk3"); + ignoreMappings.add("hbm:item.sat_base"); + ignoreMappings.add("hbm:item.sat_head_mapper"); + ignoreMappings.add("hbm:item.sat_head_scanner"); + ignoreMappings.add("hbm:item.sat_head_radar"); + ignoreMappings.add("hbm:item.sat_head_laser"); + ignoreMappings.add("hbm:item.sat_head_resonator"); + ignoreMappings.add("hbm:item.sat_interface"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 8b0709e87..05621a816 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -60,6 +60,8 @@ public class StructureManager { public static final NBTStructure beached_patrol = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/beached_patrol.nbt")); public static final NBTStructure lighthouse = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/lighthouse.nbt")); public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt")); + public static final NBTStructure water_pump = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/water_pump.nbt")); + public static final NBTStructure dead_dish_small = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dead_dish_small.nbt")); public static final NBTStructure desert_shack_1 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_1.nbt")); public static final NBTStructure desert_shack_2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_2.nbt")); public static final NBTStructure desert_shack_3 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_3.nbt")); diff --git a/src/main/java/com/hbm/packet/PacketDispatcher.java b/src/main/java/com/hbm/packet/PacketDispatcher.java index 460912a3a..8b96d8a7f 100644 --- a/src/main/java/com/hbm/packet/PacketDispatcher.java +++ b/src/main/java/com/hbm/packet/PacketDispatcher.java @@ -19,14 +19,10 @@ public class PacketDispatcher { wrapper.registerMessage(TESirenPacket.Handler.class, TESirenPacket.class, i++, Side.CLIENT); //Signals server to change ItemStacks wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); - //Signals server to perform orbital strike, among other things - wrapper.registerMessage(SatLaserPacket.Handler.class, SatLaserPacket.class, i++, Side.SERVER); //Universal package for sending small info packs back to server wrapper.registerMessage(AuxButtonPacket.Handler.class, AuxButtonPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TEVaultPacket.Handler.class, TEVaultPacket.class, i++, Side.CLIENT); - //Packet to send sat info to players - wrapper.registerMessage(SatPanelPacket.Handler.class, SatPanelPacket.class, i++, Side.CLIENT); //Packet to send block break particles wrapper.registerMessage(ParticleBurstPacket.Handler.class, ParticleBurstPacket.class, i++, Side.CLIENT); //Packet to send chunk radiation info to individual players @@ -39,8 +35,6 @@ public class PacketDispatcher { wrapper.registerMessage(TEMissileMultipartPacket.Handler.class, TEMissileMultipartPacket.class, i++, Side.CLIENT); //Aux Particle Packet, New Technology: like the APP but with NBT wrapper.registerMessage(AuxParticlePacketNT.Handler.class, AuxParticlePacketNT.class, i++, Side.CLIENT); - //Signals server to do coord based satellite stuff - wrapper.registerMessage(SatCoordPacket.Handler.class, SatCoordPacket.class, i++, Side.SERVER); //Triggers gun animations of the client wrapper.registerMessage(HbmAnimationPacket.Handler.class, HbmAnimationPacket.class, i++, Side.CLIENT); //Sends a funi text to display like a music disc announcement diff --git a/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java b/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java deleted file mode 100644 index e3b815808..000000000 --- a/src/main/java/com/hbm/packet/toclient/SatPanelPacket.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hbm.packet.toclient; - -import java.io.IOException; - -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.satellites.Satellite; - -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 cpw.mods.fml.relauncher.SideOnly; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.network.PacketBuffer; - -public class SatPanelPacket implements IMessage { - - PacketBuffer buffer; - int type; - - public SatPanelPacket() { - - } - - public SatPanelPacket(Satellite sat) { - type = sat.getID(); - - this.buffer = new PacketBuffer(Unpooled.buffer()); - NBTTagCompound nbt = new NBTTagCompound(); - sat.writeToNBT(nbt); - - try { - buffer.writeNBTTagCompoundToBuffer(nbt); - - } catch (IOException e) { - e.printStackTrace(); - } - } - - @Override - public void fromBytes(ByteBuf buf) { - - type = buf.readInt(); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buffer.writeBytes(buf); - } - - @Override - public void toBytes(ByteBuf buf) { - - buf.writeInt(type); - - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } - buf.writeBytes(buffer); - } - - public static class Handler implements IMessageHandler { - - @Override - @SideOnly(Side.CLIENT) - public IMessage onMessage(SatPanelPacket m, MessageContext ctx) { - - Minecraft.getMinecraft(); - - try { - - NBTTagCompound nbt = m.buffer.readNBTTagCompoundFromBuffer(); - ItemSatInterface.currentSat = Satellite.create(m.type); - - if(nbt != null) - ItemSatInterface.currentSat.readFromNBT(nbt); - - } catch (Exception x) { - } finally { - m.buffer.release(); - } - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java index 7ea765550..37cf8331e 100644 --- a/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java +++ b/src/main/java/com/hbm/packet/toserver/NBTItemControlPacket.java @@ -65,7 +65,7 @@ public class NBTItemControlPacket implements IMessage { ItemStack held = p.getHeldItem(); if(held != null && held.getItem() instanceof IItemControlReceiver) { - ((IItemControlReceiver) held.getItem()).receiveControl(held, nbt); + ((IItemControlReceiver) held.getItem()).receiveControl(p, held, nbt); } } diff --git a/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java b/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java deleted file mode 100644 index b36ef3245..000000000 --- a/src/main/java/com/hbm/packet/toserver/SatCoordPacket.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.hbm.packet.toserver; - -import com.hbm.items.ISatChip; -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; - -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 io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SatCoordPacket implements IMessage { - - int x; - int y; - int z; - int freq; - - public SatCoordPacket() - { - - } - - public SatCoordPacket(int x, int y, int z, int freq) - { - this.x = x; - this.y = y; - this.z = z; - this.freq = freq; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - y = buf.readInt(); - z = buf.readInt(); - freq = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(y); - buf.writeInt(z); - buf.writeInt(freq); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SatCoordPacket m, MessageContext ctx) { - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { - - int freq = ISatChip.getFreqS(p.getHeldItem()); - - if(freq == m.freq) { - Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); - - if(sat != null) - sat.onCoordAction(p.worldObj, p, m.x, m.y, m.z); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java b/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java deleted file mode 100644 index 9b0bacea8..000000000 --- a/src/main/java/com/hbm/packet/toserver/SatLaserPacket.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.packet.toserver; - -import com.hbm.items.ISatChip; -import com.hbm.items.tool.ItemSatInterface; -import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; - -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 io.netty.buffer.ByteBuf; -import net.minecraft.entity.player.EntityPlayer; - -public class SatLaserPacket implements IMessage { - - //0: Add - //1: Subtract - //2: Set - int x; - int z; - int freq; - - public SatLaserPacket() - { - - } - - public SatLaserPacket(int x, int z, int freq) - { - this.x = x; - this.z = z; - this.freq = freq; - } - - @Override - public void fromBytes(ByteBuf buf) { - x = buf.readInt(); - z = buf.readInt(); - freq = buf.readInt(); - } - - @Override - public void toBytes(ByteBuf buf) { - buf.writeInt(x); - buf.writeInt(z); - buf.writeInt(freq); - } - - public static class Handler implements IMessageHandler { - - @Override - public IMessage onMessage(SatLaserPacket m, MessageContext ctx) { - - EntityPlayer p = ctx.getServerHandler().playerEntity; - - if(p.getHeldItem() != null && p.getHeldItem().getItem() instanceof ItemSatInterface) { - - int freq = ISatChip.getFreqS(p.getHeldItem()); - - if(freq == m.freq) { - Satellite sat = SatelliteSavedData.getData(p.worldObj).getSatFromFreq(m.freq); - - if(sat != null) - sat.onClick(p.worldObj, m.x, m.z); - } - } - - return null; - } - } -} diff --git a/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java b/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java index 80e017dad..de478c722 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderDeathBlast.java @@ -16,110 +16,106 @@ import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; public class RenderDeathBlast extends Render { - + private static final IModelCustom sphere = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/Sphere.obj")); @Override - public void doRender(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) { - - GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_SMOOTH); - GL11.glDepthMask(false); + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { GL11.glPushMatrix(); - //GL11.glRotatef((entity.ticksExisted % 360) * 10, 0, 1, 0); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - //GL11.glDisable(GL11.GL_ALPHA_TEST); - - GL11.glColor3f(1.0F, 0, 0); - - Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); - - Tessellator tessellator = Tessellator.instance; - RenderHelper.disableStandardItemLighting(); - - for(int i = 0; i < 8; i++) { - tessellator.startDrawing(6); - tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); - tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); - vector.rotateAroundY(45); - tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); - tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); - tessellator.draw(); - } + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDepthMask(false); - GL11.glColor3f(1.0F, 0, 1.0F); - - for(int i = 0; i < 8; i++) { - tessellator.startDrawing(6); - tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); - tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); - vector.rotateAroundY(45); - tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); - tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); - tessellator.draw(); - } - GL11.glPopMatrix(); - - GL11.glDepthMask(true); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPopMatrix(); - - renderOrb(entity, x, y, z, p_76986_8_, p_76986_9_); + GL11.glColor3f(0F, 1F, 0F); + + Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.draw(); + } + + GL11.glColor3f(1.0F, 0, 1.0F); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.draw(); + } + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + + renderOrb(entity, x, y, z, f0, interp); } - public void renderOrb(Entity entity, double x, double y, double z, float p_76986_8_, float p_76986_9_) { + public void renderOrb(Entity entity, double x, double y, double z, float f0, float interp) { GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0); - - double scale = 10 - 10D * (((double)entity.ticksExisted) / ((double)EntityDeathBlast.maxAge)); - double alpha = (((double)entity.ticksExisted) / ((double)EntityDeathBlast.maxAge)); - - if(scale < 0) - scale = 0; - - GL11.glColor4d(1.0, 0, 1.0, alpha); + + double scale = 10 - 10D * (((double) entity.ticksExisted + interp) / ((double) EntityDeathBlast.maxAge)); + double alpha = (((double) entity.ticksExisted + interp) / ((double) EntityDeathBlast.maxAge)); + + if(scale < 0) scale = 0; + + GL11.glColor4d(0.05, 1.0, 0.05, alpha); GL11.glEnable(GL11.GL_BLEND); - GL11.glScaled(scale, scale, scale); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - sphere.renderAll(); + GL11.glScaled(scale, scale, scale); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + sphere.renderAll(); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glScaled(1.25, 1.25, 1.25); + GL11.glColor4d(0, 1, 0, alpha * 0.125); + + for(int i = 0; i < 8; i++) { + sphere.renderAll(); + GL11.glScaled(1.05, 1.05, 1.05); + } - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glScaled(1.25, 1.25, 1.25); - GL11.glColor4d(1.0, 0, 0, alpha * 0.125); - - for(int i = 0; i < 8; i++) { - sphere.renderAll(); - GL11.glScaled(1.05, 1.05, 1.05); - } - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_TEXTURE_2D); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); - GL11.glColor4d(1.0, 1.0, 1.0, 1.0); - - GL11.glPopMatrix(); + GL11.glColor4d(1.0, 1.0, 1.0, 1.0); + + GL11.glPopMatrix(); } @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return null; } - } diff --git a/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java new file mode 100644 index 000000000..bd529c1a6 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java @@ -0,0 +1,72 @@ +package com.hbm.render.entity.effect; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; + +public class RenderOrbitalLaser extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDepthMask(false); + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + GL11.glColor3f(1F, 0F, 0F); + + Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0); + + Tessellator tessellator = Tessellator.instance; + RenderHelper.disableStandardItemLighting(); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord); + tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord); + tessellator.draw(); + } + + GL11.glColor3f(1F, 1F, 1F); + + for(int i = 0; i < 8; i++) { + tessellator.startDrawing(6); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + vector.rotateAroundY(45); + tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2); + tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2); + tessellator.draw(); + } + GL11.glPopMatrix(); + + GL11.glDepthMask(true); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java index 5698a1736..df7493046 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderSatLink.java +++ b/src/main/java/com/hbm/render/tileentity/RenderSatLink.java @@ -21,7 +21,7 @@ public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRen GL11.glPushMatrix(); GL11.glTranslated(x + 0.5D, y, z + 0.5D); GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_CULL_FACE); GL11.glRotatef(180, 0F, 1F, 0F); TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile; diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index 2ced0842d..3bfb13e3b 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -1,6 +1,7 @@ package com.hbm.saveddata; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; +import com.hbm.saveddata.satellites.XSatelliteRegistry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; @@ -10,7 +11,7 @@ import java.util.Map.Entry; public class SatelliteSavedData extends WorldSavedData { - public final HashMap sats = new HashMap<>(); + public final HashMap sats = new HashMap<>(); /** * Constructor used for deserialization @@ -28,24 +29,18 @@ public class SatelliteSavedData extends WorldSavedData { this.markDirty(); } - public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; - } - - public Satellite getSatFromFreq(int freq) { - return sats.get(freq); - } + public boolean isFreqTaken(int freq) { return getSatFromFreq(freq) != null; } + public SatelliteBase getSatFromFreq(int freq) { return sats.get(freq); } @Override public void readFromNBT(NBTTagCompound nbt) { int satCount = nbt.getInteger("satCount"); for(int i = 0; i < satCount; i++) { - Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); + SatelliteBase sat = XSatelliteRegistry.createFromId(nbt.getInteger("sat_id_" + i)); sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); int freq = nbt.getInteger("sat_freq_" + i); - sats.put(freq, sat); } } @@ -56,7 +51,7 @@ public class SatelliteSavedData extends WorldSavedData { int i = 0; - for(Entry struct : sats.entrySet()) { + for(Entry struct : sats.entrySet()) { NBTTagCompound data = new NBTTagCompound(); struct.getValue().writeToNBT(data); @@ -74,7 +69,6 @@ public class SatelliteSavedData extends WorldSavedData { data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); } - return data; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/Satellite.java b/src/main/java/com/hbm/saveddata/satellites/Satellite.java deleted file mode 100644 index e1a3ff431..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/Satellite.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.items.ModItems; -import com.hbm.saveddata.SatelliteSavedData; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -public abstract class Satellite { - - public static final List> satellites = new ArrayList<>(); - public static final HashMap> itemToClass = new HashMap<>(); - - public enum InterfaceActions { - HAS_MAP, //lets the interface display loaded chunks - CAN_CLICK, //enables onClick events - SHOW_COORDS, //enables coordinates as a mouse tooltip - HAS_RADAR, //lets the interface display loaded entities - HAS_ORES //like HAS_MAP but only shows ores - } - - public enum CoordActions { - HAS_Y //enables the Y-coord field which is disabled by default - } - - public enum Interfaces { - NONE, //does not interact with any sat interface (i.e. asteroid miners) - SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) - SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) - } - - public List ifaceAcs = new ArrayList<>(); - public List coordAcs = new ArrayList<>(); - public Interfaces satIface = Interfaces.NONE; - - public static void register() { - registerSatellite(SatelliteMapper.class, ModItems.sat_mapper); - registerSatellite(SatelliteScanner.class, ModItems.sat_scanner); - registerSatellite(SatelliteRadar.class, ModItems.sat_radar); - registerSatellite(SatelliteLaser.class, ModItems.sat_laser); - registerSatellite(SatelliteResonator.class, ModItems.sat_resonator); - registerSatellite(SatelliteRelay.class, ModItems.sat_foeq); - registerSatellite(SatelliteMiner.class, ModItems.sat_miner); - registerSatellite(SatelliteLunarMiner.class, ModItems.sat_lunar_miner); - registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald); - } - - /** - * Register satellite. - * @param sat - Satellite class - * @param item - Satellite item (which will be placed in a rocket) - */ - public static void registerSatellite(Class sat, Item item) { - if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { - satellites.add(sat); - itemToClass.put(item, sat); - } - } - - public static void orbit(World world, int id, int freq, double x, double y, double z) { - if(world.isRemote) { - return; - } - - Satellite sat = create(id); - - if(sat != null) { - SatelliteSavedData data = SatelliteSavedData.getData(world); - data.sats.put(freq, sat); - sat.onOrbit(world, x, y, z); - data.markDirty(); - } - } - - public static Satellite create(int id) { - Satellite sat = null; - - try { - Class c = satellites.get(id); - sat = c.newInstance(); - } catch(Exception e) { - e.printStackTrace(); - } - - return sat; - } - - public static int getIDFromItem(Item item) { - Class sat = itemToClass.get(item); - - return satellites.indexOf(sat); - } - - public int getID() { - return satellites.indexOf(this.getClass()); - } - - public void writeToNBT(NBTTagCompound nbt) { } - - public void readFromNBT(NBTTagCompound nbt) { } - - /** - * Called when the satellite reaches space, used to trigger achievements and other funny stuff. - * @param x posX of the rocket - * @param y ditto - * @param z ditto - */ - public void onOrbit(World world, double x, double y, double z) { } - - /** - * Called by the sat interface when clicking on the screen - * @param x the x-coordinate translated from the on-screen coords to actual world coordinates - * @param z ditto - */ - public void onClick(World world, int x, int z) { } - - /** - * Called by the coord sat interface - * @param x the specified x-coordinate - * @param y ditto - * @param z ditto - */ - public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { } -} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java new file mode 100644 index 000000000..ab17d4a7f --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java @@ -0,0 +1,93 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.tileentity.network.RTTYSystem; + +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public abstract class SatelliteBase { + + public static final String CHAN_SATLINK = "SAT_LINK"; + + public static final String CMD_SETTARGET = "settarget"; + public static final String CMD_GETTARGET = "gettarget"; + public static final String CMD_GETTARGETX = "gettargetx"; + public static final String CMD_GETTARGETZ = "gettargetz"; + + public int range = 1_000; + public int targetX; + public int targetZ; + + public String tx = ""; + + public int getID() { + return XSatelliteRegistry.satellites.indexOf(this.getClass()); + } + + public abstract String getType(); + + public void writeToNBT(NBTTagCompound nbt) { + nbt.setInteger("targetX", targetX); + nbt.setInteger("targetZ", targetZ); + nbt.setString("tx", tx); + } + + public void readFromNBT(NBTTagCompound nbt) { + this.targetX = nbt.getInteger("targetX"); + this.targetZ = nbt.getInteger("targetZ"); + this.tx = nbt.getString("tx"); + } + + public void onOrbit(World world, double x, double y, double z) { + setTarget((int) Math.floor(x), (int) Math.floor(z)); + + RTTYSystem.broadcast(world, CHAN_SATLINK, "Established connection to " + getType() + " at " + targetX + " / " + targetZ); + } + + public void onCommand(World world, String... cmd) { + onCommandTarget(world, cmd); + onCommandImpl(world, cmd); + } + + public void onCommandTarget(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_SETTARGET)) { + if(cmd.length == 3) { + targetX = IRORInteractive.parseInt(cmd[1]); + targetZ = IRORInteractive.parseInt(cmd[2]); + } + if(cmd.length == 4) { + targetX = IRORInteractive.parseInt(cmd[1]); + targetZ = IRORInteractive.parseInt(cmd[3]); + } + return; + } + + if(cmd[0].equals(CMD_GETTARGET)) { + this.tx = targetX + ";" + targetZ; + return; + } + + if(cmd[0].equals(CMD_GETTARGETX)) { + this.tx = "" + targetX; + return; + } + + if(cmd[0].equals(CMD_GETTARGETZ)) { + this.tx = "" + targetZ; + return; + } + } + + public void setTarget(int x, int z) { + this.targetX = x; + this.targetZ = z; + } + + public void onCommandImpl(World world, String... cmd) { } + + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java new file mode 100644 index 000000000..5775bcec6 --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java @@ -0,0 +1,73 @@ +package com.hbm.saveddata.satellites; + +import java.util.Locale; + +import com.hbm.entity.logic.EntityDeathBlast; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SatelliteDeathRay extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "canfire"; + + public static final int CHARGE_TIME = 5 * 60 * 20; + + public long lastShot; + + public SatelliteDeathRay() { } + + @Override public String getType() { return "ORBITAL_FUN_PLATFORM_:)"; } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("lastShot", lastShot); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + lastShot = nbt.getLong("lastShot"); + } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_FIRE)) { + deathBlast(world, targetX, targetZ); + return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (lastShot + CHARGE_TIME < world.getTotalWorldTime()) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.deathBlast(world, targetX, targetZ); + } + + public void deathBlast(World world, int x, int z) { + + if(lastShot + CHARGE_TIME < world.getTotalWorldTime()) { + lastShot = world.getTotalWorldTime(); + + int y = world.getHeightValue(x, z); + + EntityDeathBlast blast = new EntityDeathBlast(world); + blast.posX = x; + blast.posY = y; + blast.posZ = z; + + world.spawnEntityInWorld(blast); + } + } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java index a7d8330f3..3b125057c 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteHorizons.java @@ -1,5 +1,7 @@ package com.hbm.saveddata.satellites; +import java.util.Locale; + import com.hbm.entity.projectile.EntityTom; import com.hbm.main.MainRegistry; import com.hbm.saveddata.SatelliteSavedData; @@ -12,32 +14,59 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraft.world.chunk.IChunkProvider; -public class SatelliteHorizons extends Satellite { +public class SatelliteHorizons extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "settarget"; boolean used = false; - public SatelliteHorizons() { - this.satIface = Interfaces.SAT_COORD; - } + public SatelliteHorizons() { } + @Override public String getType() { return "PAYLOAD_UNKNOWN"; } + + @Override public void onOrbit(World world, double x, double y, double z) { + super.onOrbit(world, x, y, z); for(Object p : world.playerEntities) ((EntityPlayer)p).triggerAchievement(MainRegistry.horizonsStart); } - + + @Override public void writeToNBT(NBTTagCompound nbt) { nbt.setBoolean("used", used); } - + + @Override public void readFromNBT(NBTTagCompound nbt) { used = nbt.getBoolean("used"); } - - public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; - if(used) + if(cmd[0].equals(CMD_FIRE)) { + theHorizons(world, targetX, targetZ); return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (!used) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.theHorizons(world, x, z); + } + + public void theHorizons(World world, int x, int z) { + if(used) return; used = true; SatelliteSavedData.getData(world).markDirty(); diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java deleted file mode 100644 index 46c5f89a6..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.entity.logic.EntityDeathBlast; - -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public class SatelliteLaser extends Satellite { - - public long lastOp; - - public SatelliteLaser() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.ifaceAcs.add(InterfaceActions.SHOW_COORDS); - this.ifaceAcs.add(InterfaceActions.CAN_CLICK); - this.satIface = Interfaces.SAT_PANEL; - } - - public void writeToNBT(NBTTagCompound nbt) { - nbt.setLong("lastOp", lastOp); - } - - public void readFromNBT(NBTTagCompound nbt) { - lastOp = nbt.getLong("lastOp"); - } - - public void onClick(World world, int x, int z) { - - if(lastOp + 10000 < System.currentTimeMillis()) { - lastOp = System.currentTimeMillis(); - - int y = world.getHeightValue(x, z); - - EntityDeathBlast blast = new EntityDeathBlast(world); - blast.posX = x; - blast.posY = y; - blast.posZ = z; - - world.spawnEntityInWorld(blast); - } - } -} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java index 4249dd8db..5956f0f3c 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java @@ -5,6 +5,6 @@ import com.hbm.itempool.ItemPoolsSatellite; public class SatelliteLunarMiner extends SatelliteMiner { static { - registerCargo(SatelliteLunarMiner.class, ItemPoolsSatellite.POOL_SAT_LUNAR); + SatelliteMiner.registerCargo(SatelliteLunarMiner.class, ItemPoolsSatellite.POOL_SAT_LUNAR); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java index a23ee8e50..9626df120 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMapper.java @@ -1,9 +1,59 @@ package com.hbm.saveddata.satellites; -public class SatelliteMapper extends Satellite { +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class SatelliteMapper extends SatelliteBase { + + public static final String CMD_TARGET_LOADED = "targetloaded"; + public static final String CMD_SPOT_PLAYER = "spotplayers"; - public SatelliteMapper() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.satIface = Interfaces.SAT_PANEL; + public static final int SPOT_PLAYER_MAX_RANGE = 250; + + public SatelliteMapper() { } + + @Override public String getType() { return "NOT_A_SPY_SATELLITE_:)"; } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_TARGET_LOADED)) { + this.tx = "" + world.getChunkProvider().chunkExists(targetX >> 4, targetZ >> 4); + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + + if(cmd[0].equals(CMD_SPOT_PLAYER)) { + + List names = new ArrayList(); + + for(Object o : world.playerEntities) { + EntityPlayer player = (EntityPlayer) o; + + int x = (int) Math.floor(player.posX); + int z = (int) Math.floor(player.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= SPOT_PLAYER_MAX_RANGE * SPOT_PLAYER_MAX_RANGE) { + int height = world.getHeightValue(x, z); + if(height < player.posY + 2) names.add(player.getCommandSenderName()); + } + } + + if(names.isEmpty()) { + this.tx = "NONE"; + return; + } + + this.tx = String.join(";", names); + return; + } } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index daca3b22d..538e35edb 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound; import java.util.HashMap; -public class SatelliteMiner extends Satellite { +public class SatelliteMiner extends SatelliteBase { /** * {@link WeightedRandomObject} array with loot the satellite will deliver. */ @@ -15,9 +15,9 @@ public class SatelliteMiner extends Satellite { public long lastOp; - public SatelliteMiner() { - this.satIface = Interfaces.NONE; - } + public SatelliteMiner() { } + + @Override public String getType() { return "ASTEROID_MINER"; } public void writeToNBT(NBTTagCompound nbt) { nbt.setLong("lastOp", lastOp); @@ -49,7 +49,7 @@ public class SatelliteMiner extends Satellite { * @return - Returns {@link com.hbm.itempool.ItemPool} key or null if the item is not a mining satellite. */ public static String getCargoForItem(Item satelliteItem) { - Class satelliteClass = itemToClass.getOrDefault(satelliteItem, null); + Class satelliteClass = XSatelliteRegistry.itemToClass.getOrDefault(satelliteItem, null); return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null; } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java b/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java new file mode 100644 index 000000000..8ab79051e --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java @@ -0,0 +1,108 @@ +package com.hbm.saveddata.satellites; + +import java.util.Locale; + +import com.hbm.entity.logic.EntityOrbitalLaser; + +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class SatellitePrecisionLaser extends SatelliteBase { + + public static final String CMD_FIRE = "fire"; + public static final String CMD_CANFIRE = "canfire"; + public static final String CMD_SETENTITYTARGET = "setentitytarget"; + + public static final int MAX_TARGET_RANGE = 1_000; + public static final int CHARGE_TIME = 5 * 20; + + public long lastShot; + public int targetedEntity = -1; + + public SatellitePrecisionLaser() { } + + @Override public String getType() { return "ORBITAL_TATOO_REMOVER"; } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("lastShot", lastShot); + nbt.setInteger("targetedEntity", targetedEntity); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + lastShot = nbt.getLong("lastShot"); + targetedEntity = nbt.getInteger("targetedEntity"); + } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_FIRE)) { + + if(this.targetedEntity != -1) { + Entity e = world.getEntityByID(this.targetedEntity); + this.targetedEntity = -1; + + if(e == null || e.isDead) return; + + int x = (int) Math.floor(e.posX); + int z = (int) Math.floor(e.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= MAX_TARGET_RANGE * MAX_TARGET_RANGE) { + this.deathBlast(world, e.posX, e.posY, e.posZ); + return; + } + } + + deathBlast(world, targetX, targetZ); + return; + } + + if(cmd[0].equals(CMD_CANFIRE)) { + this.tx = (lastShot + CHARGE_TIME < world.getTotalWorldTime()) + ""; + this.tx = this.tx.toUpperCase(Locale.US); + return; + } + + if(cmd[0].equals(CMD_SETENTITYTARGET)) { + this.targetedEntity = IRORInteractive.parseInt(cmd[1]); + return; + } + } + + @Override + public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { + this.setTarget(x, z); + this.deathBlast(world, targetX, targetZ); + } + + public void deathBlast(World world, int x, int z) { + int y = world.getHeightValue(x, z); + deathBlast(world, x + 0.5, y, z + 0.5); + } + + public void deathBlast(World world, double x, double y, double z) { + + if(lastShot + CHARGE_TIME < world.getTotalWorldTime()) { + lastShot = world.getTotalWorldTime(); + + EntityOrbitalLaser blast = new EntityOrbitalLaser(world); + blast.posX = x; + blast.posY = y; + blast.posZ = z; + blast.explode(); + + world.spawnEntityInWorld(blast); + } + } +} diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java index 337475080..454d2980d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteRadar.java @@ -1,10 +1,111 @@ package com.hbm.saveddata.satellites; -public class SatelliteRadar extends Satellite { +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.tileentity.machine.TileEntityMachineRadarNT; + +import api.hbm.entity.IRadarDetectableNT.RadarScanParams; +import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.entity.Entity; +import net.minecraft.world.World; + +/** + * Basically the AUTOCAL is now mandatory lol lmao + */ +public class SatelliteRadar extends SatelliteBase { - public SatelliteRadar() { - this.ifaceAcs.add(InterfaceActions.HAS_MAP); - this.ifaceAcs.add(InterfaceActions.HAS_RADAR); - this.satIface = Interfaces.SAT_PANEL; + public static final int MAX_SCAN_RANGE = 1_000; + public static RadarScanParams scanParams = new RadarScanParams(true, true, true, false); + + public static final String CMD_SURVEY = "survey"; + public static final String CMD_FILTER = "filter"; + public static final String CMD_COUNT = "count"; + public static final String CMD_GETTARGETID = "gettargetid"; + public static final String CMD_GETPOSITION = "getposition"; + public static final String CMD_GETNAME = "getname"; + + public List cachedRadarResults = new ArrayList(); + public List filteredRadarResults = new ArrayList(); + + public SatelliteRadar() { } + + @Override public String getType() { return "LEO_RADAR"; } + + @Override + public void onCommandImpl(World world, String... cmd) { + if(cmd.length <= 0) return; + + if(cmd[0].equals(CMD_SURVEY)) { + + cachedRadarResults.clear(); + + for(Entity entity : TileEntityMachineRadarNT.matchingEntities) { + if(entity.dimension != world.provider.dimensionId) continue; + + int x = (int) Math.floor(entity.posX); + int z = (int) Math.floor(entity.posZ); + + double dX = x - targetX; + double dZ = z - targetZ; + + if(dX * dX + dZ * dZ <= MAX_SCAN_RANGE * MAX_SCAN_RANGE) { + cachedRadarResults.add(entity); + } + } + + filteredRadarResults = new ArrayList(cachedRadarResults); + return; + } + + if(cmd[0].equals(CMD_FILTER) && cmd.length == 2) { + + filteredRadarResults.clear(); + String filter = cmd[1].toLowerCase(Locale.US); + + for(Entity entity : cachedRadarResults) { + if(entity.isDead) continue; + String classname = entity.getClass().getSimpleName().toLowerCase(Locale.US); + if(classname.contains(filter)) { + filteredRadarResults.add(entity); + } + } + return; + } + + if(cmd[0].equals(CMD_COUNT)) { + this.tx = "" + filteredRadarResults.size(); + return; + } + + if(cmd[0].equals(CMD_GETTARGETID) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = "" + target.getEntityId(); + return; + } + + if(cmd[0].equals(CMD_GETPOSITION) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = (int) Math.floor(target.posX) + ";" + (int) Math.floor(target.posY) + ";" + (int) Math.floor(target.posZ); + return; + } + + if(cmd[0].equals(CMD_GETNAME) && cmd.length == 2) { + Entity target = getTargetFromIndex(cmd[1]); + if(target == null) { this.tx = ""; return; } + this.tx = target.getClass().getSimpleName().toLowerCase(Locale.US); + return; + } + } + + public Entity getTargetFromIndex(String cmd) { + if(filteredRadarResults.size() <= 0) return null; + int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()) - 1; + Entity target = filteredRadarResults.get(index); + if(target.isDead) return null; + return target; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java index a7aa0a251..b2d070405 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteRelay.java @@ -5,11 +5,11 @@ import com.hbm.main.MainRegistry; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -public class SatelliteRelay extends Satellite { +public class SatelliteRelay extends SatelliteBase { - public SatelliteRelay() { - this.satIface = Interfaces.NONE; - } + public SatelliteRelay() { } + + @Override public String getType() { return "RX/TX"; } public void onOrbit(World world, double x, double y, double z) { diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java index ba415c07a..d5ee8dfe4 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -4,21 +4,21 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.world.World; -public class SatelliteResonator extends Satellite { +public class SatelliteResonator extends SatelliteBase { - public SatelliteResonator() { - this.coordAcs.add(CoordActions.HAS_Y); - this.satIface = Interfaces.SAT_COORD; - } + public SatelliteResonator() { } + + @Override public String getType() { return "XEN_RELAY"; } public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) { - if(!(player instanceof EntityPlayerMP)) - return; + if(!(player instanceof EntityPlayerMP)) return; world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); player.mountEntity(null); - ((EntityPlayerMP)player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch); + world.getChunkFromChunkCoords(x >> 4, z >> 4); + if(y < 0) y = world.getHeightValue(x, z); + ((EntityPlayerMP) player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch); world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F); } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java index 7d0ec86ab..0b1434428 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteScanner.java @@ -1,9 +1,8 @@ package com.hbm.saveddata.satellites; -public class SatelliteScanner extends Satellite { +public class SatelliteScanner extends SatelliteBase { - public SatelliteScanner() { - this.ifaceAcs.add(InterfaceActions.HAS_ORES); - this.satIface = Interfaces.SAT_PANEL; - } + public SatelliteScanner() { } + + @Override public String getType() { return "DEPTH_SCANNER"; } } diff --git a/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java b/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java new file mode 100644 index 000000000..06e1d511f --- /dev/null +++ b/src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java @@ -0,0 +1,90 @@ +package com.hbm.saveddata.satellites; + +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemSatellite.EnumSatType; +import com.hbm.saveddata.SatelliteSavedData; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class XSatelliteRegistry { + + public static final List> satellites = new ArrayList<>(); + public static final HashMap> itemToClass = new HashMap<>(); + + public static void register() { + + registerSatellite(SatelliteMapper.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SPY)); + registerSatellite(SatelliteScanner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.SCANNER)); + registerSatellite(SatelliteRadar.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.RADAR)); + registerSatellite(SatelliteDeathRay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY)); + registerSatellite(SatelliteResonator.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR)); + registerSatellite(SatelliteRelay.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR)); + registerSatellite(SatelliteMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO)); + registerSatellite(SatelliteLunarMiner.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR)); + registerSatellite(SatelliteHorizons.class, ModItems.sat_gerald); + registerSatellite(SatellitePrecisionLaser.class, new ComparableStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER)); + + + registerSatellite(SatelliteMapper.class, ModItems.sat_mapper); + registerSatellite(SatelliteScanner.class, ModItems.sat_scanner); + registerSatellite(SatelliteRadar.class, ModItems.sat_radar); + registerSatellite(SatelliteDeathRay.class, ModItems.sat_laser); + registerSatellite(SatelliteResonator.class, ModItems.sat_resonator); + registerSatellite(SatelliteRelay.class, ModItems.sat_foeq); + registerSatellite(SatelliteMiner.class, ModItems.sat_miner); + registerSatellite(SatelliteLunarMiner.class, ModItems.sat_lunar_miner); + } + + /** + * Register satellite. + * @param sat - Satellite class + * @param item - Satellite item (which will be placed in a rocket) + */ + @Deprecated + public static void registerSatellite(Class sat, Item item) { + if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { + satellites.add(sat); + itemToClass.put(new ComparableStack(item), sat); + } + } + + public static void registerSatellite(Class sat, ComparableStack item) { + if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) { + satellites.add(sat); + itemToClass.put(item, sat); + } + } + + public static void orbit(World world, ItemStack stack, int freq, double x, double y, double z) { + if(world.isRemote) return; + + SatelliteBase sat = createFromItem(stack); + + if(sat != null) { + SatelliteSavedData data = SatelliteSavedData.getData(world); + data.sats.put(freq, sat); + sat.onOrbit(world, x, y, z); + data.markDirty(); + } + } + + public static SatelliteBase createFromId(int i) { + try { + return satellites.get(i).newInstance(); + } catch(Exception e) { } + return null; + } + + public static SatelliteBase createFromItem(ItemStack stack) { + try { + return itemToClass.get(new ComparableStack(stack).makeSingular()).newInstance(); + } catch(Exception e) { } + return null; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index 9e3c6e6fc..1a6a2b354 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -19,10 +19,7 @@ import com.hbm.items.tool.ItemCoordinateBase; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; 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.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IRadarCommandReceiver; @@ -446,32 +443,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I if(link != null && link.getItem() == ModItems.sat_relay) { World world = player.getEntityWorld(); - Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); - if(sat instanceof SatelliteLaser) { - if(data.hasKey("launchPosX")) { - int x = data.getInteger("launchPosX"); - int z = data.getInteger("launchPosZ"); - worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - sat.onClick(world, x, z); - } - } - if(sat instanceof SatelliteHorizons) { - if(data.hasKey("launchPosX")) { - int x = data.getInteger("launchPosX"); - int z = data.getInteger("launchPosZ"); - int y = 60; //one day I will make radars transmit Y coordinate as well and you will be butchered alhamdulila - worldObj.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - 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); - } + SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(ISatChip.getFreqS(link)); + + if(data.hasKey("launchPosX")) { + int x = data.getInteger("launchPosX"); + int z = data.getInteger("launchPosZ"); + int y = 60; //one day I will make radars transmit Y coordinate as well and you will be butchered alhamdulila + 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) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 85b71dd0a..b8b5de866 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -7,7 +7,7 @@ import com.hbm.inventory.gui.GUISatDock; import com.hbm.itempool.ItemPool; import com.hbm.items.ISatChip; import com.hbm.saveddata.SatelliteSavedData; -import com.hbm.saveddata.satellites.Satellite; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.saveddata.satellites.SatelliteMiner; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -147,7 +147,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent if(slots[15] != null) { int freq = ISatChip.getFreqS(slots[15]); - Satellite sat = data.getSatFromFreq(freq); + SatelliteBase sat = data.getSatFromFreq(freq); int delay = 10 * 60 * 1000; @@ -181,7 +181,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent } if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { - Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); + SatelliteBase sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); if(sat != null) unloadCargo((SatelliteMiner) sat); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java index e327f1dac..65f802d77 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLink.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.SatelliteBase; import com.hbm.tileentity.TileEntityTickingBase; import api.hbm.redstoneoverradio.IRORInteractive; @@ -8,6 +9,7 @@ import api.hbm.redstoneoverradio.IRORValueProvider; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive { @@ -72,6 +74,18 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I this.freq = buf.readInt(); } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.freq = nbt.getInteger("freq"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("power", freq); + } + AxisAlignedBB bb = null; @Override @@ -110,11 +124,45 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I @Override public String provideRORValue(String name) { + + if(name.equals(PREFIX_VALUE + connected)) { + return this.connected ? "TRUE" : "FALSE"; + } + + if(name.equals(PREFIX_VALUE + "freq")) { + return "" + this.freq; + } + + if(name.equals(PREFIX_VALUE + "rx")) { + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + SatelliteBase sat = dat.getSatFromFreq(this.freq); + if(sat != null) { + return sat.tx; + } + return ""; + } + return null; } @Override public String runRORFunction(String name, String[] params) { + + if(name.equals(PREFIX_FUNCTION + "setfreq") && params.length == 1) { + this.freq = IRORInteractive.parseInt(params[0], 0, 100_000); + this.markChanged(); + } + + if(name.equals(PREFIX_FUNCTION + "tx")) { + SatelliteSavedData dat = SatelliteSavedData.getData(worldObj); + SatelliteBase sat = dat.getSatFromFreq(this.freq); + String[] cmd = String.join(IRORInteractive.PARAM_SEPARATOR, params).split(" "); + if(sat != null) { + sat.onCommand(worldObj, cmd); + } + this.markChanged(); + } + return null; } } diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index c0be7e888..94d6737f9 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -117,6 +117,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.dishSpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("water_pump") {{ + canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.PLAINS) || BiomeDictionary.isBiomeOfType(biome, Type.SWAMP); + structure = new JigsawPiece("water_pump", StructureManager.water_pump, -10); + spawnWeight = StructureConfig.waterPumpSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("forestchem") {{ canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome); structure = new JigsawPiece("forest_chem", StructureManager.forest_chem, -9); @@ -191,6 +197,12 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = StructureConfig.desertShack3SpawnWeight; }}); + NBTStructure.registerStructure(0, new SpawnCondition("dead_dish_small") {{ + canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.SANDY); + structure = new JigsawPiece("dead_dish_small", StructureManager.dead_dish_small, -5); + spawnWeight = StructureConfig.deadDishSmallSpawnWeight; + }}); + NBTStructure.registerStructure(0, new SpawnCondition("ruinA") {{ canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt(); structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}}; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 501693dbc..b3534ed0f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3284,25 +3284,19 @@ item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix item.safety_fuse.name=Zündschnur -item.sat_base.name=Satellitenkörper item.sat_chip.name=Satelliten-ID-Chip item.sat_coord.name=Satelliten-Zielmarkierer item.sat_designator.name=Satelliten-Laserzielmarkierer item.sat_foeq.name=PEAF - Mk.I FOEQ Dunasonde mit experimenter nuklearer Schubdüse item.sat_gerald.name=Gerald der Konstruktionsandroid -item.sat_head_laser.name=Todesstrahl -item.sat_head_mapper.name=Hochleistungskamera -item.sat_head_radar.name=Radarschüssel -item.sat_head_resonator.name=Xenium-Resonator -item.sat_head_scanner.name=M700 Oberflächenabtaster item.sat_interface.name=Satelliten-Kontrollinterface -item.sat_laser.name=Orbitaler Todesstrahl -item.sat_lunar_miner.name=Mond-Förderschiff -item.sat_mapper.name=Oberflächen-Abtastungssatellit -item.sat_miner.name=Asteroiden-Förderschiff -item.sat_radar.name=Radar-Überwachungssatellit -item.sat_resonator.name=Xenium-Resonator-Satellit -item.sat_scanner.name=Satellit mit Tiefenscanning-Modul +item.sat_laser.name=Orbitaler Todesstrahl (LEGACY) +item.sat_lunar_miner.name=Mond-Förderschiff (LEGACY) +item.sat_mapper.name=Oberflächen-Abtastungssatellit (LEGACY) +item.sat_miner.name=Asteroiden-Förderschiff (LEGACY) +item.sat_radar.name=Radar-Überwachungssatellit (LEGACY) +item.sat_resonator.name=Xenium-Resonator-Satellit (LEGACY) +item.sat_scanner.name=Satellit mit Tiefenscanning-Modul (LEGACY) item.sawblade.name=Sägeblatt item.schnitzel_vegan.name=Veganes Schnitzel item.schrabidium_axe.name=Schrabidiumaxt @@ -3889,11 +3883,11 @@ tile.block_fiberglass.name=Fiberglasrolle tile.block_fluorite.name=Fluoritblock tile.block_foam.name=Schaum tile.block_graphite.name=Graphitblock -tile.block_graphite_drilled.name=Gebohrtes Graphit -tile.block_graphite_fuel.name=Pile Brennstoff -tile.block_graphite_plutonium.name=Pile Brennstoff (Gebrütet) -tile.block_graphite_rod.name=Pile Steuerstab -tile.block_graphite_source.name=Pile Neutronenquelle +tile.block_graphite_drilled.name=Gebohrtes Graphit (LEGACY) +tile.block_graphite_fuel.name=Pile Brennstoff (LEGACY) +tile.block_graphite_plutonium.name=Pile Brennstoff (Gebrütet) (LEGACY) +tile.block_graphite_rod.name=Pile Steuerstab (LEGACY) +tile.block_graphite_source.name=Pile Neutronenquelle (LEGACY) tile.block_insulator.name=Isolatorrolle tile.block_lead.name=Bleiblock tile.block_lanthanium.name=Lanthanblock @@ -4545,6 +4539,7 @@ tile.machine_rtg_orange.name=Starker RTG tile.machine_rtg_purple.name=Paarvernichtungsgenerator tile.machine_rtg_red.name=Fulminationsgenerator tile.machine_rtg_yellow.name=Australium Supergenerator +tile.machine_satlink.name=Satelliten-Bodenstation tile.machine_satlinker.name=Satelliten-ID-Manager tile.machine_sawmill.name=Stirling-Sägemühle tile.machine_sawmill.desc=Benötigt externe Hitzequelle.$Wärmestransferrate: T*0.1 TU/t$Minimalaufnahme: 100 TU/t, Maximalaufnahme: 300 TU/t diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 06542768a..ad9ecf572 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3839,20 +3839,20 @@ item.pile_rod.waste.name=Chicago Pile Nuclear Waste Rod item.pile_rod.waste.desc=Highly reactive end product from leaving a Chicago Pile fuel rod in the reactor for too long. item.pile_rod.zr.name=Chicago Pile Zirconium Rod item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for pushing other rods safely out of the reactor. -item.pile_rod_boron.name=Chicago Pile Control Rod -item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle -item.pile_rod_detector.name=Chicago Pile Control & Detector Rod -item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux -item.pile_rod_lithium.name=Chicago Pile Lithium Cell -item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core -item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod -item.pile_rod_plutonium.desc=§d[Neutron Source] -item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod -item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. -item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source -item.pile_rod_source.desc=§d[Neutron Source] -item.pile_rod_uranium.name=Chicago Pile Uranium Rod -item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample +item.pile_rod_boron.name=Chicago Pile Control Rod (LEGACY) +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle (LEGACY) +item.pile_rod_detector.name=Chicago Pile Control & Detector Rod (LEGACY) +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux (LEGACY) +item.pile_rod_lithium.name=Chicago Pile Lithium Cell (LEGACY) +item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core (LEGACY) +item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod (LEGACY) +item.pile_rod_plutonium.desc=§d[Neutron Source] (LEGACY) +item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod (LEGACY) +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. (LEGACY) +item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source (LEGACY) +item.pile_rod_source.desc=§d[Neutron Source] (LEGACY) +item.pile_rod_uranium.name=Chicago Pile Uranium Rod (LEGACY) +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample (LEGACY) item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste @@ -4395,26 +4395,29 @@ item.rune_isa.name=Cool Catalyst Matrix item.rune_jera.name=Multiplicative Catalyst Matrix item.rune_thurisaz.name=Additive Catalyst Matrix item.safety_fuse.name=Safety Fuse -item.sat_base.name=Satellite Base item.sat_chip.name=Satellite ID-Chip item.sat_coord.name=Satellite Designator item.sat_designator.name=Satellite Laser Designator -item.sat_relay.name=Satellite Radar Relay -item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion +item.sat_relay.name=Satellite Radar Relay (LEGACY) +item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (LEGACY) item.sat_gerald.name=Gerald The Construction Android -item.sat_head_laser.name=Death Ray -item.sat_head_mapper.name=High-Gain Optical Camera -item.sat_head_radar.name=Radar Dish -item.sat_head_resonator.name=Xenium Resonator -item.sat_head_scanner.name=M700 Survey Scanner item.sat_interface.name=Satellite Control Interface -item.sat_laser.name=Orbital Death Ray -item.sat_lunar_miner.name=Lunar Mining Ship -item.sat_mapper.name=Surface Mapping Satellite -item.sat_miner.name=Asteroid Mining Ship -item.sat_radar.name=Radar Survey Satellite -item.sat_resonator.name=Xenium Resonator Satellite -item.sat_scanner.name=Satellite with Depth-Resource Scanning Module +item.sat_laser.name=Orbital Death Ray (LEGACY) +item.sat_lunar_miner.name=Lunar Mining Ship (LEGACY) +item.sat_mapper.name=Surface Mapping Satellite (LEGACY) +item.sat_miner.name=Asteroid Mining Ship (LEGACY) +item.sat_radar.name=Radar Survey Satellite (LEGACY) +item.sat_resonator.name=Xenium Resonator Satellite (LEGACY) +item.sat_scanner.name=Satellite with Depth-Resource Scanning Module (LEGACY) +item.satellite.death_ray.name=Orbital Death Ray +item.satellite.miner_astro.name=Asteroid Mining Ship +item.satellite.miner_lunar.name=Lunar Mining Ship +item.satellite.precision_laser.name=Orbital Precision Laser +item.satellite.radar.name=Radar Satellite +item.satellite.relay.name=Relay Satellite +item.satellite.scanner.name=Depth Scanning Satellite +item.satellite.spy.name=Spy Satellite +item.satellite.xenium_resonator.name=Xenium Resonator Satellite item.sawblade.name=Sawblade item.schnitzel_vegan.name=Vegan Schnitzel item.schrabidium_axe.name=Schrabidium Axe @@ -5100,14 +5103,14 @@ tile.block_fluorite.name=Block of Fluorite tile.block_foam.name=Foam tile.block_insulator.name=Roll of Insulation tile.block_graphite.name=Block of Graphite -tile.block_graphite_detector.name=Pile Neutron Detector -tile.block_graphite_drilled.name=Drilled Graphite -tile.block_graphite_fuel.name=Pile Fuel -tile.block_graphite_lithium.name=Pile Lithium Fuel -tile.block_graphite_plutonium.name=Pile Fuel (Bred) -tile.block_graphite_rod.name=Pile Control Rod -tile.block_graphite_source.name=Pile Neutron Source -tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) +tile.block_graphite_detector.name=Pile Neutron Detector (LEGACY) +tile.block_graphite_drilled.name=Drilled Graphite (LEGACY) +tile.block_graphite_fuel.name=Pile Fuel (LEGACY) +tile.block_graphite_lithium.name=Pile Lithium Fuel (LEGACY) +tile.block_graphite_plutonium.name=Pile Fuel (Bred) (LEGACY) +tile.block_graphite_rod.name=Pile Control Rod (LEGACY) +tile.block_graphite_source.name=Pile Neutron Source (LEGACY) +tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) (LEGACY) tile.block_lead.name=Block of Lead tile.block_lanthanium.name=Block of Lanthanium tile.block_lithium.name=Block of Lithium @@ -5379,6 +5382,21 @@ tile.crystal_virus.name=Dark Crystal tile.deco_aluminium.name=Aluminium Deco Block tile.deco_asbestos.name=Asbestos Roof tile.deco_beryllium.name=Beryllium Deco Block +tile.platemetal.base.name=Platemetal Block +tile.platemetal.black.name=Black Platemetal Block +tile.platemetal.white.name=White Platemetal Block +tile.platemetal.red.name=Red Platemetal Block +tile.platemetal.green.name=Green Platemetal Block +tile.platemetal.light_gray.name=Light Gray Platemetal Block +tile.platemetal.blue.name=Blue Platemetal Block +tile.platemetal.purple.name=Purple Platemetal Block +tile.platemetal.cyan.name=Cyan Platemetal Block +tile.platemetal.pink.name=Pink Platemetal Block +tile.platemetal.lime.name=Lime Platemetal Block +tile.platemetal.yellow.name=Yellow Platemetal Block +tile.platemetal.light_blue.name=Light Blue Platemetal Block +tile.platemetal.magenta.name=Magenta Platemetal Block +tile.platemetal.orange.name=Orange Platemetal Block tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_crt.name=Old CRT Screen tile.deco_emitter.name=Deco Light Emitter @@ -5816,6 +5834,7 @@ tile.machine_rtg_orange.name=Strong RT Generator tile.machine_rtg_purple.name=Antimatter Annihilation Generator tile.machine_rtg_red.name=Fulmination Generator tile.machine_rtg_yellow.name=Australium Superfuel Reactor +tile.machine_satlink.name=Satellite Ground Station tile.machine_satlinker.name=Satellite ID Manager tile.machine_sawmill.name=Stirling Sawmill tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t @@ -6292,8 +6311,18 @@ tile.spotlight_fluoro.name=Fluorescent Light tile.spotlight_halogen.name=Halogen Floodlight tile.stalactite.asbestos.name=Asbestos Stalactite tile.stalactite.sulfur.name=Sulfurous Stalactite +tile.stalactite.ice.name=Icy Stalactite +tile.stalactite.snow.name=Snowy Stalactite +tile.stalactite.glyphid1.name=Glyphid Stalactite +tile.stalactite.glyphid2.name=Bloated Glyphid Stalactite +tile.stalactite.glyphid3.name=Putrid Glyphid Stalactite tile.stalagmite.asbestos.name=Asbestos Stalagmite tile.stalagmite.sulfur.name=Sulfurous Stalagmite +tile.stalagmite.ice.name=Icy Stalagmite +tile.stalagmite.snow.name=Snowy Stalagmite +tile.stalagmite.glyphid1.name=Glyphid Stalagmite +tile.stalagmite.glyphid2.name=Bloated Glyphid Stalagmite +tile.stalagmite.glyphid3.name=Putrid Glyphid Stalagmite tile.steel_beam.name=Steel Beam tile.steel_corner.name=Steel Wall Corner tile.steel_grate.name=Steel Grate diff --git a/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json b/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json new file mode 100644 index 000000000..4d3da0561 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/fluids/petroleum_gas.json @@ -0,0 +1,11 @@ +{ + "name": "Petroleum Gas", + "icon": ["hbm:item.fluid_icon", 1, 24], + "trigger": [["hbm:item.fluid_icon", 1, 24]], + "title": { + "en_US": "Petroleum Gas" + }, + "content": { + "en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] crude oil. Petroleum gas is the main ingredient in [[polymer|Polymer]], [[bakelite|Bakelite]], and [[perfluoromethyl|Perfluoromethyl]] making it a key ingredient for progression in all stages of the game. It is also the primary fluid used in [[fracking solution|Fracking Solution]].

See also:
[[Basic Oil Processing]]
[[Advanced Oil Processing]]
[[Vacuum Oil Processing]]" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json b/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json new file mode 100644 index 000000000..26d9d1384 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/asteroidminer.json @@ -0,0 +1,11 @@ +{ + "name": "Asteroid Mining Ship", + "icon": ["hbm:item.satellite", 1, 3], + "trigger": [["hbm:item.satellite", 1, 3]], + "title": { + "en_US": "Asteroid Mining Ship" + }, + "content": { + "en_US": "The asteroid mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined in space. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/lunarminer.json b/src/main/resources/assets/hbm/manual/satellite/lunarminer.json new file mode 100644 index 000000000..972a57927 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/lunarminer.json @@ -0,0 +1,11 @@ +{ + "name": "Lunar Mining Ship", + "icon": ["hbm:item.satellite", 1, 4], + "trigger": [["hbm:item.satellite", 1, 4]], + "title": { + "en_US": "Lunar Mining Ship" + }, + "content": { + "en_US": "The lunar mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined on the moon. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.

Unlike the [[asteroid mining ship|Asteroid Mining Ship]], the selection of items it can harvest is much smaller, however, the large quantities of moon turf it can produce are important for [[helium-3|Helium-3]], a powerful fuel for the [[fusion reactor|Fusion Reactor]].

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json b/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json new file mode 100644 index 000000000..11ed06953 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/orbitaldeathray.json @@ -0,0 +1,11 @@ +{ + "name": "Orbital Death Ray", + "icon": ["hbm:item.satellite", 1, 6], + "trigger": [["hbm:item.satellite", 1, 6]], + "title": { + "en_US": "Orbital Death Ray" + }, + "content": { + "en_US": "The orbital death ray is a powerful nuclear-powered orbital weapon firing a laser that deals as much damage as a high-yield mini nuke, but without the radiation. Despite the powerful energy source, the ray takes five minutes to fully charge. Unlike the [[precision laser|Orbital Precision Laser]], it lacks the entity targeting option that would let it shoot down missiles or hit fast-moving targets.

* '§efire§r' will fire the laser at the current target position, assuming the ray has finished charging.
* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the death ray is ready to fire.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json b/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json new file mode 100644 index 000000000..a06149353 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/orbitallaser.json @@ -0,0 +1,11 @@ +{ + "name": "Orbital Precision Laser", + "icon": ["hbm:item.satellite", 1, 5], + "trigger": [["hbm:item.satellite", 1, 5]], + "title": { + "en_US": "Orbital Precision Laser" + }, + "content": { + "en_US": "The orbital precision laser is a low-power weapon that harvests sunlight to charge up a small laser beam. The beam only takes five seconds to charge up, and deals marginally more block damage than TNT. The direct hit damage for struck entities is however much higher. When combined with the targeting data of a [[radar satellite|Radar Satellite]], it can potentially also shoot down missiles.

* '§efire§r' will fire the laser at the current target position, assuming the laser has finished charging. If the satellite has been supplied with entity target data, it will use the position of that entitiy instead, assuming it its within 1,000 blocks of the target position. After one shot, the entity targeting data is used up and the satellite's target position will be used again.
* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the laser is ready to fire.
* '§esetentitytarget §eid§r' supplies an entity ID for precise targeting, which is used up after one shot. The ID can be obtained from a radar satellite.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/radarsat.json b/src/main/resources/assets/hbm/manual/satellite/radarsat.json new file mode 100644 index 000000000..4a1664e97 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/radarsat.json @@ -0,0 +1,11 @@ +{ + "name": "Radar Satellite", + "icon": ["hbm:item.satellite", 1, 2], + "trigger": [["hbm:item.satellite", 1, 2]], + "title": { + "en_US": "Radar Satellite" + }, + "content": { + "en_US": "The radar satellite can detect all radar-detectable entities like players and missiles in a 1,000 block radius around its target position. It can compile, filter, and provide a list of detected objects, along with their type and exact position.

* '§esurvey§r' scans the area and saves the results to a base list and a filtered list. These two lists are now the same, and stored within the satellite.
* '§efilter §ename§r' will overwrite the filtered list with a new list, containing only entries from the original list that match that name filter. Since the original list is retained, the filter operation can be run multiple times for multiple types without needing a survey operation.
* '§ecount§r' writes the amount of entries on the filterd list to RX.
* '§egettargetid §eindex§r' retrieves the unique entity ID from that entry on the list. This ID can be used for precise entity targeting by other satellites.
* '§egetposition §eindex§r' retrieves the exact x/y/z position of the specified entry. The coordinates are separated by semicolons.
* '§egetname §eindex§r' retrieves the class name of that entry, this name is what's used for filtering.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/satellite.json b/src/main/resources/assets/hbm/manual/satellite/satellite.json new file mode 100644 index 000000000..4aa613831 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/satellite.json @@ -0,0 +1,11 @@ +{ + "name": "Satellite", + "icon": ["hbm:item.satellite"], + "trigger": [], + "title": { + "en_US": "Satellite" + }, + "content": { + "en_US": "Satellites can be launched into earth orbit using a [[Soyuz]] rocket. Satellites communicate with items and blocks on earth using frequencies, so in order to actually use one, it's necessary to set a random frequency in the satellite ID manager, and then copying that ID to another item, for example a satellite chip.

Some satellites can perform minor tasks when linked with certain items, like the [[depth scanning satellite|Depth Scanning Satellite]] enabling the neutrino lens, or the [[xenium resonator satellite|Xenium Resonator Satellite]] connected to a satellite laser designator allowing for short range line of sight teleportation. Satellites however are the most powerful when paired with [[Redstone over Radio]] by linking them to a [[ground station|Satellite Ground Station]].

By using a [[RoR reader|Redstone-over-Radio Reader]], ground stations can receive the RX value, which is received from the connected satellite. Each satellite can only provide one RX value at a time, and the value persists until it changes. The contents of RX depend on what function the satellite has performed prior.

By using a ground station's TX command, commands can be relayed to the connected satellite. Most commands vary between satellite types, however all satellites have a ground target, i.e. the spot on the surface they are aiming at.

The common target commands are as follows:
* '§esettarget §ex §ez§r' (Example RoR: '§6tx!settarget §6200 §6300§r')
* '§egettarget§r' (Example RoR: '§6tx!gettarget§r'), writes the current target X and Z separated by semicolon to the ground station's RX
* '§egettargetx§r'
* '§egettargetz§r'

See also:
* [[Spy Satellite]]
* [[Depth Scanning Satellite]]
* [[Radar Satellite]]
* [[Asteroid Mining Ship]]
* [[Lunar Mining Ship]]
* [[Orbital Precision Laser]]
* [[Orbital Death Ray]]
* [[Xenium Resonator Satellite]]
* [[Relay Satellite]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/satlink.json b/src/main/resources/assets/hbm/manual/satellite/satlink.json new file mode 100644 index 000000000..88dd83963 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/satlink.json @@ -0,0 +1,11 @@ +{ + "name": "Satellite Ground Station", + "icon": ["hbm:tile.machine_satlink"], + "trigger": [["hbm:tile.machine_satlink"]], + "title": { + "en_US": "Satellite Ground Station" + }, + "content": { + "en_US": "The satellite ground station is an advanced [[Redstone over Radio]] component that allows indirect connection of traditional RoR components and [[satellites|Satellite]]. It doesn't send or receive RoR signals directly, instead, it needs an external [[receiver|Redstone-over-Radio Controller]] or [[transmitter|Redstone-over-Radio Reader]] to interface with RoR.

The ground station can only connect to one satellite at a time. The frequency can be set either by using a configured satellite ID chip on the ground station, or via RoR command.

The two most important RoR functions the ground station has are RX and TX.

RX is a readable value that is relayed from the satellite. The contents of that value depend on the satellite, and is usually set in response to a command. For example, on the [[orbital precision laser|Orbital Precision Laser]], the function 'canfire' will set the RX value to either 'TRUE' or 'FALSE' depending on whether the laser is ready to fire.

TX is a function that allows commands to be relayed from the ground station to the satellite to control it or to request data. For example, the RoR command 'tx!settarget 200 300' will relay the command 'settarget 200 300' to the connected satellite. Do note that satellite commands do not use parameter separators like RoR commands do, since the satellite command is technically just one big RoR parameter.

In conjunction with the [[AUTOCAL]], the ground station becomes incredibly powerful, as it allows for automated targeting of satellites, data processing and more. For example, a [[radar satellite|Radar Satellite]] could survey the airspace for airborne missiles, relay that data to the AUTOCAL which then sends a signal to a precision laser which intercepts the missile." + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/scansat.json b/src/main/resources/assets/hbm/manual/satellite/scansat.json new file mode 100644 index 000000000..b1b83b58d --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/scansat.json @@ -0,0 +1,11 @@ +{ + "name": "Depth Scanning Satellite", + "icon": ["hbm:item.satellite", 1, 1], + "trigger": [["hbm:item.satellite", 1, 1]], + "title": { + "en_US": "Depth Scanning Satellite" + }, + "content": { + "en_US": "The depth scanning satellite is required for the neutrino lens to work. It does not yet have any special interactions with the ground station.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/spysat.json b/src/main/resources/assets/hbm/manual/satellite/spysat.json new file mode 100644 index 000000000..c886755bc --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/spysat.json @@ -0,0 +1,11 @@ +{ + "name": "Spy Satellite", + "icon": ["hbm:item.satellite", 1, 0], + "trigger": [["hbm:item.satellite", 1, 0]], + "title": { + "en_US": "Spy Satellite" + }, + "content": { + "en_US": "The spy satellite allows remote viewing of earth's surface. Due to RoR pixel displays not existing as of now, surface mapping functionality does not yet work. However, they can be used in detecting loaded chunks and spotting players in a small radius.

* '§etargetloaded§r' writes 'TRUE' or 'FALSE' to RX depending on if the chunk that the satellite is pointed at is loaded or not.
* '§espotplayers§r' detects surface players in a 250 block radius and writes all names separated by semicolon to RX.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/manual/satellite/xenrelay.json b/src/main/resources/assets/hbm/manual/satellite/xenrelay.json new file mode 100644 index 000000000..624506f12 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/satellite/xenrelay.json @@ -0,0 +1,11 @@ +{ + "name": "Xenium Resonator Satellite", + "icon": ["hbm:item.satellite", 1, 7], + "trigger": [["hbm:item.satellite", 1, 7]], + "title": { + "en_US": "Xenium Resonator Satellite" + }, + "content": { + "en_US": "The xenium resonator allows teleportation within the same dimension. It can be controlled either with a satellite designator or the satellite laser designator. When using the satellite designator, the Y value can be omitted, which will default it to surface level.

See also:
* [[Satellite]]
* [[Satellite Ground Station]]" + } +} diff --git a/src/main/resources/assets/hbm/models/machines/battery.obj b/src/main/resources/assets/hbm/models/machines/battery.obj index 850bcf5b7..5a3c21f9a 100644 --- a/src/main/resources/assets/hbm/models/machines/battery.obj +++ b/src/main/resources/assets/hbm/models/machines/battery.obj @@ -152,6 +152,14 @@ v -0.750000 1.750000 -0.750000 v -0.750000 1.750000 0.750000 v 0.750000 1.750000 0.750000 v 0.750000 1.750000 -0.750000 +v -0.875000 0.125000 0.875000 +v 0.875000 0.125000 0.875000 +v -0.875000 0.125000 -0.875000 +v 0.875000 0.125000 -0.875000 +v -0.875000 1.875000 -0.875000 +v -0.875000 1.875000 0.875000 +v 0.875000 1.875000 0.875000 +v 0.875000 1.875000 -0.875000 vt 0.269231 0.000000 vt 0.000000 0.333333 vt 0.000000 0.000000 @@ -180,10 +188,26 @@ vt 1.000000 0.285714 vt 0.769231 0.571429 vt 1.000000 0.285714 vt 0.769231 0.571429 +vt 0.000000 0.333333 +vt 0.269231 0.000000 +vt 0.000000 0.000000 +vt 0.269231 1.000000 +vt 0.000000 0.666667 +vt 0.000000 1.000000 +vt -0.000000 0.666667 +vt 0.269231 0.333333 +vt -0.000000 0.333333 +vt 0.269231 0.666667 +vt 0.538462 0.333333 +vt 0.269231 0.333333 +vt 0.269231 0.666667 +vt 0.538462 0.333333 vt 0.538462 0.666667 vt 0.538462 0.666667 vt 1.000000 0.571429 vt 1.000000 0.571429 +vt 0.538462 0.666667 +vt 0.538462 0.666667 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 vn -1.0000 0.0000 0.0000 @@ -203,18 +227,30 @@ f 44/77/11 47/74/11 42/72/11 f 41/78/8 45/79/8 43/80/8 f 43/81/9 48/82/9 44/77/9 f 42/83/10 46/84/10 41/78/10 +f 50/85/7 51/86/7 49/87/7 +f 53/88/6 55/89/6 54/90/6 +f 53/91/11 49/92/11 51/93/11 +f 56/94/10 51/95/10 52/96/10 +f 54/97/9 50/98/9 49/92/9 +f 55/89/8 52/96/8 50/85/8 f 35/57/6 36/68/6 34/58/6 f 39/60/7 40/67/7 37/61/7 f 33/63/8 38/70/8 37/64/8 -f 35/66/9 37/85/9 40/67/9 -f 34/69/10 39/86/10 38/70/10 +f 35/66/9 37/99/9 40/67/9 +f 34/69/10 39/100/10 38/70/10 f 36/68/11 40/67/11 39/60/11 f 43/71/6 44/77/6 42/72/6 f 47/74/7 48/82/7 45/75/7 f 44/77/11 48/82/11 47/74/11 f 41/78/8 46/84/8 45/79/8 -f 43/81/9 45/87/9 48/82/9 -f 42/83/10 47/88/10 46/84/10 +f 43/81/9 45/101/9 48/82/9 +f 42/83/10 47/102/10 46/84/10 +f 50/85/7 52/96/7 51/86/7 +f 53/88/6 56/94/6 55/89/6 +f 53/91/11 54/97/11 49/92/11 +f 56/94/10 53/103/10 51/95/10 +f 54/97/9 55/104/9 50/98/9 +f 55/89/8 56/94/8 52/96/8 o Battery v 0.687500 1.875000 -0.875000 v 0.875000 1.875000 -0.687500 @@ -483,158 +519,158 @@ vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn -1.0000 0.0000 0.0000 s off -f 56/89/12 62/90/12 70/91/12 -f 83/92/13 74/93/13 51/94/13 -f 68/95/14 51/96/14 74/97/14 -f 68/98/15 64/99/15 58/100/15 -f 72/101/15 63/102/15 74/103/15 -f 58/104/16 60/105/16 65/106/16 -f 58/104/13 56/89/13 55/107/13 -f 60/108/14 66/109/14 65/110/14 -f 70/111/17 68/112/17 67/113/17 -f 62/114/18 64/99/18 63/115/18 -f 64/99/19 56/89/19 57/116/19 -f 75/117/18 73/118/18 78/119/18 -f 77/120/20 71/121/20 76/122/20 -f 63/123/13 54/124/13 62/125/13 -f 75/117/15 84/126/15 92/127/15 -f 62/128/12 50/129/12 77/130/12 -f 90/131/21 86/132/21 81/133/21 -f 78/134/17 76/122/17 75/135/17 -f 49/136/18 72/101/18 71/121/18 -f 72/101/19 54/124/19 53/137/19 -f 88/138/14 52/139/14 92/140/14 -f 59/141/13 80/142/13 66/143/13 -f 80/142/16 82/144/16 85/145/16 -f 83/146/12 78/119/12 95/147/12 -f 82/148/14 86/132/14 85/149/14 -f 90/131/17 88/150/17 87/151/17 -f 67/152/18 83/153/18 70/154/18 -f 85/155/15 87/156/15 84/157/15 -f 96/158/21 92/140/21 52/139/21 -f 95/159/20 91/160/20 94/161/20 -f 89/162/12 81/163/12 79/164/12 -f 96/158/17 94/161/17 93/165/17 -f 108/166/20 104/167/20 105/168/20 -f 100/169/12 104/167/12 102/170/12 -f 108/171/15 106/172/15 110/173/15 -f 112/174/21 102/170/21 107/175/21 -f 106/172/19 100/169/19 109/176/19 -f 106/172/18 104/177/18 103/178/18 -f 102/179/17 108/166/17 107/180/17 -f 112/174/14 98/181/14 97/182/14 -f 100/183/13 110/184/13 109/185/13 -f 110/184/16 98/186/16 111/187/16 -f 124/188/20 120/189/20 121/190/20 -f 116/191/12 120/189/12 118/192/12 -f 124/193/15 122/194/15 126/195/15 -f 128/196/21 118/192/21 123/197/21 -f 122/194/19 116/191/19 125/198/19 -f 122/194/18 120/199/18 119/200/18 -f 118/201/17 124/188/17 123/202/17 -f 128/196/14 114/203/14 113/204/14 -f 116/205/13 126/206/13 125/207/13 -f 126/206/16 114/208/16 127/209/16 -f 70/91/12 59/210/12 60/211/12 -f 60/211/12 55/212/12 56/89/12 -f 56/89/12 61/213/12 62/90/12 -f 62/90/12 69/214/12 70/91/12 -f 70/91/12 60/211/12 56/89/12 -f 83/92/13 84/215/13 74/93/13 -f 68/95/14 69/216/14 51/96/14 -f 58/100/15 65/217/15 66/218/15 -f 66/218/15 67/219/15 68/98/15 -f 68/98/15 63/220/15 64/99/15 -f 64/99/15 57/116/15 58/100/15 -f 58/100/15 66/218/15 68/98/15 -f 74/103/15 75/221/15 76/222/15 -f 76/222/15 71/223/15 72/101/15 -f 72/101/15 53/137/15 63/102/15 -f 63/102/15 68/224/15 74/103/15 -f 74/103/15 76/222/15 72/101/15 -f 58/104/16 55/107/16 60/105/16 -f 58/104/13 57/116/13 56/89/13 -f 60/108/14 59/225/14 66/109/14 -f 70/111/17 69/226/17 68/112/17 -f 62/114/18 61/213/18 64/99/18 -f 64/99/19 61/213/19 56/89/19 -f 75/117/18 91/160/18 73/118/18 -f 77/120/20 49/136/20 71/121/20 -f 63/123/13 53/137/13 54/124/13 -f 92/127/15 93/227/15 94/228/15 -f 94/228/15 91/229/15 75/117/15 -f 75/117/15 74/93/15 84/126/15 -f 84/126/15 88/230/15 92/127/15 -f 92/127/15 94/228/15 75/117/15 -f 77/130/12 78/231/12 51/232/12 -f 51/232/12 69/233/12 62/128/12 -f 62/128/12 54/124/12 50/129/12 -f 50/129/12 49/234/12 77/130/12 -f 77/130/12 51/232/12 62/128/12 -f 90/131/21 87/151/21 86/132/21 -f 78/134/17 77/120/17 76/122/17 -f 49/136/18 50/129/18 72/101/18 -f 72/101/19 50/129/19 54/124/19 -f 88/138/14 89/235/14 52/139/14 -f 59/141/13 79/236/13 80/142/13 -f 80/142/16 79/236/16 82/144/16 -f 95/147/12 96/237/12 52/238/12 -f 52/238/12 89/239/12 83/146/12 -f 83/146/12 51/94/12 78/119/12 -f 78/119/12 73/240/12 95/147/12 -f 95/147/12 52/238/12 83/146/12 -f 82/148/14 81/133/14 86/132/14 -f 90/131/17 89/241/17 88/150/17 -f 67/152/18 84/242/18 83/153/18 -f 84/157/15 67/152/15 66/143/15 -f 66/143/15 80/243/15 85/155/15 -f 85/155/15 86/244/15 87/156/15 -f 87/156/15 88/245/15 84/157/15 -f 84/157/15 66/143/15 85/155/15 -f 96/158/21 93/165/21 92/140/21 -f 95/159/20 73/118/20 91/160/20 -f 79/164/12 59/141/12 70/154/12 -f 70/154/12 83/246/12 89/162/12 -f 89/162/12 90/247/12 81/163/12 -f 81/163/12 82/248/12 79/164/12 -f 79/164/12 70/154/12 89/162/12 -f 96/158/17 95/159/17 94/161/17 -f 108/166/20 101/249/20 104/167/20 -f 102/170/12 97/182/12 98/186/12 -f 98/186/12 99/250/12 100/169/12 -f 100/169/12 103/178/12 104/167/12 -f 104/167/12 101/249/12 102/170/12 -f 102/170/12 98/186/12 100/169/12 -f 110/173/15 111/251/15 112/252/15 -f 112/252/15 107/253/15 108/171/15 -f 108/171/15 105/254/15 106/172/15 -f 106/172/15 109/176/15 110/173/15 -f 110/173/15 112/252/15 108/171/15 -f 112/174/21 97/182/21 102/170/21 -f 106/172/19 103/178/19 100/169/19 -f 106/172/18 105/255/18 104/177/18 -f 102/179/17 101/249/17 108/166/17 -f 112/174/14 111/256/14 98/181/14 -f 100/183/13 99/250/13 110/184/13 -f 110/184/16 99/250/16 98/186/16 -f 124/188/20 117/257/20 120/189/20 -f 118/192/12 113/204/12 114/208/12 -f 114/208/12 115/258/12 116/191/12 -f 116/191/12 119/200/12 120/189/12 -f 120/189/12 117/257/12 118/192/12 -f 118/192/12 114/208/12 116/191/12 -f 126/195/15 127/259/15 128/260/15 -f 128/260/15 123/261/15 124/193/15 -f 124/193/15 121/262/15 122/194/15 -f 122/194/15 125/198/15 126/195/15 -f 126/195/15 128/260/15 124/193/15 -f 128/196/21 113/204/21 118/192/21 -f 122/194/19 119/200/19 116/191/19 -f 122/194/18 121/263/18 120/199/18 -f 118/201/17 117/257/17 124/188/17 -f 128/196/14 127/264/14 114/203/14 -f 116/205/13 115/258/13 126/206/13 -f 126/206/16 115/258/16 114/208/16 +f 64/105/12 70/106/12 78/107/12 +f 91/108/13 82/109/13 59/110/13 +f 76/111/14 59/112/14 82/113/14 +f 76/114/15 72/115/15 66/116/15 +f 80/117/15 71/118/15 82/119/15 +f 66/120/16 68/121/16 73/122/16 +f 66/120/13 64/105/13 63/123/13 +f 68/124/14 74/125/14 73/126/14 +f 78/127/17 76/128/17 75/129/17 +f 70/130/18 72/115/18 71/131/18 +f 72/115/19 64/105/19 65/132/19 +f 83/133/18 81/134/18 86/135/18 +f 85/136/20 79/137/20 84/138/20 +f 71/139/13 62/140/13 70/141/13 +f 83/133/15 92/142/15 100/143/15 +f 70/144/12 58/145/12 85/146/12 +f 98/147/21 94/148/21 89/149/21 +f 86/150/17 84/138/17 83/151/17 +f 57/152/18 80/117/18 79/137/18 +f 80/117/19 62/140/19 61/153/19 +f 96/154/14 60/155/14 100/156/14 +f 67/157/13 88/158/13 74/159/13 +f 88/158/16 90/160/16 93/161/16 +f 91/162/12 86/135/12 103/163/12 +f 90/164/14 94/148/14 93/165/14 +f 98/147/17 96/166/17 95/167/17 +f 75/168/18 91/169/18 78/170/18 +f 93/171/15 95/172/15 92/173/15 +f 104/174/21 100/156/21 60/155/21 +f 103/175/20 99/176/20 102/177/20 +f 97/178/12 89/179/12 87/180/12 +f 104/174/17 102/177/17 101/181/17 +f 116/182/20 112/183/20 113/184/20 +f 108/185/12 112/183/12 110/186/12 +f 116/187/15 114/188/15 118/189/15 +f 120/190/21 110/186/21 115/191/21 +f 114/188/19 108/185/19 117/192/19 +f 114/188/18 112/193/18 111/194/18 +f 110/195/17 116/182/17 115/196/17 +f 120/190/14 106/197/14 105/198/14 +f 108/199/13 118/200/13 117/201/13 +f 118/200/16 106/202/16 119/203/16 +f 132/204/20 128/205/20 129/206/20 +f 124/207/12 128/205/12 126/208/12 +f 132/209/15 130/210/15 134/211/15 +f 136/212/21 126/208/21 131/213/21 +f 130/210/19 124/207/19 133/214/19 +f 130/210/18 128/215/18 127/216/18 +f 126/217/17 132/204/17 131/218/17 +f 136/212/14 122/219/14 121/220/14 +f 124/221/13 134/222/13 133/223/13 +f 134/222/16 122/224/16 135/225/16 +f 78/107/12 67/226/12 68/227/12 +f 68/227/12 63/228/12 64/105/12 +f 64/105/12 69/229/12 70/106/12 +f 70/106/12 77/230/12 78/107/12 +f 78/107/12 68/227/12 64/105/12 +f 91/108/13 92/231/13 82/109/13 +f 76/111/14 77/232/14 59/112/14 +f 66/116/15 73/233/15 74/234/15 +f 74/234/15 75/235/15 76/114/15 +f 76/114/15 71/236/15 72/115/15 +f 72/115/15 65/132/15 66/116/15 +f 66/116/15 74/234/15 76/114/15 +f 82/119/15 83/237/15 84/238/15 +f 84/238/15 79/239/15 80/117/15 +f 80/117/15 61/153/15 71/118/15 +f 71/118/15 76/240/15 82/119/15 +f 82/119/15 84/238/15 80/117/15 +f 66/120/16 63/123/16 68/121/16 +f 66/120/13 65/132/13 64/105/13 +f 68/124/14 67/241/14 74/125/14 +f 78/127/17 77/242/17 76/128/17 +f 70/130/18 69/229/18 72/115/18 +f 72/115/19 69/229/19 64/105/19 +f 83/133/18 99/176/18 81/134/18 +f 85/136/20 57/152/20 79/137/20 +f 71/139/13 61/153/13 62/140/13 +f 100/143/15 101/243/15 102/244/15 +f 102/244/15 99/245/15 83/133/15 +f 83/133/15 82/109/15 92/142/15 +f 92/142/15 96/246/15 100/143/15 +f 100/143/15 102/244/15 83/133/15 +f 85/146/12 86/247/12 59/248/12 +f 59/248/12 77/249/12 70/144/12 +f 70/144/12 62/140/12 58/145/12 +f 58/145/12 57/250/12 85/146/12 +f 85/146/12 59/248/12 70/144/12 +f 98/147/21 95/167/21 94/148/21 +f 86/150/17 85/136/17 84/138/17 +f 57/152/18 58/145/18 80/117/18 +f 80/117/19 58/145/19 62/140/19 +f 96/154/14 97/251/14 60/155/14 +f 67/157/13 87/252/13 88/158/13 +f 88/158/16 87/252/16 90/160/16 +f 103/163/12 104/253/12 60/254/12 +f 60/254/12 97/255/12 91/162/12 +f 91/162/12 59/110/12 86/135/12 +f 86/135/12 81/256/12 103/163/12 +f 103/163/12 60/254/12 91/162/12 +f 90/164/14 89/149/14 94/148/14 +f 98/147/17 97/257/17 96/166/17 +f 75/168/18 92/258/18 91/169/18 +f 92/173/15 75/168/15 74/159/15 +f 74/159/15 88/259/15 93/171/15 +f 93/171/15 94/260/15 95/172/15 +f 95/172/15 96/261/15 92/173/15 +f 92/173/15 74/159/15 93/171/15 +f 104/174/21 101/181/21 100/156/21 +f 103/175/20 81/134/20 99/176/20 +f 87/180/12 67/157/12 78/170/12 +f 78/170/12 91/262/12 97/178/12 +f 97/178/12 98/263/12 89/179/12 +f 89/179/12 90/264/12 87/180/12 +f 87/180/12 78/170/12 97/178/12 +f 104/174/17 103/175/17 102/177/17 +f 116/182/20 109/265/20 112/183/20 +f 110/186/12 105/198/12 106/202/12 +f 106/202/12 107/266/12 108/185/12 +f 108/185/12 111/194/12 112/183/12 +f 112/183/12 109/265/12 110/186/12 +f 110/186/12 106/202/12 108/185/12 +f 118/189/15 119/267/15 120/268/15 +f 120/268/15 115/269/15 116/187/15 +f 116/187/15 113/270/15 114/188/15 +f 114/188/15 117/192/15 118/189/15 +f 118/189/15 120/268/15 116/187/15 +f 120/190/21 105/198/21 110/186/21 +f 114/188/19 111/194/19 108/185/19 +f 114/188/18 113/271/18 112/193/18 +f 110/195/17 109/265/17 116/182/17 +f 120/190/14 119/272/14 106/197/14 +f 108/199/13 107/266/13 118/200/13 +f 118/200/16 107/266/16 106/202/16 +f 132/204/20 125/273/20 128/205/20 +f 126/208/12 121/220/12 122/224/12 +f 122/224/12 123/274/12 124/207/12 +f 124/207/12 127/216/12 128/205/12 +f 128/205/12 125/273/12 126/208/12 +f 126/208/12 122/224/12 124/207/12 +f 134/211/15 135/275/15 136/276/15 +f 136/276/15 131/277/15 132/209/15 +f 132/209/15 129/278/15 130/210/15 +f 130/210/15 133/214/15 134/211/15 +f 134/211/15 136/276/15 132/209/15 +f 136/212/21 121/220/21 126/208/21 +f 130/210/19 127/216/19 124/207/19 +f 130/210/18 129/279/18 128/215/18 +f 126/217/17 125/273/17 132/204/17 +f 136/212/14 135/280/14 122/219/14 +f 124/221/13 123/274/13 134/222/13 +f 134/222/16 123/274/16 122/224/16 o Socket v -1.000000 0.000000 1.000000 v 1.000000 0.000000 1.000000 @@ -1037,199 +1073,199 @@ vn -0.7099 0.7043 0.0000 vn 0.7099 -0.7043 0.0000 vn -0.7071 -0.7071 0.0000 s off -f 131/265/22 130/266/22 129/267/22 -f 136/268/23 151/269/23 134/270/23 -f 131/265/24 140/271/24 132/272/24 -f 130/266/25 138/273/25 129/267/25 -f 132/272/26 139/274/26 130/266/26 -f 129/267/23 137/275/23 131/265/23 -f 135/276/27 138/277/27 133/278/27 -f 133/278/27 139/274/27 134/279/27 -f 134/279/27 140/280/27 136/281/27 -f 136/281/27 137/282/27 135/276/27 -f 142/283/26 143/284/26 141/285/26 -f 145/286/23 147/287/23 146/288/23 -f 151/269/27 149/289/27 150/290/27 -f 143/284/27 146/288/27 141/285/27 -f 144/291/24 145/286/24 143/284/24 -f 141/285/25 147/292/25 142/293/25 -f 133/294/26 149/289/26 135/295/26 -f 135/296/25 152/297/25 136/298/25 -f 134/299/24 150/290/24 133/300/24 -f 154/301/26 155/302/26 153/303/26 -f 157/304/23 159/305/23 158/306/23 -f 155/302/27 158/306/27 153/303/27 -f 156/307/24 157/304/24 155/302/24 -f 153/303/25 159/308/25 154/309/25 -f 162/310/23 163/311/23 161/312/23 -f 165/313/26 167/314/26 166/315/26 -f 163/311/27 166/315/27 161/312/27 -f 164/316/25 165/313/25 163/311/25 -f 161/312/24 167/317/24 162/318/24 -f 170/319/23 171/320/23 169/321/23 -f 173/322/26 175/323/26 174/324/26 -f 171/320/27 174/324/27 169/321/27 -f 172/325/25 173/322/25 171/320/25 -f 169/321/24 175/326/24 170/327/24 -f 178/328/24 179/329/24 177/330/24 -f 181/331/25 183/332/25 182/333/25 -f 179/329/27 182/333/27 177/330/27 -f 180/334/23 181/331/23 179/329/23 -f 177/330/26 183/335/26 178/336/26 -f 186/337/24 187/338/24 185/339/24 -f 189/340/25 191/341/25 190/342/25 -f 187/338/27 190/342/27 185/339/27 -f 188/343/23 189/340/23 187/338/23 -f 185/339/26 191/344/26 186/345/26 -f 194/346/25 195/347/25 193/348/25 -f 197/349/24 199/350/24 198/351/24 -f 195/347/27 198/351/27 193/348/27 -f 196/352/26 197/349/26 195/347/26 -f 193/348/23 199/353/23 194/354/23 -f 202/355/25 203/356/25 201/357/25 -f 205/358/24 207/359/24 206/360/24 -f 203/356/27 206/360/27 201/357/27 -f 204/361/26 205/358/26 203/356/26 -f 201/357/23 207/362/23 202/363/23 -f 210/364/24 225/365/24 209/366/24 -f 224/367/27 222/368/27 223/369/27 -f 220/370/27 218/371/27 219/372/27 -f 216/373/24 221/374/24 217/375/24 -f 215/376/25 219/377/25 214/378/25 -f 217/375/26 220/370/26 215/376/26 -f 214/379/23 218/380/23 216/373/23 -f 211/381/25 223/382/25 212/383/25 -f 209/366/26 224/367/26 211/381/26 -f 212/384/23 222/385/23 210/364/23 -f 227/386/24 241/387/24 226/388/24 -f 240/389/27 238/390/27 239/391/27 -f 236/392/27 234/393/27 235/394/27 -f 232/395/24 237/396/24 233/397/24 -f 231/398/25 235/399/25 230/400/25 -f 233/397/26 236/392/26 231/398/26 -f 230/401/23 234/402/23 232/395/23 -f 228/403/25 239/404/25 229/405/25 -f 226/388/26 240/389/26 228/403/26 -f 229/406/23 238/407/23 227/386/23 -f 242/408/27 243/409/27 213/410/27 -f 242/408/28 246/411/28 244/412/28 -f 245/413/26 248/414/26 246/411/26 -f 243/409/29 249/415/29 213/410/29 -f 250/416/23 251/417/23 249/415/23 -f 254/418/27 255/419/27 253/420/27 -f 254/418/28 258/421/28 256/422/28 -f 257/423/26 260/424/26 258/421/26 -f 255/419/29 261/425/29 253/420/29 -f 262/426/23 263/427/23 261/425/23 -f 217/375/22 214/428/22 216/429/22 -f 233/397/22 230/430/22 232/431/22 -f 228/403/22 227/432/22 226/388/22 -f 211/381/22 210/433/22 209/366/22 -f 266/434/26 267/435/26 268/436/26 -f 268/436/30 274/437/30 276/438/30 -f 269/439/23 272/440/23 271/441/23 -f 271/441/31 275/442/31 273/443/31 -f 274/437/22 275/442/22 276/438/22 -f 278/444/26 279/445/26 280/446/26 -f 280/446/30 286/447/30 288/448/30 -f 281/449/23 284/450/23 283/451/23 -f 283/451/31 287/452/31 285/453/31 -f 286/447/22 287/452/22 288/448/22 -f 131/265/22 132/272/22 130/266/22 -f 136/268/23 152/297/23 151/269/23 -f 131/265/24 137/454/24 140/271/24 -f 130/266/25 139/455/25 138/273/25 -f 132/272/26 140/280/26 139/274/26 -f 129/267/23 138/456/23 137/275/23 -f 135/276/27 137/282/27 138/277/27 -f 133/278/27 138/277/27 139/274/27 -f 134/279/27 139/274/27 140/280/27 -f 136/281/27 140/280/27 137/282/27 -f 142/283/26 144/457/26 143/284/26 -f 145/286/23 148/458/23 147/287/23 -f 151/269/27 152/297/27 149/289/27 -f 143/284/27 145/286/27 146/288/27 -f 144/291/24 148/459/24 145/286/24 -f 141/285/25 146/288/25 147/292/25 -f 133/294/26 150/290/26 149/289/26 -f 135/296/25 149/289/25 152/297/25 -f 134/299/24 151/269/24 150/290/24 -f 154/301/26 156/460/26 155/302/26 -f 157/304/23 160/461/23 159/305/23 -f 155/302/27 157/304/27 158/306/27 -f 156/307/24 160/462/24 157/304/24 -f 153/303/25 158/306/25 159/308/25 -f 162/310/23 164/463/23 163/311/23 -f 165/313/26 168/464/26 167/314/26 -f 163/311/27 165/313/27 166/315/27 -f 164/316/25 168/465/25 165/313/25 -f 161/312/24 166/315/24 167/317/24 -f 170/319/23 172/466/23 171/320/23 -f 173/322/26 176/467/26 175/323/26 -f 171/320/27 173/322/27 174/324/27 -f 172/325/25 176/468/25 173/322/25 -f 169/321/24 174/324/24 175/326/24 -f 178/328/24 180/469/24 179/329/24 -f 181/331/25 184/470/25 183/332/25 -f 179/329/27 181/331/27 182/333/27 -f 180/334/23 184/471/23 181/331/23 -f 177/330/26 182/333/26 183/335/26 -f 186/337/24 188/472/24 187/338/24 -f 189/340/25 192/473/25 191/341/25 -f 187/338/27 189/340/27 190/342/27 -f 188/343/23 192/474/23 189/340/23 -f 185/339/26 190/342/26 191/344/26 -f 194/346/25 196/475/25 195/347/25 -f 197/349/24 200/476/24 199/350/24 -f 195/347/27 197/349/27 198/351/27 -f 196/352/26 200/477/26 197/349/26 -f 193/348/23 198/351/23 199/353/23 -f 202/355/25 204/478/25 203/356/25 -f 205/358/24 208/479/24 207/359/24 -f 203/356/27 205/358/27 206/360/27 -f 204/361/26 208/480/26 205/358/26 -f 201/357/23 206/360/23 207/362/23 -f 210/364/24 222/385/24 225/365/24 -f 224/367/27 225/365/27 222/368/27 -f 220/370/27 221/374/27 218/371/27 -f 216/373/24 218/380/24 221/374/24 -f 215/376/25 220/370/25 219/377/25 -f 217/375/26 221/374/26 220/370/26 -f 214/379/23 219/481/23 218/380/23 -f 211/381/25 224/367/25 223/382/25 -f 209/366/26 225/365/26 224/367/26 -f 212/384/23 223/482/23 222/385/23 -f 227/386/24 238/407/24 241/387/24 -f 240/389/27 241/387/27 238/390/27 -f 236/392/27 237/396/27 234/393/27 -f 232/395/24 234/402/24 237/396/24 -f 231/398/25 236/392/25 235/399/25 -f 233/397/26 237/396/26 236/392/26 -f 230/401/23 235/483/23 234/402/23 -f 228/403/25 240/389/25 239/404/25 -f 226/388/26 241/387/26 240/389/26 -f 229/406/23 239/484/23 238/407/23 -f 242/408/27 244/412/27 243/409/27 -f 242/408/28 245/413/28 246/411/28 -f 245/413/26 247/485/26 248/414/26 -f 243/409/29 250/416/29 249/415/29 -f 250/416/23 252/486/23 251/417/23 -f 254/418/27 256/422/27 255/419/27 -f 254/418/28 257/423/28 258/421/28 -f 257/423/26 259/487/26 260/424/26 -f 255/419/29 262/426/29 261/425/29 -f 262/426/23 264/488/23 263/427/23 -f 217/375/22 215/376/22 214/428/22 -f 233/397/22 231/398/22 230/430/22 -f 228/403/22 229/489/22 227/432/22 -f 211/381/22 212/490/22 210/433/22 -f 266/434/26 265/491/26 267/435/26 -f 268/436/30 267/435/30 274/437/30 -f 269/439/23 270/492/23 272/440/23 -f 271/441/31 272/440/31 275/442/31 -f 274/437/22 273/443/22 275/442/22 -f 278/444/26 277/493/26 279/445/26 -f 280/446/30 279/445/30 286/447/30 -f 281/449/23 282/494/23 284/450/23 -f 283/451/31 284/450/31 287/452/31 -f 286/447/22 285/453/22 287/452/22 +f 139/281/22 138/282/22 137/283/22 +f 144/284/23 159/285/23 142/286/23 +f 139/281/24 148/287/24 140/288/24 +f 138/282/25 146/289/25 137/283/25 +f 140/288/26 147/290/26 138/282/26 +f 137/283/23 145/291/23 139/281/23 +f 143/292/27 146/293/27 141/294/27 +f 141/294/27 147/290/27 142/295/27 +f 142/295/27 148/296/27 144/297/27 +f 144/297/27 145/298/27 143/292/27 +f 150/299/26 151/300/26 149/301/26 +f 153/302/23 155/303/23 154/304/23 +f 159/285/27 157/305/27 158/306/27 +f 151/300/27 154/304/27 149/301/27 +f 152/307/24 153/302/24 151/300/24 +f 149/301/25 155/308/25 150/309/25 +f 141/310/26 157/305/26 143/311/26 +f 143/312/25 160/313/25 144/314/25 +f 142/315/24 158/306/24 141/316/24 +f 162/317/26 163/318/26 161/319/26 +f 165/320/23 167/321/23 166/322/23 +f 163/318/27 166/322/27 161/319/27 +f 164/323/24 165/320/24 163/318/24 +f 161/319/25 167/324/25 162/325/25 +f 170/326/23 171/327/23 169/328/23 +f 173/329/26 175/330/26 174/331/26 +f 171/327/27 174/331/27 169/328/27 +f 172/332/25 173/329/25 171/327/25 +f 169/328/24 175/333/24 170/334/24 +f 178/335/23 179/336/23 177/337/23 +f 181/338/26 183/339/26 182/340/26 +f 179/336/27 182/340/27 177/337/27 +f 180/341/25 181/338/25 179/336/25 +f 177/337/24 183/342/24 178/343/24 +f 186/344/24 187/345/24 185/346/24 +f 189/347/25 191/348/25 190/349/25 +f 187/345/27 190/349/27 185/346/27 +f 188/350/23 189/347/23 187/345/23 +f 185/346/26 191/351/26 186/352/26 +f 194/353/24 195/354/24 193/355/24 +f 197/356/25 199/357/25 198/358/25 +f 195/354/27 198/358/27 193/355/27 +f 196/359/23 197/356/23 195/354/23 +f 193/355/26 199/360/26 194/361/26 +f 202/362/25 203/363/25 201/364/25 +f 205/365/24 207/366/24 206/367/24 +f 203/363/27 206/367/27 201/364/27 +f 204/368/26 205/365/26 203/363/26 +f 201/364/23 207/369/23 202/370/23 +f 210/371/25 211/372/25 209/373/25 +f 213/374/24 215/375/24 214/376/24 +f 211/372/27 214/376/27 209/373/27 +f 212/377/26 213/374/26 211/372/26 +f 209/373/23 215/378/23 210/379/23 +f 218/380/24 233/381/24 217/382/24 +f 232/383/27 230/384/27 231/385/27 +f 228/386/27 226/387/27 227/388/27 +f 224/389/24 229/390/24 225/391/24 +f 223/392/25 227/393/25 222/394/25 +f 225/391/26 228/386/26 223/392/26 +f 222/395/23 226/396/23 224/389/23 +f 219/397/25 231/398/25 220/399/25 +f 217/382/26 232/383/26 219/397/26 +f 220/400/23 230/401/23 218/380/23 +f 235/402/24 249/403/24 234/404/24 +f 248/405/27 246/406/27 247/407/27 +f 244/408/27 242/409/27 243/410/27 +f 240/411/24 245/412/24 241/413/24 +f 239/414/25 243/415/25 238/416/25 +f 241/413/26 244/408/26 239/414/26 +f 238/417/23 242/418/23 240/411/23 +f 236/419/25 247/420/25 237/421/25 +f 234/404/26 248/405/26 236/419/26 +f 237/422/23 246/423/23 235/402/23 +f 250/424/27 251/425/27 221/426/27 +f 250/424/28 254/427/28 252/428/28 +f 253/429/26 256/430/26 254/427/26 +f 251/425/29 257/431/29 221/426/29 +f 258/432/23 259/433/23 257/431/23 +f 262/434/27 263/435/27 261/436/27 +f 262/434/28 266/437/28 264/438/28 +f 265/439/26 268/440/26 266/437/26 +f 263/435/29 269/441/29 261/436/29 +f 270/442/23 271/443/23 269/441/23 +f 225/391/22 222/444/22 224/445/22 +f 241/413/22 238/446/22 240/447/22 +f 236/419/22 235/448/22 234/404/22 +f 219/397/22 218/449/22 217/382/22 +f 274/450/26 275/451/26 276/452/26 +f 276/452/30 282/453/30 284/454/30 +f 277/455/23 280/456/23 279/457/23 +f 279/457/31 283/458/31 281/459/31 +f 282/453/22 283/458/22 284/454/22 +f 286/460/26 287/461/26 288/462/26 +f 288/462/30 294/463/30 296/464/30 +f 289/465/23 292/466/23 291/467/23 +f 291/467/31 295/468/31 293/469/31 +f 294/463/22 295/468/22 296/464/22 +f 139/281/22 140/288/22 138/282/22 +f 144/284/23 160/313/23 159/285/23 +f 139/281/24 145/470/24 148/287/24 +f 138/282/25 147/471/25 146/289/25 +f 140/288/26 148/296/26 147/290/26 +f 137/283/23 146/472/23 145/291/23 +f 143/292/27 145/298/27 146/293/27 +f 141/294/27 146/293/27 147/290/27 +f 142/295/27 147/290/27 148/296/27 +f 144/297/27 148/296/27 145/298/27 +f 150/299/26 152/473/26 151/300/26 +f 153/302/23 156/474/23 155/303/23 +f 159/285/27 160/313/27 157/305/27 +f 151/300/27 153/302/27 154/304/27 +f 152/307/24 156/475/24 153/302/24 +f 149/301/25 154/304/25 155/308/25 +f 141/310/26 158/306/26 157/305/26 +f 143/312/25 157/305/25 160/313/25 +f 142/315/24 159/285/24 158/306/24 +f 162/317/26 164/476/26 163/318/26 +f 165/320/23 168/477/23 167/321/23 +f 163/318/27 165/320/27 166/322/27 +f 164/323/24 168/478/24 165/320/24 +f 161/319/25 166/322/25 167/324/25 +f 170/326/23 172/479/23 171/327/23 +f 173/329/26 176/480/26 175/330/26 +f 171/327/27 173/329/27 174/331/27 +f 172/332/25 176/481/25 173/329/25 +f 169/328/24 174/331/24 175/333/24 +f 178/335/23 180/482/23 179/336/23 +f 181/338/26 184/483/26 183/339/26 +f 179/336/27 181/338/27 182/340/27 +f 180/341/25 184/484/25 181/338/25 +f 177/337/24 182/340/24 183/342/24 +f 186/344/24 188/485/24 187/345/24 +f 189/347/25 192/486/25 191/348/25 +f 187/345/27 189/347/27 190/349/27 +f 188/350/23 192/487/23 189/347/23 +f 185/346/26 190/349/26 191/351/26 +f 194/353/24 196/488/24 195/354/24 +f 197/356/25 200/489/25 199/357/25 +f 195/354/27 197/356/27 198/358/27 +f 196/359/23 200/490/23 197/356/23 +f 193/355/26 198/358/26 199/360/26 +f 202/362/25 204/491/25 203/363/25 +f 205/365/24 208/492/24 207/366/24 +f 203/363/27 205/365/27 206/367/27 +f 204/368/26 208/493/26 205/365/26 +f 201/364/23 206/367/23 207/369/23 +f 210/371/25 212/494/25 211/372/25 +f 213/374/24 216/495/24 215/375/24 +f 211/372/27 213/374/27 214/376/27 +f 212/377/26 216/496/26 213/374/26 +f 209/373/23 214/376/23 215/378/23 +f 218/380/24 230/401/24 233/381/24 +f 232/383/27 233/381/27 230/384/27 +f 228/386/27 229/390/27 226/387/27 +f 224/389/24 226/396/24 229/390/24 +f 223/392/25 228/386/25 227/393/25 +f 225/391/26 229/390/26 228/386/26 +f 222/395/23 227/497/23 226/396/23 +f 219/397/25 232/383/25 231/398/25 +f 217/382/26 233/381/26 232/383/26 +f 220/400/23 231/498/23 230/401/23 +f 235/402/24 246/423/24 249/403/24 +f 248/405/27 249/403/27 246/406/27 +f 244/408/27 245/412/27 242/409/27 +f 240/411/24 242/418/24 245/412/24 +f 239/414/25 244/408/25 243/415/25 +f 241/413/26 245/412/26 244/408/26 +f 238/417/23 243/499/23 242/418/23 +f 236/419/25 248/405/25 247/420/25 +f 234/404/26 249/403/26 248/405/26 +f 237/422/23 247/500/23 246/423/23 +f 250/424/27 252/428/27 251/425/27 +f 250/424/28 253/429/28 254/427/28 +f 253/429/26 255/501/26 256/430/26 +f 251/425/29 258/432/29 257/431/29 +f 258/432/23 260/502/23 259/433/23 +f 262/434/27 264/438/27 263/435/27 +f 262/434/28 265/439/28 266/437/28 +f 265/439/26 267/503/26 268/440/26 +f 263/435/29 270/442/29 269/441/29 +f 270/442/23 272/504/23 271/443/23 +f 225/391/22 223/392/22 222/444/22 +f 241/413/22 239/414/22 238/446/22 +f 236/419/22 237/505/22 235/448/22 +f 219/397/22 220/506/22 218/449/22 +f 274/450/26 273/507/26 275/451/26 +f 276/452/30 275/451/30 282/453/30 +f 277/455/23 278/508/23 280/456/23 +f 279/457/31 280/456/31 283/458/31 +f 282/453/22 281/459/22 283/458/22 +f 286/460/26 285/509/26 287/461/26 +f 288/462/30 287/461/30 294/463/30 +f 289/465/23 290/510/23 292/466/23 +f 291/467/31 292/466/31 295/468/31 +f 294/463/22 293/469/22 295/468/22 diff --git a/src/main/resources/assets/hbm/models/machines/radar_screen.obj b/src/main/resources/assets/hbm/models/machines/radar_screen.obj index 18f4a3cc5..3f69a3c90 100644 --- a/src/main/resources/assets/hbm/models/machines/radar_screen.obj +++ b/src/main/resources/assets/hbm/models/machines/radar_screen.obj @@ -47,9 +47,9 @@ vt 1.000000 0.785714 vt 1.000000 0.214286 vt 0.681818 0.285714 vt 0.954545 0.285714 -vt 0.954545 0.267857 +vt 0.954545 0.285714 vt 0.681818 0.714286 -vt 0.681818 0.267857 +vt 0.681818 0.285714 vt 0.500000 0.107143 vt 0.772727 0.035714 vt 0.772727 0.107143 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index c9ac8d1b7..f4f4e63f5 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -27,6 +27,7 @@ "block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]}, "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": false}]}, "block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]}, + "block.flesh": {"category": "block", "sounds": ["block/flesh1", "block/flesh2", "block/flesh4", "block/flesh5"]}, "block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, "block.missileAssembly2": {"category": "block", "sounds": [{"name": "block/missileAssembly2", "stream": false}]}, "block.openDoor": {"category": "block", "sounds": ["block/door_open_1", "block/door_open_2"]}, @@ -324,6 +325,8 @@ "step.iron_land": {"category": "player", "sounds": [{"name": "footsteps/iron_land", "stream": false}]}, "step.iron": {"category": "player", "sounds": ["footsteps/iron1", "footsteps/iron2", "footsteps/iron3", "footsteps/iron4"]}, "step.metalBlock": {"category": "block", "sounds": ["footsteps/metalStep1", "footsteps/metalStep2", "footsteps/metalStep3", "footsteps/metalStep4"]}, + "step.platemetal": {"category": "block", "sounds": ["block/platemetal_step"]}, + "block.platemetalPlace": {"category": "block", "sounds": ["block/platemetal_bar1", "block/platemetal_bar2", "block/platemetal_bar3", "block/platemetal_bar4", "block/platemetal_bar5", "block/platemetal_bar6"]}, "step.powered": {"category": "player", "sounds": ["footsteps/powered1", "footsteps/powered2", "footsteps/powered3"]}, "player.vomit": {"category": "player", "sounds": [{"name": "player/vomit", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/flesh1.ogg b/src/main/resources/assets/hbm/sounds/block/flesh1.ogg new file mode 100644 index 000000000..35579854d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/flesh1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/flesh2.ogg b/src/main/resources/assets/hbm/sounds/block/flesh2.ogg new file mode 100644 index 000000000..621cc190e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/flesh2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/flesh4.ogg b/src/main/resources/assets/hbm/sounds/block/flesh4.ogg new file mode 100644 index 000000000..158ba2510 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/flesh4.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/flesh5.ogg b/src/main/resources/assets/hbm/sounds/block/flesh5.ogg new file mode 100644 index 000000000..da67f58e8 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/flesh5.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg new file mode 100644 index 000000000..35a01cd51 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar1.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar2.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar2.ogg new file mode 100644 index 000000000..7a1f4b2d0 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar2.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar3.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar3.ogg new file mode 100644 index 000000000..d297a6a07 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar3.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg new file mode 100644 index 000000000..4669c54b8 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar4.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg new file mode 100644 index 000000000..3061ed483 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar5.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_bar6.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_bar6.ogg new file mode 100644 index 000000000..846e9ea73 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_bar6.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg b/src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg new file mode 100644 index 000000000..95e7c3f1b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/platemetal_step.ogg differ diff --git a/src/main/resources/assets/hbm/structures/dead_dish_small.nbt b/src/main/resources/assets/hbm/structures/dead_dish_small.nbt new file mode 100644 index 000000000..08bc7b2a1 Binary files /dev/null and b/src/main/resources/assets/hbm/structures/dead_dish_small.nbt differ diff --git a/src/main/resources/assets/hbm/structures/water_pump.nbt b/src/main/resources/assets/hbm/structures/water_pump.nbt new file mode 100644 index 000000000..8a908da7a Binary files /dev/null and b/src/main/resources/assets/hbm/structures/water_pump.nbt differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png index 161f74fcc..7993518c0 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png and b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png index 78f60404d..954ccd7a4 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png and b/src/main/resources/assets/hbm/textures/blocks/machine_satlinker_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.base.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.base.png new file mode 100644 index 000000000..859cd678b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png new file mode 100644 index 000000000..74bdf9144 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.base_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.black.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.black.png new file mode 100644 index 000000000..9c7a2ab40 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.black.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png new file mode 100644 index 000000000..3c2b7f7f8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.black_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.blue.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.blue.png new file mode 100644 index 000000000..8fc96c4ce Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.blue.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png new file mode 100644 index 000000000..dd1402d57 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.blue_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png new file mode 100644 index 000000000..4ad996f14 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan_ct.png new file mode 100644 index 000000000..786e526b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.cyan_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.green.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.green.png new file mode 100644 index 000000000..3f346f8ad Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.green.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.green_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.green_ct.png new file mode 100644 index 000000000..75a6dfcfb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.green_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png new file mode 100644 index 000000000..e641e15c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue_ct.png new file mode 100644 index 000000000..1c9966ceb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_blue_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray.png new file mode 100644 index 000000000..7ef81d4b1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png new file mode 100644 index 000000000..e8885edf2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.light_gray_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png new file mode 100644 index 000000000..b17ef6ff9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png new file mode 100644 index 000000000..1e76d953b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.lime_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta.png new file mode 100644 index 000000000..576318f33 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png new file mode 100644 index 000000000..cebfce506 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.magenta_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png new file mode 100644 index 000000000..020ce5462 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.orange.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.orange_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.orange_ct.png new file mode 100644 index 000000000..1faf1ea47 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.orange_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.pink.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.pink.png new file mode 100644 index 000000000..68cdc7956 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.pink.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.pink_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.pink_ct.png new file mode 100644 index 000000000..b9e7946f8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.pink_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png new file mode 100644 index 000000000..36d5851d8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.purple.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.purple_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.purple_ct.png new file mode 100644 index 000000000..4120681db Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.purple_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.red.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.red.png new file mode 100644 index 000000000..599de0efb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.red.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.red_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.red_ct.png new file mode 100644 index 000000000..3d343d9ec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.red_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.white.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.white.png new file mode 100644 index 000000000..228c11dd8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.white.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png new file mode 100644 index 000000000..771dae2b7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.white_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png new file mode 100644 index 000000000..8bd940184 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow_ct.png b/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow_ct.png new file mode 100644 index 000000000..834281fec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/platemetal.yellow_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png new file mode 100644 index 000000000..1c50a16ba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png new file mode 100644 index 000000000..0ad11a514 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid3.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid3.png new file mode 100644 index 000000000..acec554aa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.glyphid3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.ice.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.ice.png new file mode 100644 index 000000000..a266df9f6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.ice.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalactite.snow.png b/src/main/resources/assets/hbm/textures/blocks/stalactite.snow.png new file mode 100644 index 000000000..74f8b4a3e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalactite.snow.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid1.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid1.png new file mode 100644 index 000000000..0167be9a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid1.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid2.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid2.png new file mode 100644 index 000000000..2b7792359 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png new file mode 100644 index 000000000..9aab0358c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.glyphid3.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.ice.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.ice.png new file mode 100644 index 000000000..d803a0676 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.ice.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stalagmite.snow.png b/src/main/resources/assets/hbm/textures/blocks/stalagmite.snow.png new file mode 100644 index 000000000..2c1d44ae3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stalagmite.snow.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png index a1262001b..e9601d8f4 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png and b/src/main/resources/assets/hbm/textures/gui/machine/gui_sat_linker.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png index 9b66746d1..c599f7c5d 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_detector.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png index 7a8830263..7160800cb 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_quadrupole.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png index 8483b85d8..e85478ea0 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png and b/src/main/resources/assets/hbm/textures/gui/particleaccelerator/gui_source.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png index 8852afa9c..a23c402c4 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_centrifuge.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index 871440cc4..c8800f0b6 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png index 6dbf4ffb1..0f6a50a39 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_refinery.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_heater.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_heater.png deleted file mode 100644 index 03abf02aa..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_heater.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png deleted file mode 100644 index f405049ae..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png b/src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png deleted file mode 100644 index b3781407b..000000000 Binary files a/src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_base.png b/src/main/resources/assets/hbm/textures/items/sat_base.png deleted file mode 100644 index 87405de61..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_base.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_laser.png b/src/main/resources/assets/hbm/textures/items/sat_head_laser.png deleted file mode 100644 index 0fabf144d..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_head_laser.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_mapper.png b/src/main/resources/assets/hbm/textures/items/sat_head_mapper.png deleted file mode 100644 index d5f5a674b..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_head_mapper.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_radar.png b/src/main/resources/assets/hbm/textures/items/sat_head_radar.png deleted file mode 100644 index 823a13240..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_head_radar.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_resonator.png b/src/main/resources/assets/hbm/textures/items/sat_head_resonator.png deleted file mode 100644 index e93540b95..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_head_resonator.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_head_scanner.png b/src/main/resources/assets/hbm/textures/items/sat_head_scanner.png deleted file mode 100644 index 2ddbb8b07..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_head_scanner.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/sat_interface.png b/src/main/resources/assets/hbm/textures/items/sat_interface.png deleted file mode 100644 index 0fc2a8127..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/sat_interface.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.death_ray.png b/src/main/resources/assets/hbm/textures/items/satellite.death_ray.png new file mode 100644 index 000000000..e546efaee Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.death_ray.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.miner_astro.png b/src/main/resources/assets/hbm/textures/items/satellite.miner_astro.png new file mode 100644 index 000000000..a006535d7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.miner_astro.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png b/src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png new file mode 100644 index 000000000..2999b8b08 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.precision_laser.png b/src/main/resources/assets/hbm/textures/items/satellite.precision_laser.png new file mode 100644 index 000000000..be29aac98 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.precision_laser.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.radar.png b/src/main/resources/assets/hbm/textures/items/satellite.radar.png new file mode 100644 index 000000000..4034dcfd8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.radar.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.relay.png b/src/main/resources/assets/hbm/textures/items/satellite.relay.png new file mode 100644 index 000000000..08a4f2164 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.relay.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.scanner.png b/src/main/resources/assets/hbm/textures/items/satellite.scanner.png new file mode 100644 index 000000000..b0039b9df Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.scanner.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.spy.png b/src/main/resources/assets/hbm/textures/items/satellite.spy.png new file mode 100644 index 000000000..75c95afa9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.spy.png differ diff --git a/src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png b/src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png new file mode 100644 index 000000000..fd49d5ce6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/satellite.xenium_resonator.png differ