mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-08-10 17:55:44 +00:00
Merge branch 'HbmMods:master' into rulang3
This commit is contained in:
commit
c31845422d
23
changelog
23
changelog
@ -13,6 +13,13 @@
|
||||
* Additionally, channels can be drilled by right clicking a pile addon device with the hand drill, the addon doesn't need to be removed beforehand
|
||||
* This is mainly for convenience when disassembling and reassembling the reactor, which requires all channels to be drilled again
|
||||
* Piles that overheat will explode, throwing flaming graphite everywhere
|
||||
* Satelllite Ground Station
|
||||
* Can relay RoR commands to connected satellites and satellite info back to RoR
|
||||
* Platemetal
|
||||
* Decorative connected texture metal block
|
||||
* Comes in all colors except brown
|
||||
* NTM poop theory debunked
|
||||
* Make a nice clanking noise when placing and breaking
|
||||
|
||||
## Changed
|
||||
* Updated all oil well GUI textures
|
||||
@ -29,6 +36,19 @@
|
||||
* The small pylon now has a steel variant
|
||||
* Items in the battery socket which previously didn't show up in the socket's model are now rendered
|
||||
* Reduced the cost for the heavy stirling engine
|
||||
* Removed the satellite interface item for being basically completely useless
|
||||
* Updated the satellite ID manager texture and recipe
|
||||
* Satellite ID chips are now soldered
|
||||
* Overhauled all satellites
|
||||
* Satellites now use one item ID with meta, most satellites now have new textures
|
||||
* Satellites can now be connected to ground stations and controlled with RoR commands
|
||||
* Satellites now have manual pages detailing the commands
|
||||
* The recipes have been updated, they now use mostly common parts and no longer feature the satellite base and heads items which are welded together
|
||||
* Legacy satellites still function and can still be launched
|
||||
* The PWR's coolant levels can now be read with RoR
|
||||
* Soyuz and related assembly recipes now use 25kHE/t instead of just 100
|
||||
* Updated the GUI textures for the refinery, various particle accelerator parts and a few other machines
|
||||
* Glyphid hive blocks now use state-of-the-fart flesh sounds
|
||||
|
||||
## Fixed
|
||||
* Fixed held block being placed when not sneaking when opening the cable diode's GUI
|
||||
@ -38,4 +58,5 @@
|
||||
* Fixed a longstanding issue where the transparent part of beams from tile entity models would often have incorrect render order, sometimes rendering things behind them invisible
|
||||
* This also fixes the same phenomenon for other types of beams, such as those from hitscan laser and tesla weapons
|
||||
* Fixed some issues regarding the new crane structure
|
||||
* Fixed skeletonizer ashes floating over the floor after landing
|
||||
* Fixed skeletonizer ashes floating over the floor after landing
|
||||
* Fixed backface rendering of the capacitor frames when inserted in the battery socket
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5758
|
||||
mod_build_number=5768
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -14,7 +14,7 @@ public class BlockEnumMulti extends BlockMulti {
|
||||
|
||||
public Class<? extends Enum> theEnum;
|
||||
public boolean multiName;
|
||||
private boolean multiTexture;
|
||||
protected boolean multiTexture;
|
||||
|
||||
public BlockEnumMulti(Material mat, Class<? extends Enum> theEnum, boolean multiName, boolean multiTexture) {
|
||||
super(mat);
|
||||
|
||||
@ -26,7 +26,12 @@ public class BlockEnums {
|
||||
|
||||
public static enum EnumStalagmiteType {
|
||||
SULFUR,
|
||||
ASBESTOS
|
||||
ASBESTOS,
|
||||
ICE,
|
||||
SNOW,
|
||||
GLYPHID1,
|
||||
GLYPHID2,
|
||||
GLYPHID3
|
||||
}
|
||||
|
||||
public static enum EnumCMMaterials {
|
||||
@ -49,15 +54,15 @@ public class BlockEnums {
|
||||
GOLD,
|
||||
SCHRABIDIUM
|
||||
}
|
||||
|
||||
|
||||
/** DECO / STRUCTURE ENUMS */
|
||||
//i apologize in advance
|
||||
|
||||
|
||||
public static enum TileType {
|
||||
LARGE,
|
||||
SMALL
|
||||
}
|
||||
|
||||
|
||||
public static enum LightstoneType {
|
||||
UNREFINED,
|
||||
TILE,
|
||||
@ -65,11 +70,11 @@ public class BlockEnums {
|
||||
BRICKS_CHISELED,
|
||||
CHISELED
|
||||
}
|
||||
|
||||
|
||||
public static enum DecoComputerEnum {
|
||||
IBM_300PL
|
||||
}
|
||||
|
||||
|
||||
public static enum DecoCabinetEnum {
|
||||
GREEN,
|
||||
STEEL
|
||||
@ -81,4 +86,21 @@ public class BlockEnums {
|
||||
HALOGEN
|
||||
}
|
||||
|
||||
public static enum PlatemetalType {
|
||||
BASE,
|
||||
BLACK,
|
||||
WHITE,
|
||||
RED,
|
||||
GREEN,
|
||||
LIGHT_GRAY,
|
||||
BLUE,
|
||||
PURPLE,
|
||||
CYAN,
|
||||
PINK,
|
||||
LIME,
|
||||
YELLOW,
|
||||
LIGHT_BLUE,
|
||||
MAGENTA,
|
||||
ORANGE
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,6 +255,7 @@ public class ModBlocks {
|
||||
public static Block deco_rusty_steel;
|
||||
public static Block deco_lead;
|
||||
public static Block deco_beryllium;
|
||||
public static Block platemetal;
|
||||
public static Block deco_asbestos;
|
||||
public static Block deco_rbmk;
|
||||
public static Block deco_rbmk_smooth;
|
||||
@ -1430,6 +1431,7 @@ public class ModBlocks {
|
||||
deco_rusty_steel = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_rusty_steel").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_rusty_steel");
|
||||
deco_lead = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_lead").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_lead");
|
||||
deco_beryllium = new BlockDecoCT(Material.iron).noFortune().setBlockName("deco_beryllium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_beryllium");
|
||||
platemetal = new BlockEnumMultiCT(Material.iron, BlockEnums.PlatemetalType.class, true, true).setBlockName("platemetal").setCreativeTab(MainRegistry.blockTab).setStepSound(ModSoundTypes.platemetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":platemetal");
|
||||
deco_asbestos = new BlockOutgas(Material.cloth, true, 5, true).noFortune().setBlockName("deco_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":deco_asbestos");
|
||||
deco_rbmk = new BlockGeneric(Material.iron).setBlockName("deco_rbmk").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top");
|
||||
deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(100.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_blank_top");
|
||||
@ -1642,8 +1644,8 @@ public class ModBlocks {
|
||||
mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush");
|
||||
mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin");
|
||||
mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem");
|
||||
glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base");
|
||||
glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt");
|
||||
glyphid_base = new BlockGlyphid(Material.coral).setBlockName("glyphid_base").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base");
|
||||
glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(ModSoundTypes.flesh).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_eggs_alt");
|
||||
|
||||
plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F);
|
||||
plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F);
|
||||
@ -2585,6 +2587,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(deco_rusty_steel, deco_rusty_steel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_lead, deco_lead.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(platemetal, ItemBlockBlastInfo.class, platemetal.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName());
|
||||
@ -2915,7 +2918,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(red_barrel, ItemBlockLore.class, red_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(pink_barrel, ItemBlockLore.class, pink_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(lox_barrel, ItemBlockLore.class, lox_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(taint_barrel, taint_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(taint_barrel, ItemBlockLore.class, taint_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(yellow_barrel, yellow_barrel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(vitrified_barrel, vitrified_barrel.getUnlocalizedName());
|
||||
|
||||
|
||||
@ -10,4 +10,6 @@ public class ModSoundTypes {
|
||||
if(type == ModSoundType.SubType.BREAK) in -= 0.15F;
|
||||
return in + rand.nextFloat() * 0.2F;
|
||||
});
|
||||
public static final ModSoundType flesh = ModSoundType.placeBreakStep("hbm:block.flesh", "hbm:block.flesh", "hbm:block.flesh", 0.5F, 1.0F);
|
||||
public static final ModSoundType platemetal = ModSoundType.placeBreakStep("hbm:block.platemetalPlace", "hbm:block.platemetalPlace", "hbm:step.platemetal", 1.0F, 1.0F);
|
||||
}
|
||||
|
||||
65
src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java
Normal file
65
src/main/java/com/hbm/blocks/generic/BlockEnumMultiCT.java
Normal file
@ -0,0 +1,65 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.blocks.BlockEnumMulti;
|
||||
import com.hbm.render.block.ct.CT;
|
||||
import com.hbm.render.block.ct.CTStitchReceiver;
|
||||
import com.hbm.render.block.ct.IBlockCT;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
||||
public class BlockEnumMultiCT extends BlockEnumMulti implements IBlockCT {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public CTStitchReceiver[] receivers;
|
||||
// im planning ts for shi like deco blocks n shit when the time comes
|
||||
public BlockEnumMultiCT(Material mat, Class<? extends Enum> theEnum, boolean multiName, boolean multiTexture)
|
||||
{
|
||||
super(mat, theEnum, multiName, multiTexture);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return CT.renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister reg) {
|
||||
if(multiTexture) {
|
||||
Enum[] enums = theEnum.getEnumConstants();
|
||||
this.icons = new IIcon[enums.length];
|
||||
this.receivers = new CTStitchReceiver[enums.length];
|
||||
for(int i = 0; i < icons.length; i++)
|
||||
{
|
||||
Enum num = enums[i];
|
||||
String texName = this.getTextureMultiName(num);
|
||||
this.icons[i] = reg.registerIcon(texName);
|
||||
this.receivers[i] = IBlockCT.primeReceiver(reg, texName, this.icons[i]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.blockIcon = reg.registerIcon(this.getTextureName());
|
||||
this.receivers = new CTStitchReceiver[1];
|
||||
this.receivers[0] = IBlockCT.primeReceiver(reg, this.getTextureName(), this.blockIcon);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public IIcon[] getFragments(IBlockAccess world, int x, int y, int z, int side)
|
||||
{
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
return receivers[meta % receivers.length].fragCache;
|
||||
|
||||
}
|
||||
@Override
|
||||
public boolean canConnect(IBlockAccess world, int x, int y, int z, Block block) {
|
||||
return this == block;
|
||||
}
|
||||
}
|
||||
@ -10,6 +10,7 @@ import com.hbm.items.ModItems;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
@ -43,6 +44,8 @@ public class BlockStalagmite extends BlockEnumMulti {
|
||||
switch(meta) {
|
||||
case 0: return ModItems.sulfur;
|
||||
case 1: return ModItems.powder_asbestos;
|
||||
case 2: return ModItems.powder_ice;
|
||||
case 3: return Items.snowball;
|
||||
}
|
||||
|
||||
return null;
|
||||
|
||||
@ -17,7 +17,6 @@ import net.minecraft.world.World;
|
||||
|
||||
public class RedBarrel extends BlockDetonatable {
|
||||
|
||||
// Flammable barrels also explode when shot
|
||||
public RedBarrel(Material material, boolean flammable) {
|
||||
super(material, flammable ? 2 : 0, flammable ? 15 : 0, 100, true, flammable);
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -42,6 +42,8 @@ public class StructureConfig {
|
||||
public static int lighthouseSpawnWeight = 4;
|
||||
public static int oilRigSpawnWeight = 5;
|
||||
public static int broadcastingTowerSpawnWeight = 25;
|
||||
public static int waterPumpSpawnWeight = 15;
|
||||
public static int deadDishSmallSpawnWeight = 15;
|
||||
public static int beachedPatrolSpawnWeight = 15;
|
||||
public static int vertibirdSpawnWeight = 6;
|
||||
public static int vertibirdCrashedSpawnWeight = 10;
|
||||
@ -117,6 +119,8 @@ public class StructureConfig {
|
||||
craneSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.39_craneSpawnWeight", "Spawn weight for crane structure.", 20);
|
||||
broadcastingTowerSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.40_broadcastingTowerSpawnWeight", "Spawn weight for broadcasting tower structure.", 25);
|
||||
towerBaseSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.41_towerBaseSpawnWeight", "Spawn weight for tower base.", 30);
|
||||
waterPumpSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.42_waterPumpSpawnWeight", "Spawn weight for water pump structure.", 15);
|
||||
deadDishSmallSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.43_deadDishSmallSpawnWeight", "Spawn weight for dead dish small structure.", 15);
|
||||
|
||||
|
||||
structureMinChunks = CommonConfig.setDef(structureMinChunks, 4);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
68
src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java
Normal file
68
src/main/java/com/hbm/entity/logic/EntityOrbitalLaser.java
Normal file
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ public class CentrifugeRecipeHandler extends NEIUniversalHandler {
|
||||
@Override
|
||||
public void loadTransferRects() {
|
||||
super.loadTransferRects();
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(56, 0, 80, 38), "ntmCentrifuge"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(63, 7, 80, 38), "ntmCentrifuge"));
|
||||
guiGui.add(GUIMachineCentrifuge.class);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@ public class MixerHandler extends NEIUniversalHandler {
|
||||
@Override
|
||||
public void loadTransferRects() {
|
||||
super.loadTransferRects();
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(57, 25, 52, 44), "ntmMixer"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(66, 20, 52, 44), "ntmMixer"));
|
||||
guiGui.add(GUIMixer.class);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
||||
}
|
||||
|
||||
@ -162,7 +162,7 @@ public class RefineryRecipeHandler extends TemplateRecipeHandler implements ICom
|
||||
guiGui = new LinkedList<Class<? extends GuiContainer>>();
|
||||
|
||||
transferRects.add(new RecipeTransferRect(new Rectangle(138 - 1 - 36 - 27, 23, 36, 18), "refinery"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(48, 5, 31, 101), "refinery"));
|
||||
transferRectsGui.add(new RecipeTransferRect(new Rectangle(34, 34, 14, 34), "refinery"));
|
||||
guiGui.add(GUIMachineRefinery.class);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects);
|
||||
RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui);
|
||||
|
||||
@ -15,29 +15,33 @@ import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerCentrifuge extends Container {
|
||||
|
||||
private TileEntityMachineCentrifuge diFurnace;
|
||||
private TileEntityMachineCentrifuge centrifuge;
|
||||
|
||||
public ContainerCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) {
|
||||
|
||||
diFurnace = tedf;
|
||||
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 36, 50));
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 9, 50));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 63, 50));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 83, 50));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 103, 50));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 123, 50));
|
||||
this.addSlotToContainer(new SlotUpgrade(tedf, 6, 149, 22));
|
||||
this.addSlotToContainer(new SlotUpgrade(tedf, 7, 149, 40));
|
||||
this.centrifuge = tedf;
|
||||
|
||||
// Input
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 44, 57));
|
||||
// Battery
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 8, 57));
|
||||
// Outputs
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 70, 57));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 90, 57));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 4, 110, 57));
|
||||
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 5, 130, 57));
|
||||
// Upgrades
|
||||
this.addSlotToContainer(new SlotUpgrade(tedf, 6, 156, 31));
|
||||
this.addSlotToContainer(new SlotUpgrade(tedf, 7, 156, 49));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 104 + i * 18));
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 107 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 162));
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 165));
|
||||
}
|
||||
}
|
||||
|
||||
@ -83,7 +87,7 @@ public class ContainerCentrifuge extends Container {
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return diFurnace.isUseableByPlayer(player);
|
||||
return centrifuge.isUseableByPlayer(player);
|
||||
}
|
||||
|
||||
}
|
||||
@ -19,40 +19,40 @@ public class ContainerMachineRefinery extends Container {
|
||||
testNuke = tedf;
|
||||
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 186, 72));
|
||||
this.addSlotToContainer(new Slot(tedf, 0, 158, 108));
|
||||
//Canister Input
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 8, 99));
|
||||
this.addSlotToContainer(new Slot(tedf, 1, 12, 90));
|
||||
//Canister Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 8, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 2, 12, 108));
|
||||
//Heavy Oil Input
|
||||
this.addSlotToContainer(new Slot(tedf, 3, 86, 99));
|
||||
this.addSlotToContainer(new Slot(tedf, 3, 64, 90));
|
||||
//Heavy Oil Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 86, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 64, 108));
|
||||
//Naphtha Input
|
||||
this.addSlotToContainer(new Slot(tedf, 5, 106, 99));
|
||||
this.addSlotToContainer(new Slot(tedf, 5, 82, 90));
|
||||
//Naphtha Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 106, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 82, 108));
|
||||
//Light Oil Input
|
||||
this.addSlotToContainer(new Slot(tedf, 7, 126, 99));
|
||||
this.addSlotToContainer(new Slot(tedf, 7, 100, 90));
|
||||
//Light Oil Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 126, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 100, 108));
|
||||
//Petroleum Input
|
||||
this.addSlotToContainer(new Slot(tedf, 9, 146, 99));
|
||||
this.addSlotToContainer(new Slot(tedf, 9, 118, 90));
|
||||
//Petroleum Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 146, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 118, 108));
|
||||
//Sulfur Output
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 58, 119));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 38, 90));
|
||||
//Fluid ID
|
||||
this.addSlotToContainer(new Slot(tedf, 12, 186, 106));
|
||||
this.addSlotToContainer(new Slot(tedf, 12, 38, 108));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 150 + i * 18));
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 11 + j * 18, 158 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 208));
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 11 + i * 18, 216));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -18,15 +18,15 @@ public class ContainerMixer extends Container {
|
||||
public ContainerMixer(InventoryPlayer player, TileEntityMachineMixer mixer) {
|
||||
this.mixer = mixer;
|
||||
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(mixer, 0, 23, 77));
|
||||
//Item Input
|
||||
this.addSlotToContainer(new Slot(mixer, 1, 43, 77));
|
||||
//Fluid ID
|
||||
this.addSlotToContainer(new Slot(mixer, 2, 117, 77));
|
||||
//Upgrades
|
||||
this.addSlotToContainer(new Slot(mixer, 3, 137, 24));
|
||||
this.addSlotToContainer(new Slot(mixer, 4, 137, 42));
|
||||
// Battery
|
||||
this.addSlotToContainer(new Slot(mixer, 0, 12, 72));
|
||||
// Item Input
|
||||
this.addSlotToContainer(new Slot(mixer, 1, 52, 72));
|
||||
// Fluid ID
|
||||
this.addSlotToContainer(new Slot(mixer, 2, 126, 72));
|
||||
// Upgrades
|
||||
this.addSlotToContainer(new Slot(mixer, 3, 148, 18));
|
||||
this.addSlotToContainer(new Slot(mixer, 4, 148, 36));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
|
||||
@ -22,11 +22,11 @@ public class ContainerPASource extends Container {
|
||||
//Battery
|
||||
this.addSlotToContainer(new Slot(tile, 0, 8, 72));
|
||||
//Inputs
|
||||
this.addSlotToContainer(new Slot(tile, 1, 62, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 80, 18));
|
||||
this.addSlotToContainer(new Slot(tile, 1, 62, 16));
|
||||
this.addSlotToContainer(new Slot(tile, 2, 80, 16));
|
||||
//Containers
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 45));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 45));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 3, 62, 43));
|
||||
this.addSlotToContainer(new SlotTakeOnly(tile, 4, 80, 43));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
|
||||
@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.inventory.container.ContainerCentrifuge;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineCentrifuge;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@ -18,25 +19,32 @@ public class GUIMachineCentrifuge extends GuiInfoContainer {
|
||||
|
||||
public GUIMachineCentrifuge(InventoryPlayer invPlayer, TileEntityMachineCentrifuge tedf) {
|
||||
super(new ContainerCentrifuge(invPlayer, tedf));
|
||||
centrifuge = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 186;
|
||||
this.centrifuge = tedf;
|
||||
this.xSize = 182;
|
||||
this.ySize = 189;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 9, guiTop + 13, 16, 34, centrifuge.power, centrifuge.maxPower);
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 8, guiTop + 18, 16, 37, centrifuge.power, centrifuge.maxPower);
|
||||
|
||||
String[] upgradeText = new String[4];
|
||||
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
||||
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
||||
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
||||
upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive");
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 160, guiTop + 16, 8, 8, mouseX, mouseY, upgradeText);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
//String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName());
|
||||
String name = this.centrifuge.hasCustomInventoryName() ? this.centrifuge.getInventoryName() : I18n.format(this.centrifuge.getInventoryName());
|
||||
|
||||
//this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 + 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -46,8 +54,8 @@ public class GUIMachineCentrifuge extends GuiInfoContainer {
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
if(centrifuge.hasPower()) {
|
||||
int i1 = (int) centrifuge.getPowerRemainingScaled(35);
|
||||
drawTexturedModalRect(guiLeft + 9, guiTop + 48 - i1, 176, 35 - i1, 16, i1);
|
||||
int i1 = (int) centrifuge.getPowerRemainingScaled(37);
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 55 - i1, 182, 37 - i1, 16, i1);
|
||||
}
|
||||
|
||||
if(centrifuge.isProcessing()) {
|
||||
@ -55,11 +63,13 @@ public class GUIMachineCentrifuge extends GuiInfoContainer {
|
||||
|
||||
for(int i = 0; i < 4; i++) {
|
||||
int h = Math.min(p, 36);
|
||||
drawTexturedModalRect(guiLeft + 65 + i * 20, guiTop + 50 - h, 176, 71 - h, 12, h);
|
||||
drawTexturedModalRect(guiLeft + 72 + i * 20, guiTop + 57 - h, 182, 73 - h, 12, h);
|
||||
p -= h;
|
||||
if(p <= 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
this.drawInfoPanel(guiLeft + 160, guiTop + 16, 8, 8, 8);
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,53 +26,47 @@ public class GUIMachineRefinery extends GuiInfoContainer {
|
||||
super(new ContainerMachineRefinery(invPlayer, tedf));
|
||||
refinery = tedf;
|
||||
|
||||
this.xSize = 210;
|
||||
this.ySize = 231;
|
||||
this.xSize = 182;
|
||||
this.ySize = 240;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 30, guiTop + 27, 21, 104); // Render tooltip for column.
|
||||
refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 86, guiTop + 42, 16, 52);
|
||||
refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 106, guiTop + 42, 16, 52);
|
||||
refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 126, guiTop + 42, 16, 52);
|
||||
refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 146, guiTop + 42, 16, 52);
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 52, refinery.power, refinery.maxPower);
|
||||
refinery.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 12, guiTop + 17, 16, 70); // Render tooltip for column.
|
||||
refinery.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 64, guiTop + 35, 16, 52);
|
||||
refinery.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 82, guiTop + 35, 16, 52);
|
||||
refinery.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 100, guiTop + 35, 16, 52);
|
||||
refinery.tanks[4].renderTankInfo(this, mouseX, mouseY, guiLeft + 118, guiTop + 35, 16, 52);
|
||||
this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 158, guiTop + 18, 16, 88, refinery.power, refinery.maxPower);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - 34/2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 4, 4210752);
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - 36 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 11, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 350, 256);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
// power
|
||||
int j = (int)refinery.getPowerScaled(50);
|
||||
func_146110_a(guiLeft + 186, guiTop + 69 - j, 210, 52 - j, 16, j, 350, 256);
|
||||
int j = (int)refinery.getPowerScaled(88);
|
||||
drawTexturedModalRect(guiLeft + 158, guiTop + 106 - j, 182, 88 - j, 16, j);
|
||||
|
||||
OpenGlHelper.glBlendFunc(770, 771, 1, 0); // default
|
||||
|
||||
// input tank
|
||||
FluidTank inputOil = refinery.tanks[0];
|
||||
if (inputOil.getFill() != 0) {
|
||||
|
||||
int targetHeight = inputOil.getFill() * 101 / inputOil.getMaxFill();
|
||||
Color color = new Color(inputOil.getTankType().getColor());
|
||||
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F);
|
||||
func_146110_a(guiLeft + 33, guiTop + 130 - targetHeight, 226, 101 - targetHeight, 16, targetHeight, 350, 256);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
refinery.tanks[0].renderTank(guiLeft + 12, guiTop + 88, this.zLevel, 16, 70);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
}
|
||||
|
||||
// fucking kgjhgdfjgdhjfg
|
||||
@ -84,10 +78,10 @@ public class GUIMachineRefinery extends GuiInfoContainer {
|
||||
RefineryRecipe recipe = RefineryRecipes.getRefinery(inputOil.getTankType());
|
||||
|
||||
if(recipe == null) {
|
||||
func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256);
|
||||
func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256);
|
||||
func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256);
|
||||
func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256);
|
||||
} else {
|
||||
|
||||
// Heavy Oil Products
|
||||
@ -95,31 +89,31 @@ public class GUIMachineRefinery extends GuiInfoContainer {
|
||||
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F);
|
||||
func_146110_a(guiLeft + 52, guiTop + 63, 247, 1, 33, 48, 350, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 30, 0, 248, 43, 4, 256, 256);
|
||||
|
||||
// Naphtha Oil Products
|
||||
color = new Color(recipe.outputs[1].type.getColor());
|
||||
GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F);
|
||||
func_146110_a(guiLeft + 52, guiTop + 32, 247, 50, 66, 52, 350, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 26, 0, 240, 61, 8, 256, 256);
|
||||
|
||||
// Light Oil Products
|
||||
color = new Color(recipe.outputs[2].type.getColor());
|
||||
GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F);
|
||||
func_146110_a(guiLeft + 52, guiTop + 24, 247, 145, 86, 35, 350, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 22, 61, 240, 79, 12, 256, 256);
|
||||
|
||||
// Gaseous Products
|
||||
color = new Color(recipe.outputs[3].type.getColor());
|
||||
GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1F);
|
||||
func_146110_a(guiLeft + 36, guiTop + 16, 211, 119, 122, 25, 350, 256);
|
||||
func_146110_a(guiLeft + 30, guiTop + 18, 140, 240, 97, 16, 256, 256);
|
||||
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1F, 1F, 1F, 1F);
|
||||
}
|
||||
|
||||
// output tanks
|
||||
refinery.tanks[1].renderTank(guiLeft + 86, guiTop + 95, this.zLevel, 16, 52);
|
||||
refinery.tanks[2].renderTank(guiLeft + 106, guiTop + 95, this.zLevel, 16, 52);
|
||||
refinery.tanks[3].renderTank(guiLeft + 126, guiTop + 95, this.zLevel, 16, 52);
|
||||
refinery.tanks[4].renderTank(guiLeft + 146, guiTop + 95, this.zLevel, 16, 52);
|
||||
refinery.tanks[1].renderTank(guiLeft + 64, guiTop + 88, this.zLevel, 16, 52);
|
||||
refinery.tanks[2].renderTank(guiLeft + 82, guiTop + 88, this.zLevel, 16, 52);
|
||||
refinery.tanks[3].renderTank(guiLeft + 100, guiTop + 88, this.zLevel, 16, 52);
|
||||
refinery.tanks[4].renderTank(guiLeft + 118, guiTop + 88, this.zLevel, 16, 52);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
|
||||
@ -12,6 +12,7 @@ import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toserver.NBTControlPacket;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineMixer;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.audio.PositionedSoundRecord;
|
||||
@ -28,8 +29,8 @@ public class GUIMixer extends GuiInfoContainer {
|
||||
|
||||
public GUIMixer(InventoryPlayer player, TileEntityMachineMixer mixer) {
|
||||
super(new ContainerMixer(player, mixer));
|
||||
this.mixer = mixer;
|
||||
|
||||
this.mixer = mixer;
|
||||
this.xSize = 176;
|
||||
this.ySize = 204;
|
||||
}
|
||||
@ -38,7 +39,14 @@ public class GUIMixer extends GuiInfoContainer {
|
||||
public void drawScreen(int x, int y, float interp) {
|
||||
super.drawScreen(x, y, interp);
|
||||
|
||||
this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower());
|
||||
this.drawElectricityInfo(this, x, y, guiLeft + 12, guiTop + 18, 16, 52, mixer.getPower(), mixer.getMaxPower());
|
||||
|
||||
String[] upgradeText = new String[4];
|
||||
upgradeText[0] = I18nUtil.resolveKey("desc.gui.upgrade");
|
||||
upgradeText[1] = I18nUtil.resolveKey("desc.gui.upgrade.speed");
|
||||
upgradeText[2] = I18nUtil.resolveKey("desc.gui.upgrade.power");
|
||||
upgradeText[3] = I18nUtil.resolveKey("desc.gui.upgrade.overdrive");
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 152, guiTop + 55, 8, 8, x, y, upgradeText);
|
||||
|
||||
MixerRecipe[] recipes = MixerRecipes.getOutput(mixer.tanks[2].getTankType());
|
||||
|
||||
@ -50,19 +58,19 @@ public class GUIMixer extends GuiInfoContainer {
|
||||
if(recipe.input2 != null) label.add("-" + recipe.input2.type.getLocalizedName());
|
||||
if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName());
|
||||
label.add(EnumChatFormatting.RED + "Click to change!");
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label);
|
||||
this.drawCustomInfoStat(x, y, guiLeft + 71, guiTop + 17, 12, 12, x, y, label);
|
||||
}
|
||||
|
||||
mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52);
|
||||
mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52);
|
||||
mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52);
|
||||
mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 18, 7, 52);
|
||||
mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 61, guiTop + 18, 7, 52);
|
||||
mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 126, guiTop + 18, 16, 52);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 22 < y && guiTop + 22 + 12 >= y) {
|
||||
if(guiLeft + 71 <= x && guiLeft + 71 + 12 > x && guiTop + 17 < y && guiTop + 17 + 12 >= y) {
|
||||
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
@ -73,9 +81,9 @@ public class GUIMixer extends GuiInfoContainer {
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.mixer.hasCustomInventoryName() ? this.mixer.getInventoryName() : I18n.format(this.mixer.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 + 40 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@ -85,16 +93,18 @@ public class GUIMixer extends GuiInfoContainer {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
int i = (int) (mixer.getPower() * 53 / mixer.getMaxPower());
|
||||
drawTexturedModalRect(guiLeft + 23, guiTop + 75 - i, 176, 52 - i, 16, i);
|
||||
int i = (int) (mixer.getPower() * 52 / mixer.getMaxPower());
|
||||
drawTexturedModalRect(guiLeft + 12, guiTop + 70 - i, 176, 52 - i, 16, i);
|
||||
|
||||
if(mixer.processTime > 0 && mixer.progress > 0) {
|
||||
int j = mixer.progress * 53 / mixer.processTime;
|
||||
drawTexturedModalRect(guiLeft + 62, guiTop + 36, 192, 0, j, 44);
|
||||
int j = mixer.progress * 52 / mixer.processTime;
|
||||
drawTexturedModalRect(guiLeft + 71, guiTop + 31, 192, 0, j, 44);
|
||||
}
|
||||
|
||||
mixer.tanks[0].renderTank(guiLeft + 43, guiTop + 75, this.zLevel, 7, 52);
|
||||
mixer.tanks[1].renderTank(guiLeft + 52, guiTop + 75, this.zLevel, 7, 52);
|
||||
mixer.tanks[2].renderTank(guiLeft + 117, guiTop + 75, this.zLevel, 16, 52);
|
||||
mixer.tanks[0].renderTank(guiLeft + 52, guiTop + 70, this.zLevel, 7, 52);
|
||||
mixer.tanks[1].renderTank(guiLeft + 61, guiTop + 70, this.zLevel, 7, 52);
|
||||
mixer.tanks[2].renderTank(guiLeft + 126, guiTop + 70, this.zLevel, 16, 52);
|
||||
|
||||
this.drawInfoPanel(guiLeft + 152, guiTop + 55, 8, 8, 8);
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ public class GUIPADetector extends GuiInfoContainer {
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752);
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 8, 5, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
|
||||
this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752);
|
||||
@ -57,8 +57,8 @@ public class GUIPADetector extends GuiInfoContainer {
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j);
|
||||
|
||||
int heat = (int) Math.ceil(source.temperature);
|
||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8);
|
||||
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8);
|
||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 43, guiTop + 18, 176, 8, 8, 8);
|
||||
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 43, guiTop + 43, 176, 8, 8, 8);
|
||||
|
||||
source.coolantTanks[0].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||
source.coolantTanks[1].renderTank(guiLeft + 152, guiTop + 88, this.zLevel, 16, 52);
|
||||
|
||||
@ -4,8 +4,10 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerPAQuadrupole;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemPACoil.EnumCoilType;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.albion.TileEntityPAQuadrupole;
|
||||
import com.hbm.util.EnumUtil;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
@ -39,7 +41,7 @@ public class GUIPAQuadrupole extends GuiInfoContainer {
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.quadrupole.hasCustomInventoryName() ? this.quadrupole.getInventoryName() : I18n.format(this.quadrupole.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 4210752);
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 6, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
|
||||
this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 118, 22, 4210752);
|
||||
@ -59,9 +61,16 @@ public class GUIPAQuadrupole extends GuiInfoContainer {
|
||||
|
||||
int heat = (int) Math.ceil(quadrupole.temperature);
|
||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 75, guiTop + 64, 176, 8, 8, 8);
|
||||
if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil) drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8);
|
||||
if(quadrupole.slots[1] != null && quadrupole.slots[1].getItem() == ModItems.pa_coil){
|
||||
drawTexturedModalRect(guiLeft + 85, guiTop + 64, 176, 8, 8, 8);
|
||||
EnumCoilType type = null;
|
||||
type = EnumUtil.grabEnumSafely(EnumCoilType.class, quadrupole.slots[1].getItemDamage());
|
||||
if (type == EnumCoilType.GOLD) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 0, 28, 28);
|
||||
if (type == EnumCoilType.NIOBIUM) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 0, 28, 28);
|
||||
if (type == EnumCoilType.BSCCO) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 200, 28, 28, 28);
|
||||
if (type == EnumCoilType.CHLOROPHYTE) drawTexturedModalRect(guiLeft + 65, guiTop + 30, 228, 28, 28, 28);
|
||||
}
|
||||
if(quadrupole.power >= quadrupole.usage) drawTexturedModalRect(guiLeft + 65, guiTop + 64, 176, 8, 8, 8);
|
||||
|
||||
quadrupole.coolantTanks[0].renderTank(guiLeft + 116, guiTop + 88, this.zLevel, 16, 52);
|
||||
quadrupole.coolantTanks[1].renderTank(guiLeft + 134, guiTop + 88, this.zLevel, 16, 52);
|
||||
}
|
||||
|
||||
@ -46,15 +46,15 @@ public class GUIPASource extends GuiInfoContainer {
|
||||
info.add(EnumChatFormatting.BLUE + "Last momentum: " + EnumChatFormatting.RESET + String.format(Locale.US, "%,d", source.lastSpeed));
|
||||
String[] message = I18nUtil.resolveKeyArray("pa." + this.source.state.name().toLowerCase(Locale.US) + ".desc");
|
||||
for(String s : message) info.add(EnumChatFormatting.YELLOW + s);
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 18, 10, 10, mouseX, mouseY, info);
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 30, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation");
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 16, 10, 10, mouseX, mouseY, info);
|
||||
this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 105, guiTop + 28, 10, 10, mouseX, mouseY, EnumChatFormatting.RED + "Cancel operation");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 30 < y && guiTop + 30 + 10 >= y) {
|
||||
if(guiLeft + 105 <= x && guiLeft + 105 + 10 > x && guiTop + 28 < y && guiTop + 28 + 10 >= y) {
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setBoolean("cancel", true);
|
||||
@ -66,7 +66,7 @@ public class GUIPASource extends GuiInfoContainer {
|
||||
protected void drawGuiContainerForegroundLayer( int i, int j) {
|
||||
|
||||
String name = this.source.hasCustomInventoryName() ? this.source.getInventoryName() : I18n.format(this.source.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 4210752);
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2 - 9, 4, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
|
||||
this.fontRendererObj.drawString(EnumChatFormatting.AQUA + "/123K", 136, 22, 4210752);
|
||||
@ -88,8 +88,8 @@ public class GUIPASource extends GuiInfoContainer {
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 70 - j, 184, 52 - j, 16, j);
|
||||
|
||||
int heat = (int) Math.ceil(source.temperature);
|
||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 18, 176, 8, 8, 8);
|
||||
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 43, 176, 8, 8, 8);
|
||||
if(heat <= 123) drawTexturedModalRect(guiLeft + 44, guiTop + 16, 176, 8, 8, 8);
|
||||
if(source.power >= source.usage) drawTexturedModalRect(guiLeft + 44, guiTop + 41, 176, 8, 8, 8);
|
||||
|
||||
int color = source.state.color;
|
||||
float red = (color & 0xff0000) >> 16;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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<Entity> 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];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -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() {
|
||||
|
||||
@ -32,6 +32,7 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType;
|
||||
import com.hbm.items.machine.ItemPACoil.EnumCoilType;
|
||||
import com.hbm.items.machine.ItemPileRodMK2.EnumPileRod;
|
||||
import com.hbm.items.machine.ItemPistons.EnumPistonType;
|
||||
import com.hbm.items.special.ItemSatellite.EnumSatType;
|
||||
import com.hbm.items.weapon.ItemAmmoHIMARS;
|
||||
import com.hbm.items.weapon.grenade.ItemGrenadeFuze.EnumGrenadeFuze;
|
||||
import com.hbm.items.weapon.grenade.ItemGrenadeShell.EnumGrenadeShell;
|
||||
@ -171,10 +172,6 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new OreDictStack(ZR.billet(), 1)).setGroup(autoPileRod, INSTANCE));
|
||||
this.register(new GenericRecipe("ass.pilenu").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal()))
|
||||
.inputItems(new OreDictStack(U.billet(), 3)).setGroup(autoPileRod, INSTANCE));
|
||||
this.register(new GenericRecipe("ass.pilepu239").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal()))
|
||||
.inputItems(new OreDictStack(PU239.billet(), 3)).setGroup(autoPileRod, INSTANCE));
|
||||
this.register(new GenericRecipe("ass.pilergp").setup(40, 200).outputItems(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal()))
|
||||
.inputItems(new OreDictStack(PURG.billet(), 3)).setGroup(autoPileRod, INSTANCE));
|
||||
|
||||
// powders
|
||||
String autoCyclotron = "autoswitch.cyclotron";
|
||||
@ -946,13 +943,13 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4_000)));
|
||||
|
||||
// space
|
||||
this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 100).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1))
|
||||
this.register(new GenericRecipe("ass.soyuzcore").setup(1_200, 25_000).outputItems(new ItemStack(ModBlocks.struct_soyuz_core, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateWelded(), 16),
|
||||
new ComparableStack(ModItems.upgrade_speed_3),
|
||||
new ComparableStack(ModItems.upgrade_power_3),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz"));
|
||||
this.register(new GenericRecipe("ass.soyuz").setup(6_000, 100).outputItems(new ItemStack(ModItems.missile_soyuz, 1))
|
||||
this.register(new GenericRecipe("ass.soyuz").setup(6_000, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz, 1))
|
||||
.inputItems(new OreDictStack(TI.shell(), 32),
|
||||
new OreDictStack(RUBBER.ingot(), 64),
|
||||
new ComparableStack(ModItems.rocket_fuel, 64),
|
||||
@ -960,84 +957,76 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
|
||||
new ComparableStack(ModItems.thruster_medium, 12),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.CONTROLLER),
|
||||
new ComparableStack(ModItems.part_generic, 32, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz"));
|
||||
this.register(new GenericRecipe("ass.lander").setup(2_400, 100).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1))
|
||||
this.register(new GenericRecipe("ass.lander").setup(2_400, 25_000).outputItems(new ItemStack(ModItems.missile_soyuz_lander, 1))
|
||||
.inputItems(new OreDictStack(AL.shell(), 4),
|
||||
new OreDictStack(RUBBER.ingot(), 16),
|
||||
new ComparableStack(ModItems.rocket_fuel, 16),
|
||||
new ComparableStack(ModItems.thruster_small, 3),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.part_generic, 12, EnumPartType.LDE)).setPools(GenericRecipes.POOL_PREFIX_DISCOVER + "soyuz"));
|
||||
this.register(new GenericRecipe("ass.satellitebase").setup(600, 100).outputItems(new ItemStack(ModItems.sat_base, 1))
|
||||
.inputItems(new OreDictStack(RUBBER.ingot(), 12),
|
||||
new OreDictStack(TI.shell(), 3),
|
||||
|
||||
this.register(new GenericRecipe("ass.spysat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SPY.ordinal()))
|
||||
.inputItems(new OreDictStack(AL.shell(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModItems.part_generic, 8, EnumPartType.GLASS_POLARIZED),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER)));
|
||||
this.register(new GenericRecipe("ass.scansat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.SCANNER.ordinal()))
|
||||
.inputItems(new OreDictStack(AL.shell(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 32),
|
||||
new OreDictStack(GOLD.wireDense(), 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER)));
|
||||
this.register(new GenericRecipe("ass.radarsat").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.RADAR.ordinal()))
|
||||
.inputItems(new OreDictStack(GOLD.plateCast(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 32),
|
||||
new ComparableStack(ModItems.magnetron, 32),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER)));
|
||||
this.register(new GenericRecipe("ass.astrominer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_ASTRO.ordinal()))
|
||||
.inputItems(new OreDictStack(BIGMT.plateCast(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 8),
|
||||
new ComparableStack(ModItems.thruster_medium, 1),
|
||||
new ComparableStack(ModItems.part_generic, 8, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 24),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)));
|
||||
this.register(new GenericRecipe("ass.satellitemapper").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_mapper, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8)));
|
||||
this.register(new GenericRecipe("ass.satellitescanner").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_scanner, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 8),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.magnetron, 8),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.satelliteradar").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_radar, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 3),
|
||||
new OreDictStack(TI.plateCast(), 12),
|
||||
new ComparableStack(ModItems.magnetron, 12),
|
||||
new ComparableStack(ModItems.coil_gold, 16),
|
||||
new ComparableStack(ModItems.circuit, 4, EnumCircuitType.ADVANCED.ordinal())));
|
||||
this.register(new GenericRecipe("ass.satellitelaser").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_laser, 1))
|
||||
.inputItems(new OreDictStack(STEEL.shell(), 6),
|
||||
new OreDictStack(CU.plateCast(), 24),
|
||||
new OreDictStack(ANY_HARDPLASTIC.ingot(), 16),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.CONTROLLER_ADVANCED),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.CAPACITOR_BOARD),
|
||||
new ComparableStack(ModItems.crystal_diamond, 8),
|
||||
new ComparableStack(ModBlocks.glass_quartz, 8)));
|
||||
this.register(new GenericRecipe("ass.satelliteresonator").setup(600, 100).outputItems(new ItemStack(ModItems.sat_head_resonator, 1))
|
||||
.inputItems(new OreDictStack(STEEL.plateCast(), 6),
|
||||
new OreDictStack(STAR.ingot(), 12),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 48),
|
||||
new ComparableStack(ModItems.motor_bismuth, 4),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.lunarminer").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.MINER_LUNAR.ordinal()))
|
||||
.inputItems(new OreDictStack(BIGMT.plateCast(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 8),
|
||||
new ComparableStack(ModItems.thruster_medium, 1),
|
||||
new ComparableStack(ModItems.motor_bismuth, 4),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 2, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.orbitallaser").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.PRECISION_LASER.ordinal()))
|
||||
.inputItems(new OreDictStack(WEAPONSTEEL.shell(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 32),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_TANTALUM),
|
||||
new ComparableStack(ModItems.crystal_redstone, 16),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 3, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.deathray").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.DEATH_RAY.ordinal()))
|
||||
.inputItems(new OreDictStack(WEAPONSTEEL.shell(), 32),
|
||||
new OreDictStack(PURG.billet(), 32),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_BISMUTH),
|
||||
new OreDictStack(EMERALD.gem(), 32),
|
||||
new ComparableStack(ModItems.part_generic, 16, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 5, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.xenrelay").setup(1_200, 25_000).outputItems(new ItemStack(ModItems.satellite, 1, EnumSatType.XENIUM_RESONATOR.ordinal()))
|
||||
.inputItems(new OreDictStack(GOLD.plateCast(), 16),
|
||||
new ComparableStack(ModItems.photo_panel, 32),
|
||||
new ComparableStack(ModItems.crystal_xen, 1),
|
||||
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.ADVANCED)));
|
||||
this.register(new GenericRecipe("ass.satelliterelay").setup(600, 100).outputItems(new ItemStack(ModItems.sat_foeq, 1))
|
||||
.inputItems(new OreDictStack(TI.shell(), 3),
|
||||
new ComparableStack(ModItems.plate_desh, 8),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.HYDROGEN.getID()),
|
||||
new ComparableStack(ModItems.photo_panel, 16),
|
||||
new ComparableStack(ModItems.thruster_nuclear, 1),
|
||||
new ComparableStack(ModItems.ingot_uranium_fuel, 6),
|
||||
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BASIC),
|
||||
new ComparableStack(ModItems.circuit, 24, EnumCircuitType.BISMOID),
|
||||
new ComparableStack(ModItems.part_generic, 4, EnumPartType.LDE),
|
||||
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER_ADVANCED)));
|
||||
|
||||
this.register(new GenericRecipe("ass.satlink").setup(100, 1_000).outputItems(new ItemStack(ModBlocks.machine_satlink))
|
||||
.inputItems(new ComparableStack(ModBlocks.steel_scaffold, 16),
|
||||
new OreDictStack(AL.plate(), 16),
|
||||
new ComparableStack(ModItems.magnetron, 3),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)));
|
||||
this.register(new GenericRecipe("ass.satelliteasteroidminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_miner, 1))
|
||||
.inputItems(new OreDictStack(BIGMT.plate(), 24),
|
||||
new ComparableStack(ModItems.motor_desh, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 12, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModItems.centrifuge_element, 4),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)));
|
||||
this.register(new GenericRecipe("ass.satellitelunarminer").setup(600, 100).outputItems(new ItemStack(ModItems.sat_lunar_miner, 1))
|
||||
.inputItems(new ComparableStack(ModItems.ingot_meteorite, 4),
|
||||
new ComparableStack(ModItems.plate_desh, 4),
|
||||
new ComparableStack(ModItems.motor, 2),
|
||||
new ComparableStack(ModItems.drill_titanium, 2),
|
||||
new ComparableStack(ModItems.circuit, 8, EnumCircuitType.ADVANCED),
|
||||
new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()),
|
||||
new ComparableStack(ModItems.thruster_small, 1),
|
||||
new ComparableStack(ModItems.photo_panel, 12),
|
||||
new ComparableStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_LITHIUM)));
|
||||
new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CONTROLLER)));
|
||||
|
||||
this.register(new GenericRecipe("ass.nitra").setupNamed(200, 500)
|
||||
.inputItems(new ComparableStack(ModItems.nitra))
|
||||
|
||||
@ -71,7 +71,7 @@ public class PUREXRecipes extends GenericRecipes<PUREXRecipe> {
|
||||
.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))
|
||||
|
||||
@ -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
|
||||
|
||||
@ -178,6 +178,7 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
new AStack[] {new ComparableStack(Blocks.stonebrick, 16), new ComparableStack(ModItems.ingot_firebrick, 16), new OreDictStack(IRON.ingot(), 8), new OreDictStack(CU.ingot(), 8)},
|
||||
new AnvilOutput(new ItemStack(ModBlocks.machine_annihilator))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(IRON.plate(), 1), new AnvilOutput(new ItemStack(ModBlocks.platemetal, 4, 0))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(AL.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_aluminium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(BE.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_beryllium, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(PB.ingot(), 1), new AnvilOutput(new ItemStack(ModBlocks.deco_lead, 4))).setTier(1).setOverlay(OverlayType.CONSTRUCTION));
|
||||
@ -658,6 +659,7 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_lead, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_lead, 1))}).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_beryllium, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_beryllium, 1))}).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.deco_asbestos, 4), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.ingot_asbestos, 1))}).setTier(1));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.platemetal, 4, 0), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron, 1))}).setTier(1));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
new ComparableStack(ModBlocks.heater_firebox),
|
||||
@ -862,14 +864,6 @@ public class AnvilRecipes extends SerializableRecipe {
|
||||
new OreDictStack(U.billet(), 3), new AnvilOutput[] {
|
||||
new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.NU.ordinal())),
|
||||
}).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
new OreDictStack(PU239.billet(), 3), new AnvilOutput[] {
|
||||
new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.PU239.ordinal())),
|
||||
}).setTier(2));
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
new OreDictStack(PURG.billet(), 3), new AnvilOutput[] {
|
||||
new AnvilOutput(new ItemStack(ModItems.pile_rod, 1, EnumPileRod.RGP.ordinal())),
|
||||
}).setTier(2));
|
||||
|
||||
//RBMK
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
|
||||
@ -1,9 +1,10 @@
|
||||
package com.hbm.items;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public interface IItemControlReceiver {
|
||||
|
||||
public void receiveControl(ItemStack stack, NBTTagCompound data);
|
||||
public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data);
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -64,7 +64,7 @@ public class ItemFluidIDMulti extends Item implements IItemFluidIdentifier, IIte
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(ItemStack stack, NBTTagCompound data) {
|
||||
public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) {
|
||||
if(data.hasKey("primary")) {
|
||||
setType(stack, Fluids.fromID(data.getInteger("primary")), true);
|
||||
}
|
||||
|
||||
34
src/main/java/com/hbm/items/special/ItemSatellite.java
Normal file
34
src/main/java/com/hbm/items/special/ItemSatellite.java
Normal file
@ -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));
|
||||
}
|
||||
}
|
||||
@ -72,7 +72,7 @@ public class ItemRTTYPager extends Item implements IItemControlReceiver, IGUIPro
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(ItemStack stack, NBTTagCompound data) {
|
||||
public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) {
|
||||
if(data.hasKey("chan")) {
|
||||
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
|
||||
stack.stackTagCompound.setString(KEY_CHANNEL, data.getString(KEY_CHANNEL));
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,14 +1,12 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import com.hbm.inventory.gui.GUIScreenSatCoord;
|
||||
import com.hbm.inventory.gui.GUIScreenSatInterface;
|
||||
import com.hbm.items.IItemControlReceiver;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemSatChip;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toclient.SatPanelPacket;
|
||||
import com.hbm.saveddata.SatelliteSavedData;
|
||||
import com.hbm.saveddata.satellites.Satellite;
|
||||
import com.hbm.saveddata.satellites.SatelliteBase;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -18,53 +16,45 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemSatInterface extends ItemSatChip implements IGUIProvider {
|
||||
public class ItemSatInterface extends ItemSatChip implements IGUIProvider, IItemControlReceiver {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static Satellite currentSat;
|
||||
public static final String KEY_NBT_CONNECTED = "connected";
|
||||
|
||||
@Override
|
||||
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) {
|
||||
|
||||
if(world.isRemote) {
|
||||
|
||||
player.openGui(MainRegistry.instance, 0, world, 0, 0, 0);
|
||||
}
|
||||
|
||||
if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0);
|
||||
return stack;
|
||||
}
|
||||
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) {
|
||||
|
||||
if(world.isRemote || !(entity instanceof EntityPlayerMP))
|
||||
return;
|
||||
|
||||
if(((EntityPlayerMP)entity).getHeldItem() != stack)
|
||||
return;
|
||||
|
||||
Satellite sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack));
|
||||
|
||||
if(sat != null && entity.ticksExisted % 2 == 0) {
|
||||
PacketDispatcher.wrapper.sendTo(new SatPanelPacket(sat), (EntityPlayerMP) entity); //making this one sat that is static might not have been a good idea
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return null;
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) {
|
||||
|
||||
if(world.isRemote || !(entity instanceof EntityPlayerMP))
|
||||
return;
|
||||
|
||||
if(((EntityPlayerMP) entity).getHeldItem() != stack)
|
||||
return;
|
||||
|
||||
SatelliteBase sat = SatelliteSavedData.getData(world).getSatFromFreq(this.getFreq(stack));
|
||||
if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound();
|
||||
|
||||
stack.stackTagCompound.setBoolean(KEY_NBT_CONNECTED, sat != null);
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if(this == ModItems.sat_interface)
|
||||
return new GUIScreenSatInterface(player);
|
||||
else if(this == ModItems.sat_coord)
|
||||
return new GUIScreenSatCoord(player);
|
||||
|
||||
if(this == ModItems.sat_coord) return new GUIScreenSatCoord(player);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) {
|
||||
SatelliteBase sat = SatelliteSavedData.getData(player.worldObj).getSatFromFreq(this.getFreq(stack));
|
||||
if(sat != null) sat.onCoordAction(player.worldObj, player, data.getInteger("x"), data.hasKey("y") ? data.getInteger("y") : -1, data.getInteger("z"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -534,7 +534,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(ItemStack stack, NBTTagCompound data) {
|
||||
public void receiveControl(EntityPlayer player, ItemStack stack, NBTTagCompound data) {
|
||||
Configuration config = new Configuration();
|
||||
config.readFromNBT(data);
|
||||
config.restrictTo(availableAbilities);
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (5758)";
|
||||
public static final String VERSION = "1.0.27 BETA (5768)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -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
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.main;
|
||||
|
||||
import com.hbm.blocks.BlockEnums.DecoCabinetEnum;
|
||||
import com.hbm.blocks.BlockEnums.LightstoneType;
|
||||
import com.hbm.blocks.BlockEnums.PlatemetalType;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockAbsorber.EnumAbsorberTier;
|
||||
import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType;
|
||||
@ -391,6 +392,13 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { new ItemStack(ModBlocks.concrete_colored_ext, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
|
||||
String[] plateDyes = { "Black", "White", "Red", "Green", "LightGray", "Blue", "Purple", "Cyan", "Pink", "Lime", "Yellow", "LightBlue", "Magenta", "Orange" };
|
||||
for(int i = 0; i < 14; i++) {
|
||||
String dyeName = "dye" + plateDyes[i];
|
||||
addRecipeAuto(new ItemStack(ModBlocks.platemetal, 8, i + 1), new Object[] { "PPP", "PDP", "PPP", 'P', new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), 'D', dyeName });
|
||||
}
|
||||
addShapelessAuto(new ItemStack(ModBlocks.platemetal, 1, PlatemetalType.BASE.ordinal()), new Object[] { new ItemStack(ModBlocks.platemetal, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE });
|
||||
@ -593,12 +601,10 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModItems.ams_core_wormhole, 1), new Object[] { "DPD", "PSP", "DPD", 'D', ModItems.plate_dineutronium, 'P', ModItems.powder_spark_mix, 'S', ModItems.singularity });
|
||||
addRecipeAuto(new ItemStack(ModItems.ams_core_eyeofharmony, 1), new Object[] { "ALA", "LSL", "ALA", 'A', ModItems.plate_dalekanium, 'L', new ItemStack(ModItems.fluid_barrel_full, 1, Fluids.LAVA.getID()), 'S', ModItems.black_hole });
|
||||
addRecipeAuto(new ItemStack(ModItems.ams_core_thingy), new Object[] { "NSN", "NGN", "G G", 'N', GOLD.nugget(), 'G', GOLD.ingot(), 'S', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.BATTERY_QUANTUM.ordinal()) });
|
||||
addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', NETHERQUARTZ.dust(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', STEEL.plate(), 'S', STAR.ingot(), 'C', ModItems.sat_chip });
|
||||
addRecipeAuto(new ItemStack(ModItems.photo_panel), new Object[] { " G ", "IPI", " C ", 'G', KEY_ANYPANE, 'I', ModItems.plate_polymer, 'P', SI.billet(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.PCB) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_satlinker), new Object[] { "PSP", "SCS", "PSP", 'P', ANY_RESISTANTALLOY.ingot(), 'S', ANY_PLASTIC.ingot(), 'C', ModItems.sat_chip });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_keyforge), new Object[] { "PCP", "WSW", "WSW", 'P', STEEL.plate(), 'S', W.ingot(), 'C', ModItems.padlock, 'W', KEY_PLANKS });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_chip), new Object[] { "WWW", "CIC", "WWW", 'W', MINGRADE.wireFine(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'I', ANY_PLASTIC.ingot() });
|
||||
addShapelessAuto(new ItemStack(ModItems.geiger_counter), new Object[] { ModBlocks.geiger });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_interface), new Object[] { "ISI", "PCP", "PAP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
addRecipeAuto(new ItemStack(ModItems.sat_coord), new Object[] { "SII", "SCA", "SPP", 'I', STEEL.ingot(), 'S', STAR.ingot(), 'P', ModItems.plate_polymer, 'C', ModItems.sat_chip, 'A', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_transformer), new Object[] { "SCS", "MDM", "SCS", 'S', IRON.ingot(), 'D', MINGRADE.ingot(), 'M',ModItems.coil_copper, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CAPACITOR) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.radiobox), new Object[] { "PLP", "PSP", "PLP", 'P', STEEL.plate(), 'S', ModItems.ring_starmetal, 'C', ModItems.fusion_core, 'L', DURA.plate() });
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -60,6 +60,8 @@ public class StructureManager {
|
||||
public static final NBTStructure beached_patrol = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/beached_patrol.nbt"));
|
||||
public static final NBTStructure lighthouse = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/lighthouse.nbt"));
|
||||
public static final NBTStructure dish = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dish.nbt"));
|
||||
public static final NBTStructure water_pump = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/water_pump.nbt"));
|
||||
public static final NBTStructure dead_dish_small = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/dead_dish_small.nbt"));
|
||||
public static final NBTStructure desert_shack_1 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_1.nbt"));
|
||||
public static final NBTStructure desert_shack_2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_2.nbt"));
|
||||
public static final NBTStructure desert_shack_3 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/desert_shack_3.nbt"));
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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<SatPanelPacket, IMessage> {
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -65,7 +65,7 @@ public class NBTItemControlPacket implements IMessage {
|
||||
ItemStack held = p.getHeldItem();
|
||||
|
||||
if(held != null && held.getItem() instanceof IItemControlReceiver) {
|
||||
((IItemControlReceiver) held.getItem()).receiveControl(held, nbt);
|
||||
((IItemControlReceiver) held.getItem()).receiveControl(p, held, nbt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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<SatCoordPacket, IMessage> {
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<SatLaserPacket, IMessage> {
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,72 @@
|
||||
package com.hbm.render.entity.effect;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
public class RenderOrbitalLaser extends Render {
|
||||
|
||||
@Override
|
||||
public void doRender(Entity entity, double x, double y, double z, float f0, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x, y, z);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
GL11.glDepthMask(false);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||
|
||||
GL11.glColor3f(1F, 0F, 0F);
|
||||
|
||||
Vec3 vector = Vec3.createVectorHelper(0.5D, 0, 0);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
tessellator.startDrawing(6);
|
||||
tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord);
|
||||
tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord);
|
||||
vector.rotateAroundY(45);
|
||||
tessellator.addVertex(vector.xCoord, 0.0D, vector.zCoord);
|
||||
tessellator.addVertex(vector.xCoord, 250.0D, vector.zCoord);
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
tessellator.startDrawing(6);
|
||||
tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2);
|
||||
tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2);
|
||||
vector.rotateAroundY(45);
|
||||
tessellator.addVertex(vector.xCoord / 2, 0.0D, vector.zCoord / 2);
|
||||
tessellator.addVertex(vector.xCoord / 2, 250.0D, vector.zCoord / 2);
|
||||
tessellator.draw();
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glDepthMask(true);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -21,7 +21,7 @@ public class RenderSatLink extends TileEntitySpecialRenderer implements IItemRen
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glRotatef(180, 0F, 1F, 0F);
|
||||
|
||||
TileEntityMachineSatLink link = (TileEntityMachineSatLink) tile;
|
||||
|
||||
@ -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<Integer, Satellite> sats = new HashMap<>();
|
||||
public final HashMap<Integer, SatelliteBase> 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<Integer, Satellite> struct : sats.entrySet()) {
|
||||
for(Entry<Integer, SatelliteBase> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Class<? extends Satellite>> satellites = new ArrayList<>();
|
||||
public static final HashMap<Item, Class<? extends Satellite>> 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<InterfaceActions> ifaceAcs = new ArrayList<>();
|
||||
public List<CoordActions> 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<? extends Satellite> 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<? extends Satellite> c = satellites.get(id);
|
||||
sat = c.newInstance();
|
||||
} catch(Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return sat;
|
||||
}
|
||||
|
||||
public static int getIDFromItem(Item item) {
|
||||
Class<? extends Satellite> 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) { }
|
||||
}
|
||||
@ -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) { }
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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<String> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<? extends Satellite> satelliteClass = itemToClass.getOrDefault(satelliteItem, null);
|
||||
Class<? extends SatelliteBase> satelliteClass = XSatelliteRegistry.itemToClass.getOrDefault(satelliteItem, null);
|
||||
return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null;
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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<Entity> cachedRadarResults = new ArrayList();
|
||||
public List<Entity> filteredRadarResults = new ArrayList();
|
||||
|
||||
public SatelliteRadar() { }
|
||||
|
||||
@Override public String getType() { return "LEO_RADAR"; }
|
||||
|
||||
@Override
|
||||
public void onCommandImpl(World world, String... cmd) {
|
||||
if(cmd.length <= 0) return;
|
||||
|
||||
if(cmd[0].equals(CMD_SURVEY)) {
|
||||
|
||||
cachedRadarResults.clear();
|
||||
|
||||
for(Entity entity : TileEntityMachineRadarNT.matchingEntities) {
|
||||
if(entity.dimension != world.provider.dimensionId) continue;
|
||||
|
||||
int x = (int) Math.floor(entity.posX);
|
||||
int z = (int) Math.floor(entity.posZ);
|
||||
|
||||
double dX = x - targetX;
|
||||
double dZ = z - targetZ;
|
||||
|
||||
if(dX * dX + dZ * dZ <= MAX_SCAN_RANGE * MAX_SCAN_RANGE) {
|
||||
cachedRadarResults.add(entity);
|
||||
}
|
||||
}
|
||||
|
||||
filteredRadarResults = new ArrayList(cachedRadarResults);
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_FILTER) && cmd.length == 2) {
|
||||
|
||||
filteredRadarResults.clear();
|
||||
String filter = cmd[1].toLowerCase(Locale.US);
|
||||
|
||||
for(Entity entity : cachedRadarResults) {
|
||||
if(entity.isDead) continue;
|
||||
String classname = entity.getClass().getSimpleName().toLowerCase(Locale.US);
|
||||
if(classname.contains(filter)) {
|
||||
filteredRadarResults.add(entity);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_COUNT)) {
|
||||
this.tx = "" + filteredRadarResults.size();
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETTARGETID) && cmd.length == 2) {
|
||||
Entity target = getTargetFromIndex(cmd[1]);
|
||||
if(target == null) { this.tx = ""; return; }
|
||||
this.tx = "" + target.getEntityId();
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETPOSITION) && cmd.length == 2) {
|
||||
Entity target = getTargetFromIndex(cmd[1]);
|
||||
if(target == null) { this.tx = ""; return; }
|
||||
this.tx = (int) Math.floor(target.posX) + ";" + (int) Math.floor(target.posY) + ";" + (int) Math.floor(target.posZ);
|
||||
return;
|
||||
}
|
||||
|
||||
if(cmd[0].equals(CMD_GETNAME) && cmd.length == 2) {
|
||||
Entity target = getTargetFromIndex(cmd[1]);
|
||||
if(target == null) { this.tx = ""; return; }
|
||||
this.tx = target.getClass().getSimpleName().toLowerCase(Locale.US);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public Entity getTargetFromIndex(String cmd) {
|
||||
if(filteredRadarResults.size() <= 0) return null;
|
||||
int index = IRORInteractive.parseInt(cmd, 0, filteredRadarResults.size()) - 1;
|
||||
Entity target = filteredRadarResults.get(index);
|
||||
if(target.isDead) return null;
|
||||
return target;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -4,21 +4,21 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class SatelliteResonator extends Satellite {
|
||||
public class SatelliteResonator extends SatelliteBase {
|
||||
|
||||
public SatelliteResonator() {
|
||||
this.coordAcs.add(CoordActions.HAS_Y);
|
||||
this.satIface = Interfaces.SAT_COORD;
|
||||
}
|
||||
public SatelliteResonator() { }
|
||||
|
||||
@Override public String getType() { return "XEN_RELAY"; }
|
||||
|
||||
public void onCoordAction(World world, EntityPlayer player, int x, int y, int z) {
|
||||
|
||||
if(!(player instanceof EntityPlayerMP))
|
||||
return;
|
||||
if(!(player instanceof EntityPlayerMP)) return;
|
||||
|
||||
world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F);
|
||||
player.mountEntity(null);
|
||||
((EntityPlayerMP)player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch);
|
||||
world.getChunkFromChunkCoords(x >> 4, z >> 4);
|
||||
if(y < 0) y = world.getHeightValue(x, z);
|
||||
((EntityPlayerMP) player).playerNetServerHandler.setPlayerLocation(x + 0.5D, y, z + 0.5D, player.rotationYaw, player.rotationPitch);
|
||||
world.playSoundEffect(player.posX, player.posY, player.posZ, "mob.endermen.portal", 1.0F, 1.0F);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"; }
|
||||
}
|
||||
|
||||
@ -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<Class<? extends SatelliteBase>> satellites = new ArrayList<>();
|
||||
public static final HashMap<ComparableStack, Class<? extends SatelliteBase>> 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<? extends SatelliteBase> sat, Item item) {
|
||||
if(!itemToClass.containsKey(item) && !itemToClass.containsValue(sat)) {
|
||||
satellites.add(sat);
|
||||
itemToClass.put(new ComparableStack(item), sat);
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerSatellite(Class<? extends SatelliteBase> 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;
|
||||
}
|
||||
}
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.saveddata.SatelliteSavedData;
|
||||
import com.hbm.saveddata.satellites.SatelliteBase;
|
||||
import com.hbm.tileentity.TileEntityTickingBase;
|
||||
|
||||
import api.hbm.redstoneoverradio.IRORInteractive;
|
||||
@ -8,6 +9,7 @@ import api.hbm.redstoneoverradio.IRORValueProvider;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
|
||||
public class TileEntityMachineSatLink extends TileEntityTickingBase implements IRORValueProvider, IRORInteractive {
|
||||
@ -72,6 +74,18 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I
|
||||
this.freq = buf.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.freq = nbt.getInteger("freq");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setInteger("power", freq);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
@ -110,11 +124,45 @@ public class TileEntityMachineSatLink extends TileEntityTickingBase implements I
|
||||
|
||||
@Override
|
||||
public String provideRORValue(String name) {
|
||||
|
||||
if(name.equals(PREFIX_VALUE + connected)) {
|
||||
return this.connected ? "TRUE" : "FALSE";
|
||||
}
|
||||
|
||||
if(name.equals(PREFIX_VALUE + "freq")) {
|
||||
return "" + this.freq;
|
||||
}
|
||||
|
||||
if(name.equals(PREFIX_VALUE + "rx")) {
|
||||
SatelliteSavedData dat = SatelliteSavedData.getData(worldObj);
|
||||
SatelliteBase sat = dat.getSatFromFreq(this.freq);
|
||||
if(sat != null) {
|
||||
return sat.tx;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String runRORFunction(String name, String[] params) {
|
||||
|
||||
if(name.equals(PREFIX_FUNCTION + "setfreq") && params.length == 1) {
|
||||
this.freq = IRORInteractive.parseInt(params[0], 0, 100_000);
|
||||
this.markChanged();
|
||||
}
|
||||
|
||||
if(name.equals(PREFIX_FUNCTION + "tx")) {
|
||||
SatelliteSavedData dat = SatelliteSavedData.getData(worldObj);
|
||||
SatelliteBase sat = dat.getSatFromFreq(this.freq);
|
||||
String[] cmd = String.join(IRORInteractive.PARAM_SEPARATOR, params).split(" ");
|
||||
if(sat != null) {
|
||||
sat.onCommand(worldObj, cmd);
|
||||
}
|
||||
this.markChanged();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,6 +117,12 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
||||
spawnWeight = StructureConfig.dishSpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("water_pump") {{
|
||||
canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.PLAINS) || BiomeDictionary.isBiomeOfType(biome, Type.SWAMP);
|
||||
structure = new JigsawPiece("water_pump", StructureManager.water_pump, -10);
|
||||
spawnWeight = StructureConfig.waterPumpSpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("forestchem") {{
|
||||
canSpawn = biome -> biome.heightVariation <= 0.3F && !isWaterBiome(biome);
|
||||
structure = new JigsawPiece("forest_chem", StructureManager.forest_chem, -9);
|
||||
@ -191,6 +197,12 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
||||
spawnWeight = StructureConfig.desertShack3SpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("dead_dish_small") {{
|
||||
canSpawn = biome -> BiomeDictionary.isBiomeOfType(biome, Type.SANDY);
|
||||
structure = new JigsawPiece("dead_dish_small", StructureManager.dead_dish_small, -5);
|
||||
spawnWeight = StructureConfig.deadDishSmallSpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("ruinA") {{
|
||||
canSpawn = biome -> !isWaterBiome(biome) && biome.canSpawnLightningBolt();
|
||||
structure = new JigsawPiece("NTMRuinsA", StructureManager.ntmruinsA, -1) {{conformToTerrain = true;}};
|
||||
|
||||
@ -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
|
||||
|
||||
@ -3839,20 +3839,20 @@ item.pile_rod.waste.name=Chicago Pile Nuclear Waste Rod
|
||||
item.pile_rod.waste.desc=Highly reactive end product from leaving a Chicago Pile fuel rod in the reactor for too long.
|
||||
item.pile_rod.zr.name=Chicago Pile Zirconium Rod
|
||||
item.pile_rod.zr.desc=Inert zirconium rod which is transparent to neutrons. Ideal for pushing other rods safely out of the reactor.
|
||||
item.pile_rod_boron.name=Chicago Pile Control Rod
|
||||
item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle
|
||||
item.pile_rod_detector.name=Chicago Pile Control & Detector Rod
|
||||
item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux
|
||||
item.pile_rod_lithium.name=Chicago Pile Lithium Cell
|
||||
item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core
|
||||
item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod
|
||||
item.pile_rod_plutonium.desc=§d[Neutron Source]
|
||||
item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod
|
||||
item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239.
|
||||
item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source
|
||||
item.pile_rod_source.desc=§d[Neutron Source]
|
||||
item.pile_rod_uranium.name=Chicago Pile Uranium Rod
|
||||
item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample
|
||||
item.pile_rod_boron.name=Chicago Pile Control Rod (LEGACY)
|
||||
item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle (LEGACY)
|
||||
item.pile_rod_detector.name=Chicago Pile Control & Detector Rod (LEGACY)
|
||||
item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux (LEGACY)
|
||||
item.pile_rod_lithium.name=Chicago Pile Lithium Cell (LEGACY)
|
||||
item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core (LEGACY)
|
||||
item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod (LEGACY)
|
||||
item.pile_rod_plutonium.desc=§d[Neutron Source] (LEGACY)
|
||||
item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod (LEGACY)
|
||||
item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. (LEGACY)
|
||||
item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source (LEGACY)
|
||||
item.pile_rod_source.desc=§d[Neutron Source] (LEGACY)
|
||||
item.pile_rod_uranium.name=Chicago Pile Uranium Rod (LEGACY)
|
||||
item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample (LEGACY)
|
||||
item.pill_iodine.name=Iodine Pill
|
||||
item.pill_iodine.desc=Removes negative effects
|
||||
item.pill_herbal.name=Herbal Paste
|
||||
@ -4395,26 +4395,29 @@ item.rune_isa.name=Cool Catalyst Matrix
|
||||
item.rune_jera.name=Multiplicative Catalyst Matrix
|
||||
item.rune_thurisaz.name=Additive Catalyst Matrix
|
||||
item.safety_fuse.name=Safety Fuse
|
||||
item.sat_base.name=Satellite Base
|
||||
item.sat_chip.name=Satellite ID-Chip
|
||||
item.sat_coord.name=Satellite Designator
|
||||
item.sat_designator.name=Satellite Laser Designator
|
||||
item.sat_relay.name=Satellite Radar Relay
|
||||
item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion
|
||||
item.sat_relay.name=Satellite Radar Relay (LEGACY)
|
||||
item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (LEGACY)
|
||||
item.sat_gerald.name=Gerald The Construction Android
|
||||
item.sat_head_laser.name=Death Ray
|
||||
item.sat_head_mapper.name=High-Gain Optical Camera
|
||||
item.sat_head_radar.name=Radar Dish
|
||||
item.sat_head_resonator.name=Xenium Resonator
|
||||
item.sat_head_scanner.name=M700 Survey Scanner
|
||||
item.sat_interface.name=Satellite Control Interface
|
||||
item.sat_laser.name=Orbital Death Ray
|
||||
item.sat_lunar_miner.name=Lunar Mining Ship
|
||||
item.sat_mapper.name=Surface Mapping Satellite
|
||||
item.sat_miner.name=Asteroid Mining Ship
|
||||
item.sat_radar.name=Radar Survey Satellite
|
||||
item.sat_resonator.name=Xenium Resonator Satellite
|
||||
item.sat_scanner.name=Satellite with Depth-Resource Scanning Module
|
||||
item.sat_laser.name=Orbital Death Ray (LEGACY)
|
||||
item.sat_lunar_miner.name=Lunar Mining Ship (LEGACY)
|
||||
item.sat_mapper.name=Surface Mapping Satellite (LEGACY)
|
||||
item.sat_miner.name=Asteroid Mining Ship (LEGACY)
|
||||
item.sat_radar.name=Radar Survey Satellite (LEGACY)
|
||||
item.sat_resonator.name=Xenium Resonator Satellite (LEGACY)
|
||||
item.sat_scanner.name=Satellite with Depth-Resource Scanning Module (LEGACY)
|
||||
item.satellite.death_ray.name=Orbital Death Ray
|
||||
item.satellite.miner_astro.name=Asteroid Mining Ship
|
||||
item.satellite.miner_lunar.name=Lunar Mining Ship
|
||||
item.satellite.precision_laser.name=Orbital Precision Laser
|
||||
item.satellite.radar.name=Radar Satellite
|
||||
item.satellite.relay.name=Relay Satellite
|
||||
item.satellite.scanner.name=Depth Scanning Satellite
|
||||
item.satellite.spy.name=Spy Satellite
|
||||
item.satellite.xenium_resonator.name=Xenium Resonator Satellite
|
||||
item.sawblade.name=Sawblade
|
||||
item.schnitzel_vegan.name=Vegan Schnitzel
|
||||
item.schrabidium_axe.name=Schrabidium Axe
|
||||
@ -5100,14 +5103,14 @@ tile.block_fluorite.name=Block of Fluorite
|
||||
tile.block_foam.name=Foam
|
||||
tile.block_insulator.name=Roll of Insulation
|
||||
tile.block_graphite.name=Block of Graphite
|
||||
tile.block_graphite_detector.name=Pile Neutron Detector
|
||||
tile.block_graphite_drilled.name=Drilled Graphite
|
||||
tile.block_graphite_fuel.name=Pile Fuel
|
||||
tile.block_graphite_lithium.name=Pile Lithium Fuel
|
||||
tile.block_graphite_plutonium.name=Pile Fuel (Bred)
|
||||
tile.block_graphite_rod.name=Pile Control Rod
|
||||
tile.block_graphite_source.name=Pile Neutron Source
|
||||
tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred)
|
||||
tile.block_graphite_detector.name=Pile Neutron Detector (LEGACY)
|
||||
tile.block_graphite_drilled.name=Drilled Graphite (LEGACY)
|
||||
tile.block_graphite_fuel.name=Pile Fuel (LEGACY)
|
||||
tile.block_graphite_lithium.name=Pile Lithium Fuel (LEGACY)
|
||||
tile.block_graphite_plutonium.name=Pile Fuel (Bred) (LEGACY)
|
||||
tile.block_graphite_rod.name=Pile Control Rod (LEGACY)
|
||||
tile.block_graphite_source.name=Pile Neutron Source (LEGACY)
|
||||
tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) (LEGACY)
|
||||
tile.block_lead.name=Block of Lead
|
||||
tile.block_lanthanium.name=Block of Lanthanium
|
||||
tile.block_lithium.name=Block of Lithium
|
||||
@ -5379,6 +5382,21 @@ tile.crystal_virus.name=Dark Crystal
|
||||
tile.deco_aluminium.name=Aluminium Deco Block
|
||||
tile.deco_asbestos.name=Asbestos Roof
|
||||
tile.deco_beryllium.name=Beryllium Deco Block
|
||||
tile.platemetal.base.name=Platemetal Block
|
||||
tile.platemetal.black.name=Black Platemetal Block
|
||||
tile.platemetal.white.name=White Platemetal Block
|
||||
tile.platemetal.red.name=Red Platemetal Block
|
||||
tile.platemetal.green.name=Green Platemetal Block
|
||||
tile.platemetal.light_gray.name=Light Gray Platemetal Block
|
||||
tile.platemetal.blue.name=Blue Platemetal Block
|
||||
tile.platemetal.purple.name=Purple Platemetal Block
|
||||
tile.platemetal.cyan.name=Cyan Platemetal Block
|
||||
tile.platemetal.pink.name=Pink Platemetal Block
|
||||
tile.platemetal.lime.name=Lime Platemetal Block
|
||||
tile.platemetal.yellow.name=Yellow Platemetal Block
|
||||
tile.platemetal.light_blue.name=Light Blue Platemetal Block
|
||||
tile.platemetal.magenta.name=Magenta Platemetal Block
|
||||
tile.platemetal.orange.name=Orange Platemetal Block
|
||||
tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL
|
||||
tile.deco_crt.name=Old CRT Screen
|
||||
tile.deco_emitter.name=Deco Light Emitter
|
||||
@ -5816,6 +5834,7 @@ tile.machine_rtg_orange.name=Strong RT Generator
|
||||
tile.machine_rtg_purple.name=Antimatter Annihilation Generator
|
||||
tile.machine_rtg_red.name=Fulmination Generator
|
||||
tile.machine_rtg_yellow.name=Australium Superfuel Reactor
|
||||
tile.machine_satlink.name=Satellite Ground Station
|
||||
tile.machine_satlinker.name=Satellite ID Manager
|
||||
tile.machine_sawmill.name=Stirling Sawmill
|
||||
tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t
|
||||
@ -6292,8 +6311,18 @@ tile.spotlight_fluoro.name=Fluorescent Light
|
||||
tile.spotlight_halogen.name=Halogen Floodlight
|
||||
tile.stalactite.asbestos.name=Asbestos Stalactite
|
||||
tile.stalactite.sulfur.name=Sulfurous Stalactite
|
||||
tile.stalactite.ice.name=Icy Stalactite
|
||||
tile.stalactite.snow.name=Snowy Stalactite
|
||||
tile.stalactite.glyphid1.name=Glyphid Stalactite
|
||||
tile.stalactite.glyphid2.name=Bloated Glyphid Stalactite
|
||||
tile.stalactite.glyphid3.name=Putrid Glyphid Stalactite
|
||||
tile.stalagmite.asbestos.name=Asbestos Stalagmite
|
||||
tile.stalagmite.sulfur.name=Sulfurous Stalagmite
|
||||
tile.stalagmite.ice.name=Icy Stalagmite
|
||||
tile.stalagmite.snow.name=Snowy Stalagmite
|
||||
tile.stalagmite.glyphid1.name=Glyphid Stalagmite
|
||||
tile.stalagmite.glyphid2.name=Bloated Glyphid Stalagmite
|
||||
tile.stalagmite.glyphid3.name=Putrid Glyphid Stalagmite
|
||||
tile.steel_beam.name=Steel Beam
|
||||
tile.steel_corner.name=Steel Wall Corner
|
||||
tile.steel_grate.name=Steel Grate
|
||||
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Petroleum Gas",
|
||||
"icon": ["hbm:item.fluid_icon", 1, 24],
|
||||
"trigger": [["hbm:item.fluid_icon", 1, 24]],
|
||||
"title": {
|
||||
"en_US": "Petroleum Gas"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Obtained after [[refining|Oil Refinery]] [[heated|Boiler]] crude oil. Petroleum gas is the main ingredient in [[polymer|Polymer]], [[bakelite|Bakelite]], and [[perfluoromethyl|Perfluoromethyl]] making it a key ingredient for progression in all stages of the game. It is also the primary fluid used in [[fracking solution|Fracking Solution]].<br><br>See also:<br>[[Basic Oil Processing]]<br>[[Advanced Oil Processing]]<br>[[Vacuum Oil Processing]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Asteroid Mining Ship",
|
||||
"icon": ["hbm:item.satellite", 1, 3],
|
||||
"trigger": [["hbm:item.satellite", 1, 3]],
|
||||
"title": {
|
||||
"en_US": "Asteroid Mining Ship"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The asteroid mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined in space. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Lunar Mining Ship",
|
||||
"icon": ["hbm:item.satellite", 1, 4],
|
||||
"trigger": [["hbm:item.satellite", 1, 4]],
|
||||
"title": {
|
||||
"en_US": "Lunar Mining Ship"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The lunar mining ship will, if connected to a satellite ID chip which is inserted into a cargo landing pad, land in regular intervals to deliver items mined on the moon. Do note that one mining ship can only supply a single cargo landing pad. Also keep the landing pad free of obstructions, as the drop ship may explode when impacting other blocks.<br><br>Unlike the [[asteroid mining ship|Asteroid Mining Ship]], the selection of items it can harvest is much smaller, however, the large quantities of moon turf it can produce are important for [[helium-3|Helium-3]], a powerful fuel for the [[fusion reactor|Fusion Reactor]].<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Orbital Death Ray",
|
||||
"icon": ["hbm:item.satellite", 1, 6],
|
||||
"trigger": [["hbm:item.satellite", 1, 6]],
|
||||
"title": {
|
||||
"en_US": "Orbital Death Ray"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The orbital death ray is a powerful nuclear-powered orbital weapon firing a laser that deals as much damage as a high-yield mini nuke, but without the radiation. Despite the powerful energy source, the ray takes five minutes to fully charge. Unlike the [[precision laser|Orbital Precision Laser]], it lacks the entity targeting option that would let it shoot down missiles or hit fast-moving targets.<br><br>* '§efire§r' will fire the laser at the current target position, assuming the ray has finished charging.<br>* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the death ray is ready to fire.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Orbital Precision Laser",
|
||||
"icon": ["hbm:item.satellite", 1, 5],
|
||||
"trigger": [["hbm:item.satellite", 1, 5]],
|
||||
"title": {
|
||||
"en_US": "Orbital Precision Laser"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The orbital precision laser is a low-power weapon that harvests sunlight to charge up a small laser beam. The beam only takes five seconds to charge up, and deals marginally more block damage than TNT. The direct hit damage for struck entities is however much higher. When combined with the targeting data of a [[radar satellite|Radar Satellite]], it can potentially also shoot down missiles.<br><br>* '§efire§r' will fire the laser at the current target position, assuming the laser has finished charging. If the satellite has been supplied with entity target data, it will use the position of that entitiy instead, assuming it its within 1,000 blocks of the target position. After one shot, the entity targeting data is used up and the satellite's target position will be used again.<br>* '§ecanfire§r' will write either 'TRUE' or 'FALSE' to RX depending on whether the cooldown has elapsed and the laser is ready to fire.<br>* '§esetentitytarget §eid§r' supplies an entity ID for precise targeting, which is used up after one shot. The ID can be obtained from a radar satellite.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/radarsat.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/radarsat.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Radar Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 2],
|
||||
"trigger": [["hbm:item.satellite", 1, 2]],
|
||||
"title": {
|
||||
"en_US": "Radar Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The radar satellite can detect all radar-detectable entities like players and missiles in a 1,000 block radius around its target position. It can compile, filter, and provide a list of detected objects, along with their type and exact position.<br><br>* '§esurvey§r' scans the area and saves the results to a base list and a filtered list. These two lists are now the same, and stored within the satellite.<br>* '§efilter §ename§r' will overwrite the filtered list with a new list, containing only entries from the original list that match that name filter. Since the original list is retained, the filter operation can be run multiple times for multiple types without needing a survey operation.<br>* '§ecount§r' writes the amount of entries on the filterd list to RX.<br>* '§egettargetid §eindex§r' retrieves the unique entity ID from that entry on the list. This ID can be used for precise entity targeting by other satellites.<br>* '§egetposition §eindex§r' retrieves the exact x/y/z position of the specified entry. The coordinates are separated by semicolons.<br>* '§egetname §eindex§r' retrieves the class name of that entry, this name is what's used for filtering.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Satellite",
|
||||
"icon": ["hbm:item.satellite"],
|
||||
"trigger": [],
|
||||
"title": {
|
||||
"en_US": "Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "Satellites can be launched into earth orbit using a [[Soyuz]] rocket. Satellites communicate with items and blocks on earth using frequencies, so in order to actually use one, it's necessary to set a random frequency in the satellite ID manager, and then copying that ID to another item, for example a satellite chip.<br><br>Some satellites can perform minor tasks when linked with certain items, like the [[depth scanning satellite|Depth Scanning Satellite]] enabling the neutrino lens, or the [[xenium resonator satellite|Xenium Resonator Satellite]] connected to a satellite laser designator allowing for short range line of sight teleportation. Satellites however are the most powerful when paired with [[Redstone over Radio]] by linking them to a [[ground station|Satellite Ground Station]].<br><br>By using a [[RoR reader|Redstone-over-Radio Reader]], ground stations can receive the RX value, which is received from the connected satellite. Each satellite can only provide one RX value at a time, and the value persists until it changes. The contents of RX depend on what function the satellite has performed prior.<br><br>By using a ground station's TX command, commands can be relayed to the connected satellite. Most commands vary between satellite types, however all satellites have a ground target, i.e. the spot on the surface they are aiming at.<br><br>The common target commands are as follows:<br>* '§esettarget §ex §ez§r' (Example RoR: '§6tx!settarget §6200 §6300§r')<br>* '§egettarget§r' (Example RoR: '§6tx!gettarget§r'), writes the current target X and Z separated by semicolon to the ground station's RX<br>* '§egettargetx§r'<br>* '§egettargetz§r'<br><br>See also:<br>* [[Spy Satellite]]<br>* [[Depth Scanning Satellite]]<br>* [[Radar Satellite]]<br>* [[Asteroid Mining Ship]]<br>* [[Lunar Mining Ship]]<br>* [[Orbital Precision Laser]]<br>* [[Orbital Death Ray]]<br>* [[Xenium Resonator Satellite]]<br>* [[Relay Satellite]]"
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/satlink.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/satlink.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Satellite Ground Station",
|
||||
"icon": ["hbm:tile.machine_satlink"],
|
||||
"trigger": [["hbm:tile.machine_satlink"]],
|
||||
"title": {
|
||||
"en_US": "Satellite Ground Station"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The satellite ground station is an advanced [[Redstone over Radio]] component that allows indirect connection of traditional RoR components and [[satellites|Satellite]]. It doesn't send or receive RoR signals directly, instead, it needs an external [[receiver|Redstone-over-Radio Controller]] or [[transmitter|Redstone-over-Radio Reader]] to interface with RoR.<br><br>The ground station can only connect to one satellite at a time. The frequency can be set either by using a configured satellite ID chip on the ground station, or via RoR command.<br><br>The two most important RoR functions the ground station has are RX and TX.<br><br>RX is a readable value that is relayed from the satellite. The contents of that value depend on the satellite, and is usually set in response to a command. For example, on the [[orbital precision laser|Orbital Precision Laser]], the function 'canfire' will set the RX value to either 'TRUE' or 'FALSE' depending on whether the laser is ready to fire.<br><br>TX is a function that allows commands to be relayed from the ground station to the satellite to control it or to request data. For example, the RoR command 'tx!settarget 200 300' will relay the command 'settarget 200 300' to the connected satellite. Do note that satellite commands do not use parameter separators like RoR commands do, since the satellite command is technically just one big RoR parameter.<br><br>In conjunction with the [[AUTOCAL]], the ground station becomes incredibly powerful, as it allows for automated targeting of satellites, data processing and more. For example, a [[radar satellite|Radar Satellite]] could survey the airspace for airborne missiles, relay that data to the AUTOCAL which then sends a signal to a precision laser which intercepts the missile."
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/scansat.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/scansat.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Depth Scanning Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 1],
|
||||
"trigger": [["hbm:item.satellite", 1, 1]],
|
||||
"title": {
|
||||
"en_US": "Depth Scanning Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The depth scanning satellite is required for the neutrino lens to work. It does not yet have any special interactions with the ground station.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/spysat.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/spysat.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Spy Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 0],
|
||||
"trigger": [["hbm:item.satellite", 1, 0]],
|
||||
"title": {
|
||||
"en_US": "Spy Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The spy satellite allows remote viewing of earth's surface. Due to RoR pixel displays not existing as of now, surface mapping functionality does not yet work. However, they can be used in detecting loaded chunks and spotting players in a small radius.<br><br>* '§etargetloaded§r' writes 'TRUE' or 'FALSE' to RX depending on if the chunk that the satellite is pointed at is loaded or not.<br>* '§espotplayers§r' detects surface players in a 250 block radius and writes all names separated by semicolon to RX.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
11
src/main/resources/assets/hbm/manual/satellite/xenrelay.json
Normal file
11
src/main/resources/assets/hbm/manual/satellite/xenrelay.json
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "Xenium Resonator Satellite",
|
||||
"icon": ["hbm:item.satellite", 1, 7],
|
||||
"trigger": [["hbm:item.satellite", 1, 7]],
|
||||
"title": {
|
||||
"en_US": "Xenium Resonator Satellite"
|
||||
},
|
||||
"content": {
|
||||
"en_US": "The xenium resonator allows teleportation within the same dimension. It can be controlled either with a satellite designator or the satellite laser designator. When using the satellite designator, the Y value can be omitted, which will default it to surface level.<br><br>See also:<br>* [[Satellite]]<br>* [[Satellite Ground Station]]"
|
||||
}
|
||||
}
|
||||
@ -152,6 +152,14 @@ v -0.750000 1.750000 -0.750000
|
||||
v -0.750000 1.750000 0.750000
|
||||
v 0.750000 1.750000 0.750000
|
||||
v 0.750000 1.750000 -0.750000
|
||||
v -0.875000 0.125000 0.875000
|
||||
v 0.875000 0.125000 0.875000
|
||||
v -0.875000 0.125000 -0.875000
|
||||
v 0.875000 0.125000 -0.875000
|
||||
v -0.875000 1.875000 -0.875000
|
||||
v -0.875000 1.875000 0.875000
|
||||
v 0.875000 1.875000 0.875000
|
||||
v 0.875000 1.875000 -0.875000
|
||||
vt 0.269231 0.000000
|
||||
vt 0.000000 0.333333
|
||||
vt 0.000000 0.000000
|
||||
@ -180,10 +188,26 @@ vt 1.000000 0.285714
|
||||
vt 0.769231 0.571429
|
||||
vt 1.000000 0.285714
|
||||
vt 0.769231 0.571429
|
||||
vt 0.000000 0.333333
|
||||
vt 0.269231 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.269231 1.000000
|
||||
vt 0.000000 0.666667
|
||||
vt 0.000000 1.000000
|
||||
vt -0.000000 0.666667
|
||||
vt 0.269231 0.333333
|
||||
vt -0.000000 0.333333
|
||||
vt 0.269231 0.666667
|
||||
vt 0.538462 0.333333
|
||||
vt 0.269231 0.333333
|
||||
vt 0.269231 0.666667
|
||||
vt 0.538462 0.333333
|
||||
vt 0.538462 0.666667
|
||||
vt 0.538462 0.666667
|
||||
vt 1.000000 0.571429
|
||||
vt 1.000000 0.571429
|
||||
vt 0.538462 0.666667
|
||||
vt 0.538462 0.666667
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
@ -203,18 +227,30 @@ f 44/77/11 47/74/11 42/72/11
|
||||
f 41/78/8 45/79/8 43/80/8
|
||||
f 43/81/9 48/82/9 44/77/9
|
||||
f 42/83/10 46/84/10 41/78/10
|
||||
f 50/85/7 51/86/7 49/87/7
|
||||
f 53/88/6 55/89/6 54/90/6
|
||||
f 53/91/11 49/92/11 51/93/11
|
||||
f 56/94/10 51/95/10 52/96/10
|
||||
f 54/97/9 50/98/9 49/92/9
|
||||
f 55/89/8 52/96/8 50/85/8
|
||||
f 35/57/6 36/68/6 34/58/6
|
||||
f 39/60/7 40/67/7 37/61/7
|
||||
f 33/63/8 38/70/8 37/64/8
|
||||
f 35/66/9 37/85/9 40/67/9
|
||||
f 34/69/10 39/86/10 38/70/10
|
||||
f 35/66/9 37/99/9 40/67/9
|
||||
f 34/69/10 39/100/10 38/70/10
|
||||
f 36/68/11 40/67/11 39/60/11
|
||||
f 43/71/6 44/77/6 42/72/6
|
||||
f 47/74/7 48/82/7 45/75/7
|
||||
f 44/77/11 48/82/11 47/74/11
|
||||
f 41/78/8 46/84/8 45/79/8
|
||||
f 43/81/9 45/87/9 48/82/9
|
||||
f 42/83/10 47/88/10 46/84/10
|
||||
f 43/81/9 45/101/9 48/82/9
|
||||
f 42/83/10 47/102/10 46/84/10
|
||||
f 50/85/7 52/96/7 51/86/7
|
||||
f 53/88/6 56/94/6 55/89/6
|
||||
f 53/91/11 54/97/11 49/92/11
|
||||
f 56/94/10 53/103/10 51/95/10
|
||||
f 54/97/9 55/104/9 50/98/9
|
||||
f 55/89/8 56/94/8 52/96/8
|
||||
o Battery
|
||||
v 0.687500 1.875000 -0.875000
|
||||
v 0.875000 1.875000 -0.687500
|
||||
@ -483,158 +519,158 @@ vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s off
|
||||
f 56/89/12 62/90/12 70/91/12
|
||||
f 83/92/13 74/93/13 51/94/13
|
||||
f 68/95/14 51/96/14 74/97/14
|
||||
f 68/98/15 64/99/15 58/100/15
|
||||
f 72/101/15 63/102/15 74/103/15
|
||||
f 58/104/16 60/105/16 65/106/16
|
||||
f 58/104/13 56/89/13 55/107/13
|
||||
f 60/108/14 66/109/14 65/110/14
|
||||
f 70/111/17 68/112/17 67/113/17
|
||||
f 62/114/18 64/99/18 63/115/18
|
||||
f 64/99/19 56/89/19 57/116/19
|
||||
f 75/117/18 73/118/18 78/119/18
|
||||
f 77/120/20 71/121/20 76/122/20
|
||||
f 63/123/13 54/124/13 62/125/13
|
||||
f 75/117/15 84/126/15 92/127/15
|
||||
f 62/128/12 50/129/12 77/130/12
|
||||
f 90/131/21 86/132/21 81/133/21
|
||||
f 78/134/17 76/122/17 75/135/17
|
||||
f 49/136/18 72/101/18 71/121/18
|
||||
f 72/101/19 54/124/19 53/137/19
|
||||
f 88/138/14 52/139/14 92/140/14
|
||||
f 59/141/13 80/142/13 66/143/13
|
||||
f 80/142/16 82/144/16 85/145/16
|
||||
f 83/146/12 78/119/12 95/147/12
|
||||
f 82/148/14 86/132/14 85/149/14
|
||||
f 90/131/17 88/150/17 87/151/17
|
||||
f 67/152/18 83/153/18 70/154/18
|
||||
f 85/155/15 87/156/15 84/157/15
|
||||
f 96/158/21 92/140/21 52/139/21
|
||||
f 95/159/20 91/160/20 94/161/20
|
||||
f 89/162/12 81/163/12 79/164/12
|
||||
f 96/158/17 94/161/17 93/165/17
|
||||
f 108/166/20 104/167/20 105/168/20
|
||||
f 100/169/12 104/167/12 102/170/12
|
||||
f 108/171/15 106/172/15 110/173/15
|
||||
f 112/174/21 102/170/21 107/175/21
|
||||
f 106/172/19 100/169/19 109/176/19
|
||||
f 106/172/18 104/177/18 103/178/18
|
||||
f 102/179/17 108/166/17 107/180/17
|
||||
f 112/174/14 98/181/14 97/182/14
|
||||
f 100/183/13 110/184/13 109/185/13
|
||||
f 110/184/16 98/186/16 111/187/16
|
||||
f 124/188/20 120/189/20 121/190/20
|
||||
f 116/191/12 120/189/12 118/192/12
|
||||
f 124/193/15 122/194/15 126/195/15
|
||||
f 128/196/21 118/192/21 123/197/21
|
||||
f 122/194/19 116/191/19 125/198/19
|
||||
f 122/194/18 120/199/18 119/200/18
|
||||
f 118/201/17 124/188/17 123/202/17
|
||||
f 128/196/14 114/203/14 113/204/14
|
||||
f 116/205/13 126/206/13 125/207/13
|
||||
f 126/206/16 114/208/16 127/209/16
|
||||
f 70/91/12 59/210/12 60/211/12
|
||||
f 60/211/12 55/212/12 56/89/12
|
||||
f 56/89/12 61/213/12 62/90/12
|
||||
f 62/90/12 69/214/12 70/91/12
|
||||
f 70/91/12 60/211/12 56/89/12
|
||||
f 83/92/13 84/215/13 74/93/13
|
||||
f 68/95/14 69/216/14 51/96/14
|
||||
f 58/100/15 65/217/15 66/218/15
|
||||
f 66/218/15 67/219/15 68/98/15
|
||||
f 68/98/15 63/220/15 64/99/15
|
||||
f 64/99/15 57/116/15 58/100/15
|
||||
f 58/100/15 66/218/15 68/98/15
|
||||
f 74/103/15 75/221/15 76/222/15
|
||||
f 76/222/15 71/223/15 72/101/15
|
||||
f 72/101/15 53/137/15 63/102/15
|
||||
f 63/102/15 68/224/15 74/103/15
|
||||
f 74/103/15 76/222/15 72/101/15
|
||||
f 58/104/16 55/107/16 60/105/16
|
||||
f 58/104/13 57/116/13 56/89/13
|
||||
f 60/108/14 59/225/14 66/109/14
|
||||
f 70/111/17 69/226/17 68/112/17
|
||||
f 62/114/18 61/213/18 64/99/18
|
||||
f 64/99/19 61/213/19 56/89/19
|
||||
f 75/117/18 91/160/18 73/118/18
|
||||
f 77/120/20 49/136/20 71/121/20
|
||||
f 63/123/13 53/137/13 54/124/13
|
||||
f 92/127/15 93/227/15 94/228/15
|
||||
f 94/228/15 91/229/15 75/117/15
|
||||
f 75/117/15 74/93/15 84/126/15
|
||||
f 84/126/15 88/230/15 92/127/15
|
||||
f 92/127/15 94/228/15 75/117/15
|
||||
f 77/130/12 78/231/12 51/232/12
|
||||
f 51/232/12 69/233/12 62/128/12
|
||||
f 62/128/12 54/124/12 50/129/12
|
||||
f 50/129/12 49/234/12 77/130/12
|
||||
f 77/130/12 51/232/12 62/128/12
|
||||
f 90/131/21 87/151/21 86/132/21
|
||||
f 78/134/17 77/120/17 76/122/17
|
||||
f 49/136/18 50/129/18 72/101/18
|
||||
f 72/101/19 50/129/19 54/124/19
|
||||
f 88/138/14 89/235/14 52/139/14
|
||||
f 59/141/13 79/236/13 80/142/13
|
||||
f 80/142/16 79/236/16 82/144/16
|
||||
f 95/147/12 96/237/12 52/238/12
|
||||
f 52/238/12 89/239/12 83/146/12
|
||||
f 83/146/12 51/94/12 78/119/12
|
||||
f 78/119/12 73/240/12 95/147/12
|
||||
f 95/147/12 52/238/12 83/146/12
|
||||
f 82/148/14 81/133/14 86/132/14
|
||||
f 90/131/17 89/241/17 88/150/17
|
||||
f 67/152/18 84/242/18 83/153/18
|
||||
f 84/157/15 67/152/15 66/143/15
|
||||
f 66/143/15 80/243/15 85/155/15
|
||||
f 85/155/15 86/244/15 87/156/15
|
||||
f 87/156/15 88/245/15 84/157/15
|
||||
f 84/157/15 66/143/15 85/155/15
|
||||
f 96/158/21 93/165/21 92/140/21
|
||||
f 95/159/20 73/118/20 91/160/20
|
||||
f 79/164/12 59/141/12 70/154/12
|
||||
f 70/154/12 83/246/12 89/162/12
|
||||
f 89/162/12 90/247/12 81/163/12
|
||||
f 81/163/12 82/248/12 79/164/12
|
||||
f 79/164/12 70/154/12 89/162/12
|
||||
f 96/158/17 95/159/17 94/161/17
|
||||
f 108/166/20 101/249/20 104/167/20
|
||||
f 102/170/12 97/182/12 98/186/12
|
||||
f 98/186/12 99/250/12 100/169/12
|
||||
f 100/169/12 103/178/12 104/167/12
|
||||
f 104/167/12 101/249/12 102/170/12
|
||||
f 102/170/12 98/186/12 100/169/12
|
||||
f 110/173/15 111/251/15 112/252/15
|
||||
f 112/252/15 107/253/15 108/171/15
|
||||
f 108/171/15 105/254/15 106/172/15
|
||||
f 106/172/15 109/176/15 110/173/15
|
||||
f 110/173/15 112/252/15 108/171/15
|
||||
f 112/174/21 97/182/21 102/170/21
|
||||
f 106/172/19 103/178/19 100/169/19
|
||||
f 106/172/18 105/255/18 104/177/18
|
||||
f 102/179/17 101/249/17 108/166/17
|
||||
f 112/174/14 111/256/14 98/181/14
|
||||
f 100/183/13 99/250/13 110/184/13
|
||||
f 110/184/16 99/250/16 98/186/16
|
||||
f 124/188/20 117/257/20 120/189/20
|
||||
f 118/192/12 113/204/12 114/208/12
|
||||
f 114/208/12 115/258/12 116/191/12
|
||||
f 116/191/12 119/200/12 120/189/12
|
||||
f 120/189/12 117/257/12 118/192/12
|
||||
f 118/192/12 114/208/12 116/191/12
|
||||
f 126/195/15 127/259/15 128/260/15
|
||||
f 128/260/15 123/261/15 124/193/15
|
||||
f 124/193/15 121/262/15 122/194/15
|
||||
f 122/194/15 125/198/15 126/195/15
|
||||
f 126/195/15 128/260/15 124/193/15
|
||||
f 128/196/21 113/204/21 118/192/21
|
||||
f 122/194/19 119/200/19 116/191/19
|
||||
f 122/194/18 121/263/18 120/199/18
|
||||
f 118/201/17 117/257/17 124/188/17
|
||||
f 128/196/14 127/264/14 114/203/14
|
||||
f 116/205/13 115/258/13 126/206/13
|
||||
f 126/206/16 115/258/16 114/208/16
|
||||
f 64/105/12 70/106/12 78/107/12
|
||||
f 91/108/13 82/109/13 59/110/13
|
||||
f 76/111/14 59/112/14 82/113/14
|
||||
f 76/114/15 72/115/15 66/116/15
|
||||
f 80/117/15 71/118/15 82/119/15
|
||||
f 66/120/16 68/121/16 73/122/16
|
||||
f 66/120/13 64/105/13 63/123/13
|
||||
f 68/124/14 74/125/14 73/126/14
|
||||
f 78/127/17 76/128/17 75/129/17
|
||||
f 70/130/18 72/115/18 71/131/18
|
||||
f 72/115/19 64/105/19 65/132/19
|
||||
f 83/133/18 81/134/18 86/135/18
|
||||
f 85/136/20 79/137/20 84/138/20
|
||||
f 71/139/13 62/140/13 70/141/13
|
||||
f 83/133/15 92/142/15 100/143/15
|
||||
f 70/144/12 58/145/12 85/146/12
|
||||
f 98/147/21 94/148/21 89/149/21
|
||||
f 86/150/17 84/138/17 83/151/17
|
||||
f 57/152/18 80/117/18 79/137/18
|
||||
f 80/117/19 62/140/19 61/153/19
|
||||
f 96/154/14 60/155/14 100/156/14
|
||||
f 67/157/13 88/158/13 74/159/13
|
||||
f 88/158/16 90/160/16 93/161/16
|
||||
f 91/162/12 86/135/12 103/163/12
|
||||
f 90/164/14 94/148/14 93/165/14
|
||||
f 98/147/17 96/166/17 95/167/17
|
||||
f 75/168/18 91/169/18 78/170/18
|
||||
f 93/171/15 95/172/15 92/173/15
|
||||
f 104/174/21 100/156/21 60/155/21
|
||||
f 103/175/20 99/176/20 102/177/20
|
||||
f 97/178/12 89/179/12 87/180/12
|
||||
f 104/174/17 102/177/17 101/181/17
|
||||
f 116/182/20 112/183/20 113/184/20
|
||||
f 108/185/12 112/183/12 110/186/12
|
||||
f 116/187/15 114/188/15 118/189/15
|
||||
f 120/190/21 110/186/21 115/191/21
|
||||
f 114/188/19 108/185/19 117/192/19
|
||||
f 114/188/18 112/193/18 111/194/18
|
||||
f 110/195/17 116/182/17 115/196/17
|
||||
f 120/190/14 106/197/14 105/198/14
|
||||
f 108/199/13 118/200/13 117/201/13
|
||||
f 118/200/16 106/202/16 119/203/16
|
||||
f 132/204/20 128/205/20 129/206/20
|
||||
f 124/207/12 128/205/12 126/208/12
|
||||
f 132/209/15 130/210/15 134/211/15
|
||||
f 136/212/21 126/208/21 131/213/21
|
||||
f 130/210/19 124/207/19 133/214/19
|
||||
f 130/210/18 128/215/18 127/216/18
|
||||
f 126/217/17 132/204/17 131/218/17
|
||||
f 136/212/14 122/219/14 121/220/14
|
||||
f 124/221/13 134/222/13 133/223/13
|
||||
f 134/222/16 122/224/16 135/225/16
|
||||
f 78/107/12 67/226/12 68/227/12
|
||||
f 68/227/12 63/228/12 64/105/12
|
||||
f 64/105/12 69/229/12 70/106/12
|
||||
f 70/106/12 77/230/12 78/107/12
|
||||
f 78/107/12 68/227/12 64/105/12
|
||||
f 91/108/13 92/231/13 82/109/13
|
||||
f 76/111/14 77/232/14 59/112/14
|
||||
f 66/116/15 73/233/15 74/234/15
|
||||
f 74/234/15 75/235/15 76/114/15
|
||||
f 76/114/15 71/236/15 72/115/15
|
||||
f 72/115/15 65/132/15 66/116/15
|
||||
f 66/116/15 74/234/15 76/114/15
|
||||
f 82/119/15 83/237/15 84/238/15
|
||||
f 84/238/15 79/239/15 80/117/15
|
||||
f 80/117/15 61/153/15 71/118/15
|
||||
f 71/118/15 76/240/15 82/119/15
|
||||
f 82/119/15 84/238/15 80/117/15
|
||||
f 66/120/16 63/123/16 68/121/16
|
||||
f 66/120/13 65/132/13 64/105/13
|
||||
f 68/124/14 67/241/14 74/125/14
|
||||
f 78/127/17 77/242/17 76/128/17
|
||||
f 70/130/18 69/229/18 72/115/18
|
||||
f 72/115/19 69/229/19 64/105/19
|
||||
f 83/133/18 99/176/18 81/134/18
|
||||
f 85/136/20 57/152/20 79/137/20
|
||||
f 71/139/13 61/153/13 62/140/13
|
||||
f 100/143/15 101/243/15 102/244/15
|
||||
f 102/244/15 99/245/15 83/133/15
|
||||
f 83/133/15 82/109/15 92/142/15
|
||||
f 92/142/15 96/246/15 100/143/15
|
||||
f 100/143/15 102/244/15 83/133/15
|
||||
f 85/146/12 86/247/12 59/248/12
|
||||
f 59/248/12 77/249/12 70/144/12
|
||||
f 70/144/12 62/140/12 58/145/12
|
||||
f 58/145/12 57/250/12 85/146/12
|
||||
f 85/146/12 59/248/12 70/144/12
|
||||
f 98/147/21 95/167/21 94/148/21
|
||||
f 86/150/17 85/136/17 84/138/17
|
||||
f 57/152/18 58/145/18 80/117/18
|
||||
f 80/117/19 58/145/19 62/140/19
|
||||
f 96/154/14 97/251/14 60/155/14
|
||||
f 67/157/13 87/252/13 88/158/13
|
||||
f 88/158/16 87/252/16 90/160/16
|
||||
f 103/163/12 104/253/12 60/254/12
|
||||
f 60/254/12 97/255/12 91/162/12
|
||||
f 91/162/12 59/110/12 86/135/12
|
||||
f 86/135/12 81/256/12 103/163/12
|
||||
f 103/163/12 60/254/12 91/162/12
|
||||
f 90/164/14 89/149/14 94/148/14
|
||||
f 98/147/17 97/257/17 96/166/17
|
||||
f 75/168/18 92/258/18 91/169/18
|
||||
f 92/173/15 75/168/15 74/159/15
|
||||
f 74/159/15 88/259/15 93/171/15
|
||||
f 93/171/15 94/260/15 95/172/15
|
||||
f 95/172/15 96/261/15 92/173/15
|
||||
f 92/173/15 74/159/15 93/171/15
|
||||
f 104/174/21 101/181/21 100/156/21
|
||||
f 103/175/20 81/134/20 99/176/20
|
||||
f 87/180/12 67/157/12 78/170/12
|
||||
f 78/170/12 91/262/12 97/178/12
|
||||
f 97/178/12 98/263/12 89/179/12
|
||||
f 89/179/12 90/264/12 87/180/12
|
||||
f 87/180/12 78/170/12 97/178/12
|
||||
f 104/174/17 103/175/17 102/177/17
|
||||
f 116/182/20 109/265/20 112/183/20
|
||||
f 110/186/12 105/198/12 106/202/12
|
||||
f 106/202/12 107/266/12 108/185/12
|
||||
f 108/185/12 111/194/12 112/183/12
|
||||
f 112/183/12 109/265/12 110/186/12
|
||||
f 110/186/12 106/202/12 108/185/12
|
||||
f 118/189/15 119/267/15 120/268/15
|
||||
f 120/268/15 115/269/15 116/187/15
|
||||
f 116/187/15 113/270/15 114/188/15
|
||||
f 114/188/15 117/192/15 118/189/15
|
||||
f 118/189/15 120/268/15 116/187/15
|
||||
f 120/190/21 105/198/21 110/186/21
|
||||
f 114/188/19 111/194/19 108/185/19
|
||||
f 114/188/18 113/271/18 112/193/18
|
||||
f 110/195/17 109/265/17 116/182/17
|
||||
f 120/190/14 119/272/14 106/197/14
|
||||
f 108/199/13 107/266/13 118/200/13
|
||||
f 118/200/16 107/266/16 106/202/16
|
||||
f 132/204/20 125/273/20 128/205/20
|
||||
f 126/208/12 121/220/12 122/224/12
|
||||
f 122/224/12 123/274/12 124/207/12
|
||||
f 124/207/12 127/216/12 128/205/12
|
||||
f 128/205/12 125/273/12 126/208/12
|
||||
f 126/208/12 122/224/12 124/207/12
|
||||
f 134/211/15 135/275/15 136/276/15
|
||||
f 136/276/15 131/277/15 132/209/15
|
||||
f 132/209/15 129/278/15 130/210/15
|
||||
f 130/210/15 133/214/15 134/211/15
|
||||
f 134/211/15 136/276/15 132/209/15
|
||||
f 136/212/21 121/220/21 126/208/21
|
||||
f 130/210/19 127/216/19 124/207/19
|
||||
f 130/210/18 129/279/18 128/215/18
|
||||
f 126/217/17 125/273/17 132/204/17
|
||||
f 136/212/14 135/280/14 122/219/14
|
||||
f 124/221/13 123/274/13 134/222/13
|
||||
f 134/222/16 123/274/16 122/224/16
|
||||
o Socket
|
||||
v -1.000000 0.000000 1.000000
|
||||
v 1.000000 0.000000 1.000000
|
||||
@ -1037,199 +1073,199 @@ vn -0.7099 0.7043 0.0000
|
||||
vn 0.7099 -0.7043 0.0000
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
s off
|
||||
f 131/265/22 130/266/22 129/267/22
|
||||
f 136/268/23 151/269/23 134/270/23
|
||||
f 131/265/24 140/271/24 132/272/24
|
||||
f 130/266/25 138/273/25 129/267/25
|
||||
f 132/272/26 139/274/26 130/266/26
|
||||
f 129/267/23 137/275/23 131/265/23
|
||||
f 135/276/27 138/277/27 133/278/27
|
||||
f 133/278/27 139/274/27 134/279/27
|
||||
f 134/279/27 140/280/27 136/281/27
|
||||
f 136/281/27 137/282/27 135/276/27
|
||||
f 142/283/26 143/284/26 141/285/26
|
||||
f 145/286/23 147/287/23 146/288/23
|
||||
f 151/269/27 149/289/27 150/290/27
|
||||
f 143/284/27 146/288/27 141/285/27
|
||||
f 144/291/24 145/286/24 143/284/24
|
||||
f 141/285/25 147/292/25 142/293/25
|
||||
f 133/294/26 149/289/26 135/295/26
|
||||
f 135/296/25 152/297/25 136/298/25
|
||||
f 134/299/24 150/290/24 133/300/24
|
||||
f 154/301/26 155/302/26 153/303/26
|
||||
f 157/304/23 159/305/23 158/306/23
|
||||
f 155/302/27 158/306/27 153/303/27
|
||||
f 156/307/24 157/304/24 155/302/24
|
||||
f 153/303/25 159/308/25 154/309/25
|
||||
f 162/310/23 163/311/23 161/312/23
|
||||
f 165/313/26 167/314/26 166/315/26
|
||||
f 163/311/27 166/315/27 161/312/27
|
||||
f 164/316/25 165/313/25 163/311/25
|
||||
f 161/312/24 167/317/24 162/318/24
|
||||
f 170/319/23 171/320/23 169/321/23
|
||||
f 173/322/26 175/323/26 174/324/26
|
||||
f 171/320/27 174/324/27 169/321/27
|
||||
f 172/325/25 173/322/25 171/320/25
|
||||
f 169/321/24 175/326/24 170/327/24
|
||||
f 178/328/24 179/329/24 177/330/24
|
||||
f 181/331/25 183/332/25 182/333/25
|
||||
f 179/329/27 182/333/27 177/330/27
|
||||
f 180/334/23 181/331/23 179/329/23
|
||||
f 177/330/26 183/335/26 178/336/26
|
||||
f 186/337/24 187/338/24 185/339/24
|
||||
f 189/340/25 191/341/25 190/342/25
|
||||
f 187/338/27 190/342/27 185/339/27
|
||||
f 188/343/23 189/340/23 187/338/23
|
||||
f 185/339/26 191/344/26 186/345/26
|
||||
f 194/346/25 195/347/25 193/348/25
|
||||
f 197/349/24 199/350/24 198/351/24
|
||||
f 195/347/27 198/351/27 193/348/27
|
||||
f 196/352/26 197/349/26 195/347/26
|
||||
f 193/348/23 199/353/23 194/354/23
|
||||
f 202/355/25 203/356/25 201/357/25
|
||||
f 205/358/24 207/359/24 206/360/24
|
||||
f 203/356/27 206/360/27 201/357/27
|
||||
f 204/361/26 205/358/26 203/356/26
|
||||
f 201/357/23 207/362/23 202/363/23
|
||||
f 210/364/24 225/365/24 209/366/24
|
||||
f 224/367/27 222/368/27 223/369/27
|
||||
f 220/370/27 218/371/27 219/372/27
|
||||
f 216/373/24 221/374/24 217/375/24
|
||||
f 215/376/25 219/377/25 214/378/25
|
||||
f 217/375/26 220/370/26 215/376/26
|
||||
f 214/379/23 218/380/23 216/373/23
|
||||
f 211/381/25 223/382/25 212/383/25
|
||||
f 209/366/26 224/367/26 211/381/26
|
||||
f 212/384/23 222/385/23 210/364/23
|
||||
f 227/386/24 241/387/24 226/388/24
|
||||
f 240/389/27 238/390/27 239/391/27
|
||||
f 236/392/27 234/393/27 235/394/27
|
||||
f 232/395/24 237/396/24 233/397/24
|
||||
f 231/398/25 235/399/25 230/400/25
|
||||
f 233/397/26 236/392/26 231/398/26
|
||||
f 230/401/23 234/402/23 232/395/23
|
||||
f 228/403/25 239/404/25 229/405/25
|
||||
f 226/388/26 240/389/26 228/403/26
|
||||
f 229/406/23 238/407/23 227/386/23
|
||||
f 242/408/27 243/409/27 213/410/27
|
||||
f 242/408/28 246/411/28 244/412/28
|
||||
f 245/413/26 248/414/26 246/411/26
|
||||
f 243/409/29 249/415/29 213/410/29
|
||||
f 250/416/23 251/417/23 249/415/23
|
||||
f 254/418/27 255/419/27 253/420/27
|
||||
f 254/418/28 258/421/28 256/422/28
|
||||
f 257/423/26 260/424/26 258/421/26
|
||||
f 255/419/29 261/425/29 253/420/29
|
||||
f 262/426/23 263/427/23 261/425/23
|
||||
f 217/375/22 214/428/22 216/429/22
|
||||
f 233/397/22 230/430/22 232/431/22
|
||||
f 228/403/22 227/432/22 226/388/22
|
||||
f 211/381/22 210/433/22 209/366/22
|
||||
f 266/434/26 267/435/26 268/436/26
|
||||
f 268/436/30 274/437/30 276/438/30
|
||||
f 269/439/23 272/440/23 271/441/23
|
||||
f 271/441/31 275/442/31 273/443/31
|
||||
f 274/437/22 275/442/22 276/438/22
|
||||
f 278/444/26 279/445/26 280/446/26
|
||||
f 280/446/30 286/447/30 288/448/30
|
||||
f 281/449/23 284/450/23 283/451/23
|
||||
f 283/451/31 287/452/31 285/453/31
|
||||
f 286/447/22 287/452/22 288/448/22
|
||||
f 131/265/22 132/272/22 130/266/22
|
||||
f 136/268/23 152/297/23 151/269/23
|
||||
f 131/265/24 137/454/24 140/271/24
|
||||
f 130/266/25 139/455/25 138/273/25
|
||||
f 132/272/26 140/280/26 139/274/26
|
||||
f 129/267/23 138/456/23 137/275/23
|
||||
f 135/276/27 137/282/27 138/277/27
|
||||
f 133/278/27 138/277/27 139/274/27
|
||||
f 134/279/27 139/274/27 140/280/27
|
||||
f 136/281/27 140/280/27 137/282/27
|
||||
f 142/283/26 144/457/26 143/284/26
|
||||
f 145/286/23 148/458/23 147/287/23
|
||||
f 151/269/27 152/297/27 149/289/27
|
||||
f 143/284/27 145/286/27 146/288/27
|
||||
f 144/291/24 148/459/24 145/286/24
|
||||
f 141/285/25 146/288/25 147/292/25
|
||||
f 133/294/26 150/290/26 149/289/26
|
||||
f 135/296/25 149/289/25 152/297/25
|
||||
f 134/299/24 151/269/24 150/290/24
|
||||
f 154/301/26 156/460/26 155/302/26
|
||||
f 157/304/23 160/461/23 159/305/23
|
||||
f 155/302/27 157/304/27 158/306/27
|
||||
f 156/307/24 160/462/24 157/304/24
|
||||
f 153/303/25 158/306/25 159/308/25
|
||||
f 162/310/23 164/463/23 163/311/23
|
||||
f 165/313/26 168/464/26 167/314/26
|
||||
f 163/311/27 165/313/27 166/315/27
|
||||
f 164/316/25 168/465/25 165/313/25
|
||||
f 161/312/24 166/315/24 167/317/24
|
||||
f 170/319/23 172/466/23 171/320/23
|
||||
f 173/322/26 176/467/26 175/323/26
|
||||
f 171/320/27 173/322/27 174/324/27
|
||||
f 172/325/25 176/468/25 173/322/25
|
||||
f 169/321/24 174/324/24 175/326/24
|
||||
f 178/328/24 180/469/24 179/329/24
|
||||
f 181/331/25 184/470/25 183/332/25
|
||||
f 179/329/27 181/331/27 182/333/27
|
||||
f 180/334/23 184/471/23 181/331/23
|
||||
f 177/330/26 182/333/26 183/335/26
|
||||
f 186/337/24 188/472/24 187/338/24
|
||||
f 189/340/25 192/473/25 191/341/25
|
||||
f 187/338/27 189/340/27 190/342/27
|
||||
f 188/343/23 192/474/23 189/340/23
|
||||
f 185/339/26 190/342/26 191/344/26
|
||||
f 194/346/25 196/475/25 195/347/25
|
||||
f 197/349/24 200/476/24 199/350/24
|
||||
f 195/347/27 197/349/27 198/351/27
|
||||
f 196/352/26 200/477/26 197/349/26
|
||||
f 193/348/23 198/351/23 199/353/23
|
||||
f 202/355/25 204/478/25 203/356/25
|
||||
f 205/358/24 208/479/24 207/359/24
|
||||
f 203/356/27 205/358/27 206/360/27
|
||||
f 204/361/26 208/480/26 205/358/26
|
||||
f 201/357/23 206/360/23 207/362/23
|
||||
f 210/364/24 222/385/24 225/365/24
|
||||
f 224/367/27 225/365/27 222/368/27
|
||||
f 220/370/27 221/374/27 218/371/27
|
||||
f 216/373/24 218/380/24 221/374/24
|
||||
f 215/376/25 220/370/25 219/377/25
|
||||
f 217/375/26 221/374/26 220/370/26
|
||||
f 214/379/23 219/481/23 218/380/23
|
||||
f 211/381/25 224/367/25 223/382/25
|
||||
f 209/366/26 225/365/26 224/367/26
|
||||
f 212/384/23 223/482/23 222/385/23
|
||||
f 227/386/24 238/407/24 241/387/24
|
||||
f 240/389/27 241/387/27 238/390/27
|
||||
f 236/392/27 237/396/27 234/393/27
|
||||
f 232/395/24 234/402/24 237/396/24
|
||||
f 231/398/25 236/392/25 235/399/25
|
||||
f 233/397/26 237/396/26 236/392/26
|
||||
f 230/401/23 235/483/23 234/402/23
|
||||
f 228/403/25 240/389/25 239/404/25
|
||||
f 226/388/26 241/387/26 240/389/26
|
||||
f 229/406/23 239/484/23 238/407/23
|
||||
f 242/408/27 244/412/27 243/409/27
|
||||
f 242/408/28 245/413/28 246/411/28
|
||||
f 245/413/26 247/485/26 248/414/26
|
||||
f 243/409/29 250/416/29 249/415/29
|
||||
f 250/416/23 252/486/23 251/417/23
|
||||
f 254/418/27 256/422/27 255/419/27
|
||||
f 254/418/28 257/423/28 258/421/28
|
||||
f 257/423/26 259/487/26 260/424/26
|
||||
f 255/419/29 262/426/29 261/425/29
|
||||
f 262/426/23 264/488/23 263/427/23
|
||||
f 217/375/22 215/376/22 214/428/22
|
||||
f 233/397/22 231/398/22 230/430/22
|
||||
f 228/403/22 229/489/22 227/432/22
|
||||
f 211/381/22 212/490/22 210/433/22
|
||||
f 266/434/26 265/491/26 267/435/26
|
||||
f 268/436/30 267/435/30 274/437/30
|
||||
f 269/439/23 270/492/23 272/440/23
|
||||
f 271/441/31 272/440/31 275/442/31
|
||||
f 274/437/22 273/443/22 275/442/22
|
||||
f 278/444/26 277/493/26 279/445/26
|
||||
f 280/446/30 279/445/30 286/447/30
|
||||
f 281/449/23 282/494/23 284/450/23
|
||||
f 283/451/31 284/450/31 287/452/31
|
||||
f 286/447/22 285/453/22 287/452/22
|
||||
f 139/281/22 138/282/22 137/283/22
|
||||
f 144/284/23 159/285/23 142/286/23
|
||||
f 139/281/24 148/287/24 140/288/24
|
||||
f 138/282/25 146/289/25 137/283/25
|
||||
f 140/288/26 147/290/26 138/282/26
|
||||
f 137/283/23 145/291/23 139/281/23
|
||||
f 143/292/27 146/293/27 141/294/27
|
||||
f 141/294/27 147/290/27 142/295/27
|
||||
f 142/295/27 148/296/27 144/297/27
|
||||
f 144/297/27 145/298/27 143/292/27
|
||||
f 150/299/26 151/300/26 149/301/26
|
||||
f 153/302/23 155/303/23 154/304/23
|
||||
f 159/285/27 157/305/27 158/306/27
|
||||
f 151/300/27 154/304/27 149/301/27
|
||||
f 152/307/24 153/302/24 151/300/24
|
||||
f 149/301/25 155/308/25 150/309/25
|
||||
f 141/310/26 157/305/26 143/311/26
|
||||
f 143/312/25 160/313/25 144/314/25
|
||||
f 142/315/24 158/306/24 141/316/24
|
||||
f 162/317/26 163/318/26 161/319/26
|
||||
f 165/320/23 167/321/23 166/322/23
|
||||
f 163/318/27 166/322/27 161/319/27
|
||||
f 164/323/24 165/320/24 163/318/24
|
||||
f 161/319/25 167/324/25 162/325/25
|
||||
f 170/326/23 171/327/23 169/328/23
|
||||
f 173/329/26 175/330/26 174/331/26
|
||||
f 171/327/27 174/331/27 169/328/27
|
||||
f 172/332/25 173/329/25 171/327/25
|
||||
f 169/328/24 175/333/24 170/334/24
|
||||
f 178/335/23 179/336/23 177/337/23
|
||||
f 181/338/26 183/339/26 182/340/26
|
||||
f 179/336/27 182/340/27 177/337/27
|
||||
f 180/341/25 181/338/25 179/336/25
|
||||
f 177/337/24 183/342/24 178/343/24
|
||||
f 186/344/24 187/345/24 185/346/24
|
||||
f 189/347/25 191/348/25 190/349/25
|
||||
f 187/345/27 190/349/27 185/346/27
|
||||
f 188/350/23 189/347/23 187/345/23
|
||||
f 185/346/26 191/351/26 186/352/26
|
||||
f 194/353/24 195/354/24 193/355/24
|
||||
f 197/356/25 199/357/25 198/358/25
|
||||
f 195/354/27 198/358/27 193/355/27
|
||||
f 196/359/23 197/356/23 195/354/23
|
||||
f 193/355/26 199/360/26 194/361/26
|
||||
f 202/362/25 203/363/25 201/364/25
|
||||
f 205/365/24 207/366/24 206/367/24
|
||||
f 203/363/27 206/367/27 201/364/27
|
||||
f 204/368/26 205/365/26 203/363/26
|
||||
f 201/364/23 207/369/23 202/370/23
|
||||
f 210/371/25 211/372/25 209/373/25
|
||||
f 213/374/24 215/375/24 214/376/24
|
||||
f 211/372/27 214/376/27 209/373/27
|
||||
f 212/377/26 213/374/26 211/372/26
|
||||
f 209/373/23 215/378/23 210/379/23
|
||||
f 218/380/24 233/381/24 217/382/24
|
||||
f 232/383/27 230/384/27 231/385/27
|
||||
f 228/386/27 226/387/27 227/388/27
|
||||
f 224/389/24 229/390/24 225/391/24
|
||||
f 223/392/25 227/393/25 222/394/25
|
||||
f 225/391/26 228/386/26 223/392/26
|
||||
f 222/395/23 226/396/23 224/389/23
|
||||
f 219/397/25 231/398/25 220/399/25
|
||||
f 217/382/26 232/383/26 219/397/26
|
||||
f 220/400/23 230/401/23 218/380/23
|
||||
f 235/402/24 249/403/24 234/404/24
|
||||
f 248/405/27 246/406/27 247/407/27
|
||||
f 244/408/27 242/409/27 243/410/27
|
||||
f 240/411/24 245/412/24 241/413/24
|
||||
f 239/414/25 243/415/25 238/416/25
|
||||
f 241/413/26 244/408/26 239/414/26
|
||||
f 238/417/23 242/418/23 240/411/23
|
||||
f 236/419/25 247/420/25 237/421/25
|
||||
f 234/404/26 248/405/26 236/419/26
|
||||
f 237/422/23 246/423/23 235/402/23
|
||||
f 250/424/27 251/425/27 221/426/27
|
||||
f 250/424/28 254/427/28 252/428/28
|
||||
f 253/429/26 256/430/26 254/427/26
|
||||
f 251/425/29 257/431/29 221/426/29
|
||||
f 258/432/23 259/433/23 257/431/23
|
||||
f 262/434/27 263/435/27 261/436/27
|
||||
f 262/434/28 266/437/28 264/438/28
|
||||
f 265/439/26 268/440/26 266/437/26
|
||||
f 263/435/29 269/441/29 261/436/29
|
||||
f 270/442/23 271/443/23 269/441/23
|
||||
f 225/391/22 222/444/22 224/445/22
|
||||
f 241/413/22 238/446/22 240/447/22
|
||||
f 236/419/22 235/448/22 234/404/22
|
||||
f 219/397/22 218/449/22 217/382/22
|
||||
f 274/450/26 275/451/26 276/452/26
|
||||
f 276/452/30 282/453/30 284/454/30
|
||||
f 277/455/23 280/456/23 279/457/23
|
||||
f 279/457/31 283/458/31 281/459/31
|
||||
f 282/453/22 283/458/22 284/454/22
|
||||
f 286/460/26 287/461/26 288/462/26
|
||||
f 288/462/30 294/463/30 296/464/30
|
||||
f 289/465/23 292/466/23 291/467/23
|
||||
f 291/467/31 295/468/31 293/469/31
|
||||
f 294/463/22 295/468/22 296/464/22
|
||||
f 139/281/22 140/288/22 138/282/22
|
||||
f 144/284/23 160/313/23 159/285/23
|
||||
f 139/281/24 145/470/24 148/287/24
|
||||
f 138/282/25 147/471/25 146/289/25
|
||||
f 140/288/26 148/296/26 147/290/26
|
||||
f 137/283/23 146/472/23 145/291/23
|
||||
f 143/292/27 145/298/27 146/293/27
|
||||
f 141/294/27 146/293/27 147/290/27
|
||||
f 142/295/27 147/290/27 148/296/27
|
||||
f 144/297/27 148/296/27 145/298/27
|
||||
f 150/299/26 152/473/26 151/300/26
|
||||
f 153/302/23 156/474/23 155/303/23
|
||||
f 159/285/27 160/313/27 157/305/27
|
||||
f 151/300/27 153/302/27 154/304/27
|
||||
f 152/307/24 156/475/24 153/302/24
|
||||
f 149/301/25 154/304/25 155/308/25
|
||||
f 141/310/26 158/306/26 157/305/26
|
||||
f 143/312/25 157/305/25 160/313/25
|
||||
f 142/315/24 159/285/24 158/306/24
|
||||
f 162/317/26 164/476/26 163/318/26
|
||||
f 165/320/23 168/477/23 167/321/23
|
||||
f 163/318/27 165/320/27 166/322/27
|
||||
f 164/323/24 168/478/24 165/320/24
|
||||
f 161/319/25 166/322/25 167/324/25
|
||||
f 170/326/23 172/479/23 171/327/23
|
||||
f 173/329/26 176/480/26 175/330/26
|
||||
f 171/327/27 173/329/27 174/331/27
|
||||
f 172/332/25 176/481/25 173/329/25
|
||||
f 169/328/24 174/331/24 175/333/24
|
||||
f 178/335/23 180/482/23 179/336/23
|
||||
f 181/338/26 184/483/26 183/339/26
|
||||
f 179/336/27 181/338/27 182/340/27
|
||||
f 180/341/25 184/484/25 181/338/25
|
||||
f 177/337/24 182/340/24 183/342/24
|
||||
f 186/344/24 188/485/24 187/345/24
|
||||
f 189/347/25 192/486/25 191/348/25
|
||||
f 187/345/27 189/347/27 190/349/27
|
||||
f 188/350/23 192/487/23 189/347/23
|
||||
f 185/346/26 190/349/26 191/351/26
|
||||
f 194/353/24 196/488/24 195/354/24
|
||||
f 197/356/25 200/489/25 199/357/25
|
||||
f 195/354/27 197/356/27 198/358/27
|
||||
f 196/359/23 200/490/23 197/356/23
|
||||
f 193/355/26 198/358/26 199/360/26
|
||||
f 202/362/25 204/491/25 203/363/25
|
||||
f 205/365/24 208/492/24 207/366/24
|
||||
f 203/363/27 205/365/27 206/367/27
|
||||
f 204/368/26 208/493/26 205/365/26
|
||||
f 201/364/23 206/367/23 207/369/23
|
||||
f 210/371/25 212/494/25 211/372/25
|
||||
f 213/374/24 216/495/24 215/375/24
|
||||
f 211/372/27 213/374/27 214/376/27
|
||||
f 212/377/26 216/496/26 213/374/26
|
||||
f 209/373/23 214/376/23 215/378/23
|
||||
f 218/380/24 230/401/24 233/381/24
|
||||
f 232/383/27 233/381/27 230/384/27
|
||||
f 228/386/27 229/390/27 226/387/27
|
||||
f 224/389/24 226/396/24 229/390/24
|
||||
f 223/392/25 228/386/25 227/393/25
|
||||
f 225/391/26 229/390/26 228/386/26
|
||||
f 222/395/23 227/497/23 226/396/23
|
||||
f 219/397/25 232/383/25 231/398/25
|
||||
f 217/382/26 233/381/26 232/383/26
|
||||
f 220/400/23 231/498/23 230/401/23
|
||||
f 235/402/24 246/423/24 249/403/24
|
||||
f 248/405/27 249/403/27 246/406/27
|
||||
f 244/408/27 245/412/27 242/409/27
|
||||
f 240/411/24 242/418/24 245/412/24
|
||||
f 239/414/25 244/408/25 243/415/25
|
||||
f 241/413/26 245/412/26 244/408/26
|
||||
f 238/417/23 243/499/23 242/418/23
|
||||
f 236/419/25 248/405/25 247/420/25
|
||||
f 234/404/26 249/403/26 248/405/26
|
||||
f 237/422/23 247/500/23 246/423/23
|
||||
f 250/424/27 252/428/27 251/425/27
|
||||
f 250/424/28 253/429/28 254/427/28
|
||||
f 253/429/26 255/501/26 256/430/26
|
||||
f 251/425/29 258/432/29 257/431/29
|
||||
f 258/432/23 260/502/23 259/433/23
|
||||
f 262/434/27 264/438/27 263/435/27
|
||||
f 262/434/28 265/439/28 266/437/28
|
||||
f 265/439/26 267/503/26 268/440/26
|
||||
f 263/435/29 270/442/29 269/441/29
|
||||
f 270/442/23 272/504/23 271/443/23
|
||||
f 225/391/22 223/392/22 222/444/22
|
||||
f 241/413/22 239/414/22 238/446/22
|
||||
f 236/419/22 237/505/22 235/448/22
|
||||
f 219/397/22 220/506/22 218/449/22
|
||||
f 274/450/26 273/507/26 275/451/26
|
||||
f 276/452/30 275/451/30 282/453/30
|
||||
f 277/455/23 278/508/23 280/456/23
|
||||
f 279/457/31 280/456/31 283/458/31
|
||||
f 282/453/22 281/459/22 283/458/22
|
||||
f 286/460/26 285/509/26 287/461/26
|
||||
f 288/462/30 287/461/30 294/463/30
|
||||
f 289/465/23 290/510/23 292/466/23
|
||||
f 291/467/31 292/466/31 295/468/31
|
||||
f 294/463/22 293/469/22 295/468/22
|
||||
|
||||
@ -47,9 +47,9 @@ vt 1.000000 0.785714
|
||||
vt 1.000000 0.214286
|
||||
vt 0.681818 0.285714
|
||||
vt 0.954545 0.285714
|
||||
vt 0.954545 0.267857
|
||||
vt 0.954545 0.285714
|
||||
vt 0.681818 0.714286
|
||||
vt 0.681818 0.267857
|
||||
vt 0.681818 0.285714
|
||||
vt 0.500000 0.107143
|
||||
vt 0.772727 0.035714
|
||||
vt 0.772727 0.107143
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
"block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]},
|
||||
"block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": false}]},
|
||||
"block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]},
|
||||
"block.flesh": {"category": "block", "sounds": ["block/flesh1", "block/flesh2", "block/flesh4", "block/flesh5"]},
|
||||
"block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]},
|
||||
"block.missileAssembly2": {"category": "block", "sounds": [{"name": "block/missileAssembly2", "stream": false}]},
|
||||
"block.openDoor": {"category": "block", "sounds": ["block/door_open_1", "block/door_open_2"]},
|
||||
@ -324,6 +325,8 @@
|
||||
"step.iron_land": {"category": "player", "sounds": [{"name": "footsteps/iron_land", "stream": false}]},
|
||||
"step.iron": {"category": "player", "sounds": ["footsteps/iron1", "footsteps/iron2", "footsteps/iron3", "footsteps/iron4"]},
|
||||
"step.metalBlock": {"category": "block", "sounds": ["footsteps/metalStep1", "footsteps/metalStep2", "footsteps/metalStep3", "footsteps/metalStep4"]},
|
||||
"step.platemetal": {"category": "block", "sounds": ["block/platemetal_step"]},
|
||||
"block.platemetalPlace": {"category": "block", "sounds": ["block/platemetal_bar1", "block/platemetal_bar2", "block/platemetal_bar3", "block/platemetal_bar4", "block/platemetal_bar5", "block/platemetal_bar6"]},
|
||||
"step.powered": {"category": "player", "sounds": ["footsteps/powered1", "footsteps/powered2", "footsteps/powered3"]},
|
||||
|
||||
"player.vomit": {"category": "player", "sounds": [{"name": "player/vomit", "stream": false}]},
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/block/flesh1.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/flesh1.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/block/flesh2.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/flesh2.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/block/flesh4.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/flesh4.ogg
Normal file
Binary file not shown.
BIN
src/main/resources/assets/hbm/sounds/block/flesh5.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/block/flesh5.ogg
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user