From 2821c70e61b4940d136e4c243d20dfadc34003bd Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 26 Jul 2026 16:49:53 +0200 Subject: [PATCH] WAY UP HIGH, IN THE SKY, WITH THE SUN, IN YOUR EYE --- changelog | 2 + .../redstoneoverradio/IRORInteractive.java | 4 + .../hbm/blocks/machine/MachineSatLink.java | 12 + .../com/hbm/commands/CommandSatellites.java | 4 +- .../java/com/hbm/crafting/RodRecipes.java | 9 - .../java/com/hbm/entity/EntityMappings.java | 1 + .../hbm/entity/logic/EntityDeathBlast.java | 21 +- .../hbm/entity/logic/EntityOrbitalLaser.java | 68 ++++ .../com/hbm/entity/missile/EntitySoyuz.java | 8 +- .../inventory/gui/GUIMachineSatLinker.java | 4 +- .../hbm/inventory/gui/GUIScreenSatCoord.java | 99 ++---- .../inventory/gui/GUIScreenSatInterface.java | 330 ------------------ .../inventory/recipes/ArcWelderRecipes.java | 6 - .../recipes/AssemblyMachineRecipes.java | 75 ---- .../hbm/inventory/recipes/PUREXRecipes.java | 2 +- .../inventory/recipes/SolderingRecipes.java | 10 + .../inventory/recipes/anvil/AnvilRecipes.java | 8 - src/main/java/com/hbm/items/ModItems.java | 72 ++-- .../java/com/hbm/items/armor/ItemModLens.java | 4 +- .../com/hbm/items/special/ItemSatellite.java | 34 ++ .../com/hbm/items/tool/ItemSatDesignator.java | 11 +- .../com/hbm/items/tool/ItemSatInterface.java | 61 ++-- src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/CraftingManager.java | 6 +- src/main/java/com/hbm/main/MainRegistry.java | 11 +- .../java/com/hbm/packet/PacketDispatcher.java | 6 - .../hbm/packet/toclient/SatPanelPacket.java | 88 ----- .../hbm/packet/toserver/SatCoordPacket.java | 72 ---- .../hbm/packet/toserver/SatLaserPacket.java | 71 ---- .../entity/effect/RenderDeathBlast.java | 160 +++++---- .../entity/effect/RenderOrbitalLaser.java | 70 ++++ .../com/hbm/saveddata/SatelliteSavedData.java | 20 +- .../hbm/saveddata/satellites/Satellite.java | 129 ------- .../saveddata/satellites/SatelliteBase.java | 93 +++++ .../satellites/SatelliteDeathRay.java | 73 ++++ .../satellites/SatelliteHorizons.java | 47 ++- .../saveddata/satellites/SatelliteLaser.java | 42 --- .../satellites/SatelliteLunarMiner.java | 2 +- .../saveddata/satellites/SatelliteMapper.java | 58 ++- .../saveddata/satellites/SatelliteMiner.java | 10 +- .../satellites/SatellitePrecisionLaser.java | 108 ++++++ .../saveddata/satellites/SatelliteRadar.java | 111 +++++- .../saveddata/satellites/SatelliteRelay.java | 8 +- .../satellites/SatelliteResonator.java | 12 +- .../satellites/SatelliteScanner.java | 9 +- .../satellites/XSatelliteRegistry.java | 90 +++++ .../machine/TileEntityMachineRadarNT.java | 39 +-- .../machine/TileEntityMachineSatDock.java | 6 +- .../machine/TileEntityMachineSatLink.java | 35 ++ src/main/resources/assets/hbm/lang/de_DE.lang | 31 +- src/main/resources/assets/hbm/lang/en_US.lang | 78 +++-- .../blocks/machine_satlinker_side.png | Bin 574 -> 296 bytes .../textures/blocks/machine_satlinker_top.png | Bin 515 -> 320 bytes .../textures/gui/machine/gui_sat_linker.png | Bin 1621 -> 1627 bytes .../gui/reactors/gui_fusion_heater.png | Bin 2234 -> 0 bytes .../gui/reactors/gui_fusion_multiblock.png | Bin 2993 -> 0 bytes .../gui/satellites/gui_sat_interface.png | Bin 2616 -> 0 bytes .../assets/hbm/textures/items/sat_base.png | Bin 303 -> 0 bytes .../hbm/textures/items/sat_head_laser.png | Bin 209 -> 0 bytes .../hbm/textures/items/sat_head_mapper.png | Bin 243 -> 0 bytes .../hbm/textures/items/sat_head_radar.png | Bin 299 -> 0 bytes .../hbm/textures/items/sat_head_resonator.png | Bin 301 -> 0 bytes .../hbm/textures/items/sat_head_scanner.png | Bin 232 -> 0 bytes .../hbm/textures/items/sat_interface.png | Bin 265 -> 0 bytes .../textures/items/satellite.death_ray.png | Bin 0 -> 403 bytes .../textures/items/satellite.miner_astro.png | Bin 0 -> 339 bytes .../textures/items/satellite.miner_lunar.png | Bin 0 -> 439 bytes .../items/satellite.precision_laser.png | Bin 0 -> 324 bytes .../hbm/textures/items/satellite.radar.png | Bin 0 -> 402 bytes .../hbm/textures/items/satellite.relay.png | Bin 0 -> 323 bytes .../hbm/textures/items/satellite.scanner.png | Bin 0 -> 431 bytes .../hbm/textures/items/satellite.spy.png | Bin 0 -> 371 bytes 72 files changed, 1079 insertions(+), 1252 deletions(-) create mode 100644 src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java delete mode 100644 src/main/java/com/hbm/inventory/gui/GUIScreenSatInterface.java create mode 100644 src/main/java/com/hbm/items/special/ItemSatellite.java delete mode 100644 src/main/java/com/hbm/packet/toclient/SatPanelPacket.java delete mode 100644 src/main/java/com/hbm/packet/toserver/SatCoordPacket.java delete mode 100644 src/main/java/com/hbm/packet/toserver/SatLaserPacket.java create mode 100644 src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java delete mode 100644 src/main/java/com/hbm/saveddata/satellites/Satellite.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteBase.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteDeathRay.java delete mode 100644 src/main/java/com/hbm/saveddata/satellites/SatelliteLaser.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/SatellitePrecisionLaser.java create mode 100644 src/main/java/com/hbm/saveddata/satellites/XSatelliteRegistry.java delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_heater.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/reactors/gui_fusion_multiblock.png delete mode 100644 src/main/resources/assets/hbm/textures/gui/satellites/gui_sat_interface.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_base.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_laser.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_mapper.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_radar.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_resonator.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_head_scanner.png delete mode 100644 src/main/resources/assets/hbm/textures/items/sat_interface.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.death_ray.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.miner_astro.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.miner_lunar.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.precision_laser.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.radar.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.relay.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.scanner.png create mode 100644 src/main/resources/assets/hbm/textures/items/satellite.spy.png diff --git a/changelog b/changelog index da40438bd..dc6b0c05c 100644 --- a/changelog +++ b/changelog @@ -29,6 +29,8 @@ * 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 ## Fixed * Fixed held block being placed when not sneaking when opening the cable diode's GUI 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/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/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/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/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..b8d034cab 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblyMachineRecipes.java @@ -171,10 +171,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"; @@ -967,77 +963,6 @@ public class AssemblyMachineRecipes extends GenericRecipes { 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), - 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.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.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))); 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..26f743ae4 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -862,14 +862,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/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/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/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..e0cff0d60 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,44 @@ 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(ItemStack stack, NBTTagCompound data) { + + } } 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..37e4304cb 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -593,12 +593,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/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/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..99e3a4f8f --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderOrbitalLaser.java @@ -0,0 +1,70 @@ +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(); + } + + 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/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..65199ae1b 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()); + 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..d4cab13b2 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteResonator.java @@ -4,17 +4,15 @@ 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); 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..3fd818bca 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; @@ -110,11 +111,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/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..8448a7f7a 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 @@ -5816,6 +5819,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 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 161f74fcc52cf51aeba992efc686225debacd795..7993518c0d1f72f8ac5d1e3cbcb2ffa5aeae98c0 100644 GIT binary patch delta 253 zcmVEhGzYdCeFD_Y^{xPUIPH+Qi+I{ zWnn2L^Y6t{$~~^|`p_ts>AwPaUS;RJq6Gj@(^mDJ@}dG`Om$IS zD!BC%L!K{F=_hu~%&lcH#x$3yBO)$JKcKZPTRZRv`olSJ=0r(Y00000NkvXXu0mjf DNJn$) delta 534 zcmV+x0_pvz0=@*0Gk*c~NklBX zdd;Pjo_ous&Sn%dWfys2nvkw-7flE?L!`qKGrzZu*W1kzZOSM`BKuQ^3BBdmo%~CuJ>vUbm zD?{Spa~O?AG=J~9v^sr!-^a2nq?F|Ic?`pd4+GS%Z<$PIT%27p@gWg0Fmncv4<5xM z=ks|S$Jt;K1Odgv0%p!Y&%mo=LGssm$e?-G-6(b(2h%iZHk)yGSl2}i5}8!Uz|0w# zIU@!ZDVxpGZnp`70Dw$-Kb+tngXEK!U|A#T*SGOoJAaOYl#)iH0l;dtqSx!8>pGL^ zj8>=5#o6U{4m2&rV(~j3IqC|qTrL4Ha|S@1gS}b_Wgftf`X^wWJlIa({k<>eKXF}` zWW?a~#9%!3$)xvzFm*tjyhu?pBL)!u1vRXolpC&X+uq67N+^U7$}5LP2%&(TJ)r&q YKrc{pmk;lY{Qv*}07*qoM6N<$f=C|!WB>pF 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 78f60404ddcbdceb73f73331dc385ada65227135..954ccd7a4fc676f2bc3c57a20f141c59448165a6 100644 GIT binary patch delta 278 zcmV+x0qOpO1i%82Gk*a0NkloOnSjD#1!{lPbM5=yJo)>}zFT{sry!Fn_4?;#nM}V-wEw9G zemsIq6W_KP*Hc*Ejav`71+xc41Q99n>y>~Iu&b2GCfIiyfLW5iZlRR$uUm*Q=GF~p c=R5lkGjZ@Uo)3UjlmGw#07*qoM6N<$g1a(-X8-^I delta 474 zcmV<00VV#x0)qsQGk*cPNkl15)sn(pj=ABHrKN zddnfsZZ6_@gUkH`jzz>9w42Kj5XxB&BOHOYl%o`yrfJf2@pTAElk3uFdLQzB^3D6a zPnf%?xr+jn5JL64D8IMAXYQgL$5B#BrM&EA`+C2JIslZEl7G{a7nG%I_W)Q%amD94 z?tEZ4ftnD4KVLk){(j9}nWn~K5$$->)Myy+_*hVLKhFq47*D1E{Pq6<5Jg)sj z&1E>B4%>Z228NbpU^gx7rd3S83#VxcfT7p1n^uuQ?a_0PGGK6hQ`~j=%w>49*$^&Q zj3-kr&MtR*V4509a-$mI+@NMu8*i$wScH38e_UZgPp65}^Gx+#E zy9Gn916k{UqItRUX66|{_AjWpi&9>;b{uCf-|wOjLMXqN86kuM_V$4K4+|bxLF6+z Q;Q#;t07*qoM6N<$f_wDfCIA2c 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 a1262001b64250f9c1ed63c0b1f880dbacb11c83..e9601d8f4293b0fe9c24c1be400215949a6ada46 100644 GIT binary patch delta 1281 zcmV+c1^)Wg4BHHlB!2{RLP=Bz2nYy#2xN!=00t6CL_t(|obBB)avDhhhS8oaAB1z* z=C6c|XrfW=pGlOx{mFa9J zd~Al*O+5ilGu0p5cDuFyKZ>sFN)dr3{WZa3TKpf(!^1-o`Vae^r@ zq|IhiN-1SNpO@lFpea*a0X(tzVOo<00GO7N0VR__1rU>f1Qman06?%$Q%~S6X0zGU zQyAUTd#b+z*!Ph?O?b1}l%GF;mf37}@|kzY<1@s3s9!Syczk>;|Nis$+2dSY-<0KY zIlzocRr9Iw_)vepW&*Htb$xTz&#zXiLC=)tL(8gu4WK1IzJGhu??FwPy8@`ukMG~g z)%DHO*SG%vm-1SOE;$G4{ehr}iMD8!T z{_kIEPA^4Z7otlqK8u}0n!N(p8S4zcUaz11efX)j1G_oye?PSv=0F{qz5+PplqdOa z!N2xKn0^!vJ@&ENf&E`!iiJ<#hYG-Z7u0*s>ia))C;~4n{{9s~4VUFL%z^1O9f18a zS`BBnV~c-(>K6icYM29cXf^=-`|DE{-Fx2izPnmD_A{@Y@oR{Hg->7eF9P;2t6%#% zgkzWf```B;_t5(UF6EMcB}yBb55T1yJM-@c=e6k65CPcN>@7fz-g31ulan$Kpl8DKW`&4>C`9e{_2ho{|X zJt_a>_;9Z3UjsfT0#J%4<1vm8 zr>OoG02q&w0VR__1q**Ti@gZjHpPxWUDtJ68(G5irn&;?6888@GM~>&DW#iw9=y-g ze_-2*AD`h&{agY700000004-#|K<&E%ApnBbTp9Nf!uDl)<13Nx~>!v7{p)2;-@k9 z_xGi^VjV(_L%fj79ly)C7bvRj74)Rk^#nGmddi9>>2@9gka+ z5CIjFKm`z!fCLFZ9o!FKu~?MVYIXL57{@r&sVk*yx7%$g<WlvLldjsvpOWK;!WmlW_zjlOO~N9_$EYoa)D6Jaz;!PW9v15okPi z1Ts$bae6#%0h4h99FzY91(P2E29rPq21RC9VB=Ij4&$*a zFwLc9;JQ<5MZ6>$+}xe}C`bLYUnZK==9c=Se35@8Jc&Ve}8+ rc9L1Z`&s;x0R}vi5C#btFslCmMcQhdBJ|ZJ00000NkvXXu0mjfNIY;X delta 1250 zcmV<81ReX^4Al&fB!2;OQb$4nuFf3k000ILNklmT50f#~&*a0$6@WKnBY18DUGt=MaWBA+2oJ;0= zZ*IzDRO(q&d~Aj_syzXAQ|ljYadG}vrH5u{&tASMMFhI^pfti`TKxCShv~agT+wx@ zMzwznz{gKtDolYPozK6PQc9W4W~I0i=t_+%fL|?_tDZmI_R0weCS!z_W*iwdHH#( z--DKPcLmU*%gfJYJU;sMf&ErZ0o-+rJcop)1Q%{>i{gD zz&HK4uW#Rf-1v7kMPPkCHP5=^@sYDWzv(sr+b;gg%g=*^VAlvN7hDUA|EhnVldbD} z0P9cW^+mV-`}_L#{l|@Ok!^~=GDLU1_$+p=({%t!*}UktvCUcis;{|i1g`pdOC}|LcGDU4YfMw6^_mAKP9nY&zp_dW-Nbc^i;*-3DN(mBqh) zHM0J=Ekt0bw?w%=x(`4rR)e!CIxR#1R&{+3pf%fEZPdIM;PRh!t^g{q5NSnMR{-Pj zQF;C9Y3*tJVm|b)s{lNC{HUqTDu$ZR`TXkuvuSTWw6Ey^e3-ubwL3hmC*_|UANJM! zJ%FU$X=k(9tvBF2g%coWBmT{Qm^05}|z zkp(D|5CI5(uors~_N~T_K%-|b-z;oo3H6OCKKA1H__*T3Go;yUR!ZIH6FaE=54NcM z_zb7^a|r+d0000003h1xH*ff+9D3oKjs~(kkc-8_`lk=0(Wn#=7{r5O@za_4d|rwx z)z55VGwEH(s_6a*wVyY{mIPfkwuet^kjQqIoK zjANXg$9eJM#ops^wHrSibTXOj^#G@*r{(PI%s9r`c^v;s^>Dldkw9mwm%4{|(<>zyl9oZ4cIL(h^ zN1(%T50URGk^uxBb_6m`^W$(hb_6m`^W)eN=y2=^WSr*5u_MsoxCfK)1RImE1qqX& z1qwAg0vV_IaX6f7cLahK*%4?sUIIWc0f1lv0Ku-k320YfU%%gXzjMCg z5cFZ33*r6-8;s-0Iu)3LbCb)G$v=%+{5kf7Pkiw~nM2>Ij{w zEkn#$lMnNkH06r9weM$oD_AU6R(AHh6D*EW$*pEKJoNzuT6H!zm0mQTSAz{yjE}En zQ1ytW8}WLA>2+x*h7^ZH$NKa-(hm%G_h_l^b1~FvKu?R^4K~Sdi>yGiGMjG&rcJ=m zdT`UA-~IFZ1Pcgi7>2Sj=$OTVZ^41#2XYXz);|C|=Hh}tImkDprRh!hMHILprWz)A zY700V&Y*J!iB#6u)O2e&fE|OlAY}S`ku*8NhT6TOa-PJvRQlSAFBI+(FOiIlSZmMh zEzWbhut(iB&CAh^vNRfZs(!Y+oTKzcuF&Q<-KZ5NA&t!m$ zE_14)Ut=&Ab)FBcQ0IMNr~$Asb0v3L6P%M1-aHc25`lT5Zl3O6 zMO6@3p}*C3XeWkgk(4Sf4g1d0C8$ZG(!QVQ)(ocaXb|J-d2vXY7B=w03dN4pE)S|X z66Ar$^y^mLT(@$1t1T!h5w2kv#}J8AH_X|r1Jud~w;aC(B8R^kwZMDP?EQ%2YU0Zz z)DKI>BJO+85{($*xAcBjRfM_^*UXEfQ1r7yZ)V@VQDQQLi}~aCWE!J7+1;ZUmFiYi zVKmz?^gYT4viox#CLGx5V4S*j{BhLABd+ubSJleRY?eRuuJyL=%TT(^K7~}3gp2Y+ z_^P|ZXpTZ-KD+Z#R8*Ua5-gu|7>#d)?k9KxiSc7RB22wW{)*r3{1^`;63Nxp;$-f+ z`nyC=e9s20tAW@c+VoayFfcGshUmD%s3eL{s2TE1#r(7+}N@2!R=jwJNT z?f4a1U*sNRe%?K_Ve_Zklkn2TWl=7AhNvGm=}&LkKHc*%LO5o8J+A5W)b}_dd?HT1 z8PS^E@A4oxZ%S+1%6loEv*L@!1y~YXn09LTM?~Vg6(crQz(Kn*w5O-1KUwF#s!i3- zyfoi8<*bej23P0OLMq?0G6N8!Zc zWwpy=1}F%Ix;v>OPqZ0w7zt-!X3o~h&x8;Qg|WlzJeeCMm$+9B$f@3|6GSdbyBB@9 z*&`NNt=oXCj}Y5(w!kwaa5h?cJK`e}&IxFO>V-HqC9F`VDIOSePhM~&$Qs5Y5Tq){ zTw(^OR?|=0L%ZTqkfnjdBq8D)Y5wF${9IW!?D5|(MY9u9_c3d*?7ZJ={V%s}02Zs~ z3nula2>KSH1>I&qlK5#kPGF$u!F@Q`70IF0!rR+$e@jW1lAVp9?_mJ89;|^wz)@3R5)4oYPyqc4SXKdO z{Le?(l&`P%No#^$&t0y$qs;ZrMO^XzrtN;Z&rtDj$sx8l(e%Hjf2p$DBWXv=6?++b z_RVuL?5W6Z$U|cF4{1mDjqggy$zvtsX}SYbw4o5c?lMYkq(z&FX7Bnn`yy!6%+sM|j;j)b&u2 z=Lq>9s!(}Q>i_I_*-;EUeXxFg}%zW|Bw B-3I^w 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 f405049aec72dd85661a9cadc93c361a01913eb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2993 zcmbVOXH=8f7X1=|M4Cn!iWG4`1*tP)fJg}pp(qnT${;N$AP6E1jDz%`gP;iF0D{y2 z(tDSd1aSbB8ah&BklrDI6aw#an0arl_v5XZcmLdd?^j` zJ|jcDYXATNAq0SPft#IA{w;9h@YOZ4fP*Ut?i>jKJZ?sMIu`d+S0}V1#pXrYH(l2S z>djnCzbZ9_o8?iw8)H9Rc;I1>^wyF0jHU9e8x}0y>Ew$J7Dt_YTEbiAY7w8g&tkkQ z8fy*7;pT=I3;0XC^H+1+MX{>CO{C82U#zOSyxytRqcL?1J~7!%RBc=*l6HI6h#%uJ zIyuWT6ZbYo544KeP0icX+NN#x`AW7s?p9B3PPD@nczF@|NT7 z6T|fzUYpMc?bXo1{lZ zcFcZA6p~<#HD-Khwmlzx(89V_v>DRC8ru8bpM*sy)k~^`2wzOY=1i?;@PwJh#Ke5w zXR~~0OM~OfW%i9fmrkD+7oU~bH5VDy&A4eQR7pzey0xr!j8NICiuaB1$p^o3atgif8d@QT2dBq|#a0HjD{yysKBPe+dt)lmjY$@~`-W=r%k5R(B z+|Me8`dvi*651T{&e#S9>FF`Oygsz`qcC6rO97B3|vp0jRaX37kQb5;kD*iAfzsR&>MAqka>K z_OScCix~2&uwxP5iA3usl$|`vI^hsmX>F)?5+x4YUVP+GGe1mOxUUUKri{v>YoF%@ zGP3&6$uHWJvXRHD+e0Zo$2gST0e*iQYMSl1aZ%s1lIcYl?GA zXJW`z>1WA`H6M&2<;k%iW5F@Jspi!H2U{xT^pcabW7HVX(Ji}7mGO_V`2}r#W|?Qz zOcXd1_-mh=1+!9eDSN)o$P8oP4jIEX-4ToYxDVlx%gUB z9I}89Zy9hRV2ze}7?NZ@rW-t(r3EZpzmrM41G09?dV=7ZC_t6|Gl0YQifz7VN1)@D#{B|9QfzqenC&-N=Z}}kmBDDU568T?3IiK0{a4wT?kPVx zT6n+!7V=~+K2y{!z@emh(}TEP3>kTa1Qr+{PySBq-~I^V6P}&2xA&&Yxg0^!ZVj%P zn-RYmk_BrZ{PKVW9s&DrMqb1H{Fk*JxnUy%wtwVaJTvwDZ^)7Z22H1v~VByBa)f- zurGx;HW%yf?y|mprxLjua=R#3o}DP48HiP5`zDH#B1@PL zen;R3)n{QWmMfoD_jrV&YDf`nHf;>(os5d_8g%Vn9F5gxH&%`|(@Nge41+{`_c(IA8pR}o&WoamaBv=Ems9`j0wrlkqM!q^(h z^3+mg^mX%@b(`Q!YdJ{o+!{*zfVn*8qM@Z0J3V&`Uv*UK$=4#!+I8L+oN`!s^!XuE zmV80twAerc8%JVWIeT2qlHvYIpZ4}g`I*hvJB+tK8n?EoFKP1t1obpAh`>AkWdkLL z;zi>(@3F_KpV|>Jq7Y47olj&G=4zIn%Y{3B5?r(a8#-d zEdqu;i%||-otFhS-VB~X3t6$lVo{pV;{`)i{jAoaZWzA9=!jB)NUzU~Qb4`ZTUf-W zhefjZ**1q)3&8;Tt5R_2x@}ln&O<+KwzRyPXLwL*YC z9sm9E;&;J+Tt+-AP>qlUdo5^89{^$y03K|&fAg3CQY~Fxl#TEqn49R$Z8PljKIcRW zjUXa@RN~_%5N;}`9!GXePiJ<#^A(o6X(0LD499;NdMV-(_)qv-9{$Ur(;-E2YYaL* zn<(}(hdW4T7Q^%zLFB6!L;j)szq}q&^rlk8!+_`!gp643f0AI;0PiRz$7g4zu9TAD z5%yuS2Epp`*#AFg6>`e6`AV>^8$UQEwU&~nl{x E0Fb+A$^ZZW 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 b3781407bc045a976e9053e6c8eec1ceb19ca2f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2616 zcmcguSyYo*626Hs1OYct0Z~8)5mCVnmuU#HIm879L1ax7!3BO15z>$i6wNdOZlJV) zpfsRF5@bmlHH%w77C|Kh2qCyY5R73o~m14Reg2txxe@x z*kd%$d>#P6$op>|egMF9CJdmEIu&~Mew0oj;@!OcQ92=_j{O4weYv;CZvUV2Wn%7S z3#pmjh-!(R_5DS#Yr8Txur@uj`p}n+>37rEnuMAnHsV?H=<{P9Qa+mBSar$>`TBh4 z@7ZC037A*>{ItcgjlCxLh?bU?ug$&U=}wZ1<-%?fK5>B5I!=@p;8maV!|n8cpI_JI zdx#dV$l0D}AZorlPXPLi2YE^Jf)H7CX%LgyN=`$5~Tu8Uyb!9xJwT(yJ z$g4iT(_-85JI(~BJ?K81g{5Vgs+ZtUke{D#KXP{Iyt@9SM>cLB@-acbJbMHQG9tVK zHI12?{V7dDkA>LARec?1JUvUIV*ncG;QaH5mG}uhcGwBBu1x#rbCS1#$EB!<>11Ab z^2A`%k?7-jE#C|3(soA!hr$eTW}KKqnPSDQe{nan*vI?9R=HNxJ%BR;Uj7af*Zm$) zOb#y{k%bh(c?b+9GK}yvjYh#lfrYotz`i1ver%%vZL55xAN;5s`xHx9RoQ|H5h7ZdX!#+(HY5cQCZf#bd8QATTbxms(Jmg4DZ8Wb?CK=1v&*cSr_ zZt(_SbyH?YNrnK{U~A3oTBWL^Jp;`>V8sEY(hyJ0$>$;@nLEjaM6dOe9ECBQ@R{x*X zPs`t1wr>B4v(0CZIdU#frjEcznDZa4r*6)2LFZUDwGi!9wQTLH<2EJPE=g)}kKm9q zgBHuRkDlfEE@gbL9acMi@3-uCx=5`*`KQ3#O?fmu#?Ip3zobve9~U+ax+^=Ftl62H{=`QeA+KZ zN(`v|3;(ax&yM)Np48V94PGqy6>;WC)A}ll#vRIE%>csb1af5Tb*I=gFrj2qR^*PF zxUXBbfIo5I|5M5TiTBE4>*Zn&I&pjH5sRiO)u*-b_`V?~l6OIG!Mox;*aL!PxT7I+ z`g+-fFJ0Bg4=U#7=5G5}L-ej z1v|Nd#)c#ULn{fJfcGs+CEMEC+Lg2i^+2Ax+5>t;{#p~O!u)&-o^4(w>Owk~mMfxn zJ_#37n>S`Po+=q!&=qxK?B%BW}fT4BK(;FQ;-{N-YZ?#b^9POnm| zBMV6LyXY-N4EP*j*-E&3dd(yUs!k76-trrd;Q77Lo@CZSLZyZydz{rJyfUDk>g7Td zXl5|Em&LuSjv1CS<7#V-X5=sK$%5|}+tCEHgZHy9mnE_*l8HIYFqK51p_3Mfu_6tA zg}a1I%}Nr*smYg|N#P~#-*cAmH_t3fEq%JHe}%h~G>LvEtbRkJY7=k%Mmo&j_UO#Z z<=q{nb>cST$1+mD?$A=lOG^An>$a`uEF5{S%v|3r^Pw|uK!f_7J*Q8^)hZ$a6%n#3 zZe2P}CheV0GBTr{!4-WobHzw~eq-9lvMb0{i3JT|wsNMK7n@zNK=GVZAv( zBx(+(2&3_HBm?iIl7VqXpe#Y)6rg6U*z%b^qhPZpgGHlxBuU~^I;75m=?xG;jQvz; zR7iC$^^&WE@FZN+Q3lmBn8V$%l1+Un6B2k$*yzDsP;_+c=`H6d?pbKh-RqL!W=v$; zHksW1CSAx_49{VL^6sI)kyCk`pxt@a)_R1P@2mPE=^3K*L!1^K?J3vjZPni=Jx9Cj6ICM}AF=gD?w{-aq yk+ODJt)7~r_gn?6DvKvx@L3|=ckkZ>XRTRqQ}{GnzQpa&ti#*$fCt?Tcm5BJYm$%v 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 87405de6169c940aa1ac712f1f41a0fc68f0041d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmV+~0nq-5P)qN1VDrD>bBy)mU-KMa`O({5VAF+0{{S=daAfwo16du002ovPDHLkV1jmK Be{28% 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 0fabf144d03d5c2d7a0d17699a4ac92751ea4511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf*jHMxFfVSM@FHNT*VPFv3xj^Ch#g6nK78NR-f{eCEzf3~EiDnr)VCv(d0*TwcFH2maQt#$AByZg`O^p-AIHAB+y z*gKZXfzOTq=rOF%T|akv>dqE>E(VL|w>a*dy?Cf@lKQDyU$h>-;2f|AhT##f-M@z5YR_Y~HDBaRPUwmt11*Sh?x&lE6Y=Gr>z8^2=r< z{+s__@`wMMzO>ti&mPOTv6#(JwwN{H(qjg}N?s?9xx01Ql_o{p*Jpkn`e4(+J>SHG`+CpUXO@geCxEO=C0w 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 823a13240009232ba453cc076aaeb8fef18b3589..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfaBgyIKI3m-UGKaSXBO z-8*Tc;2{GZ*ZsvNmggtxOgyH2VH3xctk}b9Ig`5>gO+@psV6c=$n%H_>+$@QpG%(W z&u^&LY%w@_VpYl|^Rp%ItwIk-9S?M!_Ly04<*_-&uXfE-zP~Z4hmV18Q>Fx)tH0(- z4u*TxQ?(fwY}T27*FF;PgZ1 zvoE{Np;?n-`QE&~Z^Epym1UzJ!)Eq-)iU#+e=45N+YmEhZRo$5ar@uJf0>xe;Ro~! NgQu&X%Q~loCIA`uXg2@= 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 0000000000000000000000000000000000000000..e546efaee6b840f6d2ac28bd6810f318fb96c65c GIT binary patch literal 403 zcmV;E0c`$>P)Nkl6;F*1%LK($#y^SST)Vq&e$ zP1BU-OZdrP{<5{UG;5j$r4%6q&gU}#BEmS16~K1c;BvXV&hYVgB*w_$a3IFWZnrBV z%rHD`VX2!^D#|G(hGCfX@2smeSSdxOH7G=dg8tzZ%G2Lk>@z)!HqAH;uf@ek73 zZY4{KZ5L9dQ83#IGLuShi&(59E_t)&R>OUF?z`{tKtNFx{TL45ND>-j_C82l(7+f& z+qQIFcaS@XJkJN6Bu-2K@VvhMjqX1#RaD`>m>NfxY002ovPDHLkV1o7Ok^=w$ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2999b8b08d1a00578cb894cece022cf18a032c16 GIT binary patch literal 439 zcmV;o0Z9IdP)7C~cp&SC(bzL%hTW054A$0NA#zqrpM1lo)oL*21=Jt(4lN z4|>Vx5&=2U;Q0Z*R&T#f37Ksi4p`|KInkhbdd0`*D=R(Qg8c(9O;a=9J^228PrY8( z0OfKS$8iLJh!4-_b1K|$a`w1+_u+6z5Cr(XPqkVl3_}1$qmkHYFdmP^8GGzk&|Aa#5%(9u!`GqQksf%ZH-Pfx)SSgITV zGa)3?F>T^5p=!fNMdRg>hu{0ymf@c(%QEM{twuw>fm2GY8!+J4Tky**_~{28uH*fM zthFRbLR*$>m7=PuMe{vbYweU$?y{dfwttPoFhpzZilQJ00<5(trAU%wve3WAUDr_* z1yK}{rYUXP0${D39N^7iV+?)Yb2uC@#^CLrIlg!7qWfRz1C(XyE#cF{BmQQGf43dy z@L)^L=hFx0&*NnJA~K7crtxN*FS!Az>zX)@M;MrG9?}C45trxr2(MZq;zVTiAO8Z; WI?`W>e4q6MAMDsptGa5NZ8V9gX23iy9PPd z>~gC_LpZ$9;BXB&)M3tXTw;TZUA_&Wc>aKc>RFx_-uL@?J`XSaM=7Or(zmJK4%-Px zYOxbgEEZ!BDW#TDZa@>QAf?o;R!by#yDX)Y)>`X@#kT1HG3wKWp~GPWzpCVn@dK5cS&dc2|UIF1kiy&C%H{E%=I#6W&Gz{(kf!-!gN#@@cg z>?2(ExBDBB0w{M74_5=MY=&?Y#KQhvM19(1{`JW`n#DSRvCt`Z5IqJuU&+M6)jpzB wdeoE2gfwYZd$9hEi*?4YKj&(H^Zw848_3Y6yX@CdO#lD@07*qoM6N<$f`jt54gdfE literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..08a4f2164301f98df8586869f9da3128f50d4132 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfb>YqDFTwbci%|y z9K90!plnm2PSENLb&s#wx`*2zsCUW#wkPI&Mb!FLSu5twm*4v}(lbzmhaolcA5XhS z(_-^#vttF*QghZmjT6#2^?A7xV6opTKGDK=I>cZ$Zu$Sz9fDT!hfhRFMMu*C*h$Tpj z3`FXN1mX!2iLR9`m_l1_C!&x*C6?ahSXbve*7XnYA7zZ8a!+er>HQf{3{gtu>)JJ7 z9t2c2Dy3kIA*B>8mrL(vz&r@(Wwr8@Qsn!79>O_?5CXkk@4{aRD8k)t7tT3Mr&El_ z9QONtFvgIkDXg`~vJ9P02b0OfD+hQ*I1EEXQ3N3b+U+*1wb*XANYfN=n>~*E zPc)yNFSK5S8Drp_BaUOVTCE&@eg8nif5hpSRka8^=ir=!5CXH=3;^)9+2i!{h12)( zs^-^thR?-02LRL>P1NcSw{&4?(uh(RZp}Rgxv9#8A Z!@oH4_t{$^4gmlF002ovPDHLkV1m&}yOIC^ literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..75c95afa9249d2fef6e875a56b38c3074603e706 GIT binary patch literal 371 zcmV-(0gV2MP)b;z6vpv?AZ3Wu64Zq;H%N})BV^$KoW$Z79gt_Xknxdy#A%w6Wf^fCGn>t>@OpRT zbo^lQ@_LoyOB{wFQ4~=W1=H!Y!*APn{NS1Msp;n>uIrk*u8HHAJkJ4G?~a_mKRJJ$ ze$7$)gci3IMG*iaf5K?|bU&BNrI%$HRaF7>mUeG)n_X$GAAZ-rN^3nB{{ZQ~2nt?# RL+k(m002ovPDHLkV1l|Rpz;6! literal 0 HcmV?d00001