Merge branch 'HbmMods:master' into master
22
changelog
@ -1,3 +1,7 @@
|
||||
## Added
|
||||
* T-51b power armor
|
||||
* Serves as a replacement for the T-45
|
||||
|
||||
## Changed
|
||||
* Added more QMAW pages
|
||||
* Removed most old particle accelerator blocks from the creative inventory
|
||||
@ -7,7 +11,23 @@
|
||||
* Gibbing NPCs now also spawns bones, if supported by the skeletonizer
|
||||
* Gibbed bones only have a 50% chance of spawning and come with a unique red texture
|
||||
* Gibbed bones have a way shorter lifetime and higher gravity to match the gib particles
|
||||
* Updated the factory structure
|
||||
* NBT based structures now have a config for the spawn weight, unlike the old structure configs, higher numbers make structures more frequent
|
||||
* Mobs are no longer registered in the vanilla namespace
|
||||
* Drills no longer clip through depth rock, depth rock now has to be cleared before bedrock ore becomes accessible
|
||||
* When an area modifier is selected on a tool, an icon will now render next to the crosshair to make it obvious that the modifier is active
|
||||
* Crucibles will now produce a smoke effect when producing pollution, making it more obvious where the pollution is coming from
|
||||
* Halved the amount of schrabidic acid needed in the schrabidium recipes in the PUREX, increasing the defacto yield per used fuel rod
|
||||
* Changed thorium salt enrichment recipe from 5s to 1s
|
||||
* There are now two new alternate recipes for making solid fuel in the chemical plant out of biomass
|
||||
* The helium-3 recipe no longer requires batches of 8, the input, duration and output have been divided equally
|
||||
* Helium-4 can now be filled into gas tanks
|
||||
* Reinforced concrete can now also be created by filling rebar with liquid concrete in the acidizer
|
||||
* Graphite electrodes can now be made in the chemical plant from either heating oil or lubricant
|
||||
* Lubricant can now be made in the chemical plant from either coal tar or heavy oil
|
||||
|
||||
## Fixed
|
||||
* Fixed wood burner only being able to create one ash pile per item burned, even when that item yields more, creating a backlog in the internal ash value
|
||||
* Fixed some QMAW link icons not having the correct block lighting applied
|
||||
* Fixed some QMAW link icons not having the correct block lighting applied
|
||||
* Fixed a rare crash caused by RBMK neutron calculations happening in unloaded chunks
|
||||
* Fixed moonstone recipe being broken
|
||||
@ -35,6 +35,8 @@ public class ClientConfig extends RunningConfig {
|
||||
public static ConfigWrapper<Boolean> RENDER_REBAR_SIMPLE = new ConfigWrapper(false);
|
||||
public static ConfigWrapper<Integer> RENDER_HELIOSTAT_BEAM_LIMIT = new ConfigWrapper(250);
|
||||
public static ConfigWrapper<Integer> RENDER_REBAR_LIMIT = new ConfigWrapper(250);
|
||||
public static ConfigWrapper<Integer> TOOL_HUD_INDICATOR_X = new ConfigWrapper(0);
|
||||
public static ConfigWrapper<Integer> TOOL_HUD_INDICATOR_Y = new ConfigWrapper(0);
|
||||
|
||||
private static void initDefaults() {
|
||||
configMap.put("GEIGER_OFFSET_HORIZONTAL", GEIGER_OFFSET_HORIZONTAL);
|
||||
@ -59,6 +61,8 @@ public class ClientConfig extends RunningConfig {
|
||||
configMap.put("RENDER_REBAR_SIMPLE", RENDER_REBAR_SIMPLE);
|
||||
configMap.put("RENDER_HELIOSTAT_BEAM_LIMIT", RENDER_HELIOSTAT_BEAM_LIMIT);
|
||||
configMap.put("RENDER_REBAR_LIMIT", RENDER_REBAR_LIMIT);
|
||||
configMap.put("TOOL_HUD_INDICATOR_X", TOOL_HUD_INDICATOR_X);
|
||||
configMap.put("TOOL_HUD_INDICATOR_Y", TOOL_HUD_INDICATOR_Y);
|
||||
}
|
||||
|
||||
/** Initializes defaults, then reads the config file if it exists, then writes the config file. */
|
||||
|
||||
@ -41,6 +41,7 @@ public class StructureConfig {
|
||||
public static int laboratorySpawnWeight = 20;
|
||||
public static int lighthouseSpawnWeight = 4;
|
||||
public static int oilRigSpawnWeight = 5;
|
||||
public static int broadcastingTowerSpawnWeight = 25;
|
||||
public static int beachedPatrolSpawnWeight = 15;
|
||||
public static int vertibirdSpawnWeight = 6;
|
||||
public static int vertibirdCrashedSpawnWeight = 10;
|
||||
@ -51,6 +52,7 @@ public class StructureConfig {
|
||||
public static int forestPostSpawnWeight = 30;
|
||||
|
||||
public static int spireSpawnWeight = 2;
|
||||
public static int craneSpawnWeight = 20;
|
||||
public static int bunkerSpawnWeight = 6;
|
||||
public static int dishSpawnWeight = 20;
|
||||
public static int featuresSpawnWeight = 50;
|
||||
@ -109,9 +111,10 @@ public class StructureConfig {
|
||||
ruinsJSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.34_ruinJSpawnWeight", "Spawn weight for ruin J structure.", 12);
|
||||
radioSpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.35_radioSpawnWeight", "Spawn weight for radio structure.", 25);
|
||||
factorySpawnWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.36_factorySpawnWeight", "Spawn weight for factory structure.", 40);
|
||||
|
||||
plainsNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.37_plainsNullWeight", "Null spawn weight for plains biome", 20);
|
||||
oceanNullWeight = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.38_oceanNullWeight", "Null spawn weight for ocean biomes", 35);
|
||||
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);
|
||||
|
||||
|
||||
structureMinChunks = CommonConfig.setDef(structureMinChunks, 4);
|
||||
|
||||
@ -64,10 +64,10 @@ public class ArmorRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.zirconium_legs, 1), new Object[] { "EEE", "E E", "E E", 'E', ZR.ingot() });
|
||||
|
||||
//Power armor
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_titanium, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_RUBBER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.titanium_helmet });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t51_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'I', ANY_PLASTIC.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'T', ModItems.gas_empty, 'B', ModItems.alloy_plate });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_legs });
|
||||
|
||||
@ -60,7 +60,7 @@ public abstract class EntityRailCarElectric extends EntityRailCarRidable {
|
||||
this.setPower(this.getPower() + powerTransfered);
|
||||
}
|
||||
} else if(stack != null) {
|
||||
if(stack.getItem() == ModItems.battery_creative || stack.getItem() == ModItems.fusion_core_infinite) {
|
||||
if(stack.getItem() == ModItems.battery_creative) {
|
||||
this.setPower(this.getMaxPower());
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import com.hbm.blocks.machine.rbmk.RBMKBase;
|
||||
import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.tileentity.machine.rbmk.*;
|
||||
import com.hbm.util.Compat;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -35,7 +36,7 @@ public class RBMKNeutronHandler {
|
||||
}
|
||||
|
||||
private static TileEntity blockPosToTE(World worldObj, BlockPos pos) {
|
||||
return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ());
|
||||
return Compat.getTileStandard(worldObj, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
public static RBMKNeutronNode makeNode(StreamWorld streamWorld, TileEntityRBMKBase tile) {
|
||||
@ -222,7 +223,7 @@ public class RBMKNeutronHandler {
|
||||
pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z);
|
||||
|
||||
NeutronNode node = streamWorld.getNode(pos);
|
||||
if(node != null && node instanceof RBMKNeutronNode) {
|
||||
if(node instanceof RBMKNeutronNode) {
|
||||
positions[i - 1] = node;
|
||||
} else if(this.origin.tile.getBlockType() instanceof RBMKBase) {
|
||||
TileEntity te = blockPosToTE(world, pos);
|
||||
|
||||
@ -377,7 +377,7 @@ public class Fluids {
|
||||
SMOKE = new FluidType("SMOKE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
SMOKE_LEADED = new FluidType("SMOKE_LEADED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
SMOKE_POISON = new FluidType("SMOKE_POISON", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON);
|
||||
HELIUM4 = new FluidType("HELIUM4", 0xE54B0A, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS);
|
||||
HELIUM4 = new FluidType("HELIUM4", 0xE54B0A, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS).addContainers(new CD_Gastank(0xFD631F, 0xffff00));
|
||||
HEAVYWATER_HOT = new FluidType("HEAVYWATER_HOT", 0x4D007B, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID, VISCOUS);
|
||||
SODIUM = new FluidType("SODIUM", 0xCCD4D5, 1, 2, 3, EnumSymbol.NONE).setTemp(400).addTraits(LIQUID, VISCOUS);
|
||||
SODIUM_HOT = new FluidType("SODIUM_HOT", 0xE2ADC1, 1, 2, 3, EnumSymbol.NONE).setTemp(1200).addTraits(LIQUID, VISCOUS);
|
||||
|
||||
@ -62,9 +62,9 @@ public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputFluids(new FluidStack(Fluids.AIR, 8_000), new FluidStack(Fluids.OXYGEN, 250))
|
||||
.outputFluids(new FluidStack(Fluids.XENON, 50)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".xenonoxy"));
|
||||
|
||||
this.register(new GenericRecipe("chem.helium3").setupNamed(200, 2_000).setIcon(ModItems.gas_full, Fluids.HELIUM3.getID())
|
||||
.inputItems(new ComparableStack(ModBlocks.moon_turf, 8))
|
||||
.outputFluids(new FluidStack(Fluids.HELIUM3, 1_000)));
|
||||
this.register(new GenericRecipe("chem.helium3").setupNamed(25, 2_000).setIcon(ModItems.gas_full, Fluids.HELIUM3.getID())
|
||||
.inputItems(new ComparableStack(ModBlocks.moon_turf, 1))
|
||||
.outputFluids(new FluidStack(Fluids.HELIUM3, 125)));
|
||||
|
||||
this.register(new GenericRecipe("chem.co2").setup(60, 100)
|
||||
.inputFluids(new FluidStack(Fluids.GAS, 1_000))
|
||||
@ -101,6 +101,14 @@ public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputFluids(new FluidStack(Fluids.NAPHTHA, 1000))
|
||||
.outputFluids(new FluidStack(Fluids.GASOLINE, 800)));
|
||||
|
||||
this.register(new GenericRecipe("chem.coallube").setupNamed(40, 100).setIcon(ModItems.canister_full, Fluids.LUBRICANT.getID())
|
||||
.inputFluids(new FluidStack(Fluids.COALCREOSOTE, 1_000))
|
||||
.outputFluids(new FluidStack(Fluids.LUBRICANT, 1_000)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".lube"));
|
||||
|
||||
this.register(new GenericRecipe("chem.heavylube").setupNamed(40, 100).setIcon(ModItems.canister_full, Fluids.LUBRICANT.getID())
|
||||
.inputFluids(new FluidStack(Fluids.HEAVYOIL, 2_000))
|
||||
.outputFluids(new FluidStack(Fluids.LUBRICANT, 1_000)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".lube"));
|
||||
|
||||
this.register(new GenericRecipe("chem.tarsand").setupNamed(200, 100).setIcon(ModBlocks.ore_oil_sand)
|
||||
.inputItems(new ComparableStack(ModBlocks.ore_oil_sand, 16), new OreDictStack(ANY_TAR.any(), 1))
|
||||
.outputItems(new ItemStack(Blocks.sand, 16))
|
||||
@ -202,6 +210,23 @@ public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.inputItems(new ComparableStack(ModBlocks.deco_steel, 8))
|
||||
.inputFluids(new FluidStack(Fluids.WATER, 1000))
|
||||
.outputItems(new ItemStack(ModBlocks.deco_rusty_steel, 8)));
|
||||
|
||||
this.register(new GenericRecipe("chem.biosolidfuel").setupNamed(40, 100)
|
||||
.inputItems(new ComparableStack(ModItems.biomass_compressed, 4))
|
||||
.outputItems(new ItemStack(ModItems.solid_fuel, 1)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".biosolidfuel"));
|
||||
|
||||
this.register(new GenericRecipe("chem.biooilsolidfuel").setupNamed(40, 100)
|
||||
.inputItems(new ComparableStack(ModItems.biomass_compressed, 2))
|
||||
.inputFluids(new FluidStack(Fluids.HEATINGOIL, 100))
|
||||
.outputItems(new ItemStack(ModItems.solid_fuel, 1)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".biosolidfuel"));
|
||||
|
||||
this.register(new GenericRecipe("chem.oilelectrodes").setupNamed(600, 100)
|
||||
.inputFluids(new FluidStack(Fluids.HEATINGOIL, 4_000))
|
||||
.outputItems(new ItemStack(ModItems.arc_electrode, 1)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".electrodes"));
|
||||
|
||||
this.register(new GenericRecipe("chem.lubeelectrodes").setupNamed(600, 100)
|
||||
.inputFluids(new FluidStack(Fluids.LUBRICANT, 8_000))
|
||||
.outputItems(new ItemStack(ModItems.arc_electrode, 1)).setPools(GenericRecipes.POOL_PREFIX_ALT + ".electrodes"));
|
||||
|
||||
/// ACIDS ///
|
||||
this.register(new GenericRecipe("chem.peroxide").setup(50, 100)
|
||||
|
||||
@ -122,6 +122,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250));
|
||||
registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime).prod(0.15F), new FluidStack(Fluids.SOURGAS, 25));
|
||||
registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime).prod(0.25F), new FluidStack(Fluids.NITROGLYCERIN, 250));
|
||||
registerRecipe(new ComparableStack(ModBlocks.rebar), new CrystallizerRecipe(ModBlocks.concrete_rebar, 10), new FluidStack(Fluids.CONCRETE, 1_000));
|
||||
|
||||
registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime));
|
||||
registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000));
|
||||
@ -242,7 +243,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(CINNABAR.dust(), new CrystallizerRecipe(new ItemStack(ModItems.cinnebar), utilityTime), new FluidStack(Fluids.PEROXIDE, 50));
|
||||
}
|
||||
|
||||
registerRecipe(new ComparableStack(ModBlocks.moon_turf, 16), new CrystallizerRecipe(new ItemStack(ModItems.chunk_ore, 1, EnumChunkType.MOONSTONE.ordinal()), 1200));
|
||||
registerRecipe(new ComparableStack(ModBlocks.moon_turf), new CrystallizerRecipe(new ItemStack(ModItems.chunk_ore, 1, EnumChunkType.MOONSTONE.ordinal()), 1200).setReq(16));
|
||||
|
||||
if(!IMCCrystallizer.buffer.isEmpty()) {
|
||||
recipes.putAll(IMCCrystallizer.buffer);
|
||||
|
||||
@ -324,7 +324,7 @@ public class PUREXRecipes extends GenericRecipes<GenericRecipe> {
|
||||
.setIconToFirstIngredient());
|
||||
|
||||
// Molten Salt
|
||||
this.register(new GenericRecipe("purex.thoriumsalt").setup(100, 10_000).setIcon(ModItems.fluid_icon, Fluids.THORIUM_SALT.getID())
|
||||
this.register(new GenericRecipe("purex.thoriumsalt").setup(20, 10_000).setIcon(ModItems.fluid_icon, Fluids.THORIUM_SALT.getID())
|
||||
.inputFluids(new FluidStack(Fluids.THORIUM_SALT_DEPLETED, 16_000))
|
||||
.inputItems(new OreDictStack(TH232.nugget(), 2))
|
||||
.outputFluids(new FluidStack(Fluids.THORIUM_SALT, 16_000))
|
||||
@ -485,21 +485,21 @@ public class PUREXRecipes extends GenericRecipes<GenericRecipe> {
|
||||
String autoSchrab = "autoswitch.schrab";
|
||||
this.register(new GenericRecipe("purex.schrabzirnox").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this)
|
||||
.inputItems(new ComparableStack(ModItems.waste_plutonium))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 250))
|
||||
.outputItems(new ItemStack(ModItems.powder_schrabidium, 1),
|
||||
new ItemStack(ModItems.nugget_technetium, 3),
|
||||
new ItemStack(ModItems.nuclear_waste_tiny, 4))
|
||||
.setIconToFirstIngredient());
|
||||
this.register(new GenericRecipe("purex.schrabpwr").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this)
|
||||
.inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEP))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 250))
|
||||
.outputItems(new ItemStack(ModItems.powder_schrabidium, 1),
|
||||
new ItemStack(ModItems.nugget_technetium, 3),
|
||||
new ItemStack(ModItems.nuclear_waste_tiny, 4))
|
||||
.setIconToFirstIngredient());
|
||||
this.register(new GenericRecipe("purex.schrabmen").setup(200, 50_000).setNameWrapper("purex.schrab").setGroup(autoSchrab, this)
|
||||
.inputItems(new ComparableStack(ModItems.pwr_fuel_depleted, 1, EnumPWRFuel.MEN))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 500))
|
||||
.inputFluids(new FluidStack(Fluids.SOLVENT, 4_000), new FluidStack(Fluids.SCHRABIDIC, 250))
|
||||
.outputItems(new ItemStack(ModItems.powder_schrabidium, 1),
|
||||
new ItemStack(ModItems.nugget_technetium, 3),
|
||||
new ItemStack(ModItems.nuclear_waste_tiny, 4))
|
||||
|
||||
@ -187,11 +187,10 @@ public class ItemPoolsLegacy {
|
||||
//loot found in vertibirds
|
||||
new ItemPool(POOL_VERTIBIRD) {{
|
||||
this.pool = new WeightedRandomChestContent[] {
|
||||
weighted(ModItems.t45_helmet, 0, 1, 1, 15),
|
||||
weighted(ModItems.t45_plate, 0, 1, 1, 15),
|
||||
weighted(ModItems.t45_legs, 0, 1, 1, 15),
|
||||
weighted(ModItems.t45_boots, 0, 1, 1, 15),
|
||||
weighted(ModItems.t45_kit, 0, 1, 1, 3),
|
||||
weighted(ModItems.t51_helmet, 0, 1, 1, 15),
|
||||
weighted(ModItems.t51_plate, 0, 1, 1, 15),
|
||||
weighted(ModItems.t51_legs, 0, 1, 1, 15),
|
||||
weighted(ModItems.t51_boots, 0, 1, 1, 15),
|
||||
weighted(ModItems.fusion_core, 0, 1, 1, 10),
|
||||
weighted(ModItems.gun_light_revolver, 0, 1, 1, 4),
|
||||
weighted(ModItems.gun_kit_1, 0, 2, 3, 4),
|
||||
|
||||
@ -1666,7 +1666,6 @@ public class ModItems {
|
||||
public static Item battery_potatos;
|
||||
public static Item hev_battery;
|
||||
public static Item fusion_core;
|
||||
public static Item fusion_core_infinite;
|
||||
public static Item energy_core;
|
||||
public static Item fuse;
|
||||
public static Item redcoil_capacitor;
|
||||
@ -1742,10 +1741,14 @@ public class ModItems {
|
||||
public static Item beta;
|
||||
public static Item no9;
|
||||
|
||||
public static Item t45_helmet;
|
||||
public static Item t45_plate;
|
||||
public static Item t45_legs;
|
||||
public static Item t45_boots;
|
||||
@Deprecated public static Item t45_helmet;
|
||||
@Deprecated public static Item t45_plate;
|
||||
@Deprecated public static Item t45_legs;
|
||||
@Deprecated public static Item t45_boots;
|
||||
public static Item t51_helmet;
|
||||
public static Item t51_plate;
|
||||
public static Item t51_legs;
|
||||
public static Item t51_boots;
|
||||
public static Item steamsuit_helmet;
|
||||
public static Item steamsuit_plate;
|
||||
public static Item steamsuit_legs;
|
||||
@ -2107,7 +2110,6 @@ public class ModItems {
|
||||
public static Item fleija_kit;
|
||||
public static Item prototype_kit;
|
||||
public static Item missile_kit;
|
||||
public static Item t45_kit;
|
||||
public static Item euphemium_kit;
|
||||
public static Item solinium_kit;
|
||||
public static Item hazmat_kit;
|
||||
@ -3930,7 +3932,6 @@ public class ModItems {
|
||||
battery_potatos = new ItemPotatos(500000, 0, 100).setUnlocalizedName("battery_potatos").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":battery_potatos");
|
||||
hev_battery = new ItemFusionCore(150000).setUnlocalizedName("hev_battery").setMaxStackSize(4).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":hev_battery");
|
||||
fusion_core = new ItemFusionCore(2500000).setUnlocalizedName("fusion_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_core");
|
||||
fusion_core_infinite = new Item().setUnlocalizedName("fusion_core_infinite").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fusion_core_infinite");
|
||||
energy_core = new ItemBattery(10000000, 0, 1000).setUnlocalizedName("energy_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":energy_core");
|
||||
fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse");
|
||||
redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor");
|
||||
@ -4027,7 +4028,6 @@ public class ModItems {
|
||||
fleija_kit = new ItemStarterKit().setUnlocalizedName("fleija_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":fleija_kit");
|
||||
prototype_kit = new ItemStarterKit().setUnlocalizedName("prototype_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":prototype_kit");
|
||||
missile_kit = new ItemStarterKit().setUnlocalizedName("missile_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_kit");
|
||||
t45_kit = new ItemStarterKit().setUnlocalizedName("t45_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":t45_kit");
|
||||
euphemium_kit = new ItemStarterKit().setUnlocalizedName("euphemium_kit").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":code");
|
||||
solinium_kit = new ItemStarterKit().setUnlocalizedName("solinium_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":solinium_kit");
|
||||
hazmat_kit = new ItemStarterKit().setUnlocalizedName("hazmat_kit").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":hazmat_kit");
|
||||
@ -4255,6 +4255,20 @@ public class ModItems {
|
||||
t45_legs = new ArmorT45(aMatT45, 2, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_legs");
|
||||
t45_boots = new ArmorT45(aMatT45, 3, 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t45_helmet).setUnlocalizedName("t45_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":t45_boots");
|
||||
|
||||
ArmorMaterial aMatT51 = EnumHelper.addArmorMaterial("HBM_T51", 150, new int[] { 3, 8, 6, 3 }, 0);
|
||||
aMatT51.customCraftingMaterial = ModItems.plate_armor_titanium;
|
||||
t51_helmet = new ArmorT51(aMatT51, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5)
|
||||
.enableVATS(true)
|
||||
.setHasGeigerSound(true)
|
||||
.setHasHardLanding(true)
|
||||
.addEffect(new PotionEffect(Potion.damageBoost.id, 20, 0))
|
||||
.setStep("hbm:step.metal").setJump("hbm:step.iron_jump").setFall("hbm:step.iron_land")
|
||||
.hides(EnumPlayerPart.HAT)
|
||||
.setUnlocalizedName("t51_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor");
|
||||
t51_plate = new ArmorT51(aMatT51, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_plate").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor");
|
||||
t51_legs = new ArmorT51(aMatT51, 2, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_legs").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor");
|
||||
t51_boots = new ArmorT51(aMatT51, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 1000, 5).cloneStats((ArmorFSB) t51_helmet).setUnlocalizedName("t51_boots").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":armor");
|
||||
|
||||
ArmorMaterial aMatDesh = EnumHelper.addArmorMaterial("HBM_DESH", 150, new int[] { 3, 8, 6, 3 }, 0);
|
||||
aMatDesh.customCraftingMaterial = ModItems.ingot_desh;
|
||||
steamsuit_helmet = new ArmorDesh(aMatDesh, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", Fluids.STEAM, 64_000, 500, 50, 1)
|
||||
@ -5742,7 +5756,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(hev_battery, hev_battery.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fusion_core, fusion_core.getUnlocalizedName());
|
||||
GameRegistry.registerItem(energy_core, energy_core.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fusion_core_infinite, fusion_core_infinite.getUnlocalizedName());
|
||||
|
||||
//Folders
|
||||
GameRegistry.registerItem(blueprints, blueprints.getUnlocalizedName());
|
||||
@ -6902,6 +6915,10 @@ public class ModItems {
|
||||
GameRegistry.registerItem(t45_plate, t45_plate.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t45_legs, t45_legs.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t45_boots, t45_boots.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t51_helmet, t51_helmet.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t51_plate, t51_plate.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t51_legs, t51_legs.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t51_boots, t51_boots.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ajr_helmet, ajr_helmet.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ajr_plate, ajr_plate.getUnlocalizedName());
|
||||
GameRegistry.registerItem(ajr_legs, ajr_legs.getUnlocalizedName());
|
||||
@ -7079,7 +7096,6 @@ public class ModItems {
|
||||
GameRegistry.registerItem(custom_kit, custom_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(missile_kit, missile_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(grenade_kit, grenade_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(t45_kit, t45_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(hazmat_kit, hazmat_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(hazmat_red_kit, hazmat_red_kit.getUnlocalizedName());
|
||||
GameRegistry.registerItem(hazmat_grey_kit, hazmat_grey_kit.getUnlocalizedName());
|
||||
|
||||
@ -1,14 +1,19 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorAJR;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorAJR extends ArmorFSBPowered {
|
||||
public class ArmorAJR extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorAJR(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -30,4 +35,18 @@ public class ArmorAJR extends ArmorFSBPowered {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_ajr, armorType,
|
||||
ResourceManager.ajr_helmet, ResourceManager.ajr_chest, ResourceManager.ajr_arm, ResourceManager.ajr_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,14 +1,19 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorAJRO;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorAJRO extends ArmorFSBPowered {
|
||||
public class ArmorAJRO extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorAJRO(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -30,4 +35,18 @@ public class ArmorAJRO extends ArmorFSBPowered {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_ajr, armorType,
|
||||
ResourceManager.ajro_helmet, ResourceManager.ajro_chest, ResourceManager.ajro_arm, ResourceManager.ajro_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,18 +1,26 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorBJ;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorBJ extends ArmorFSBPowered {
|
||||
public class ArmorBJ extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorBJ(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -24,31 +32,57 @@ public class ArmorBJ extends ArmorFSBPowered {
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
|
||||
|
||||
|
||||
if(models == null) {
|
||||
models = new ModelArmorBJ[4];
|
||||
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
models[i] = new ModelArmorBJ(i);
|
||||
}
|
||||
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
|
||||
|
||||
super.onArmorTick(world, player, itemStack);
|
||||
|
||||
if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) {
|
||||
|
||||
ItemStack helmet = player.inventory.armorInventory[3];
|
||||
|
||||
if(!player.inventory.addItemStackToInventory(helmet))
|
||||
player.dropPlayerItemWithRandomChoice(helmet, false);
|
||||
|
||||
player.inventory.armorInventory[3] = null;
|
||||
|
||||
player.attackEntityFrom(ModDamageSource.lunar, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
|
||||
|
||||
super.onArmorTick(world, player, itemStack);
|
||||
|
||||
if(this == ModItems.bj_helmet && ArmorFSB.hasFSBArmorIgnoreCharge(player) && !ArmorFSB.hasFSBArmor(player)) {
|
||||
|
||||
ItemStack helmet = player.inventory.armorInventory[3];
|
||||
|
||||
if(!player.inventory.addItemStackToInventory(helmet))
|
||||
player.dropPlayerItemWithRandomChoice(helmet, false);
|
||||
|
||||
player.inventory.armorInventory[3] = null;
|
||||
|
||||
player.attackEntityFrom(ModDamageSource.lunar, 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
if(armorType == 1) {
|
||||
if(ArmorBJ.this == ModItems.bj_plate_jetpack) {
|
||||
GL11.glScaled(0.6875, 0.6875, 0.6875);
|
||||
} else {
|
||||
GL11.glScaled(0.875, 0.875, 0.875);
|
||||
}
|
||||
}
|
||||
renderStandard(ResourceManager.armor_bj, armorType,
|
||||
ResourceManager.bj_eyepatch, ResourceManager.bj_chest, ResourceManager.bj_arm, ResourceManager.bj_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot");
|
||||
if(ArmorBJ.this == ModItems.bj_plate_jetpack) {
|
||||
GL11.glTranslated(0, 0, -0.1);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.bj_jetpack);
|
||||
ResourceManager.armor_bj.renderPart("Jetpack");
|
||||
}
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,13 +1,21 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorBismuth;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorBismuth extends ArmorFSB {
|
||||
public class ArmorBismuth extends ArmorFSB implements IItemRendererProvider {
|
||||
|
||||
public ArmorBismuth(ArmorMaterial material, int slot, String texture) {
|
||||
super(material, slot, texture);
|
||||
@ -30,4 +38,26 @@ public class ArmorBismuth extends ArmorFSB {
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
if(armorType == 0) {
|
||||
GL11.glTranslated(0, -0.5, 0);
|
||||
GL11.glScaled(0.625, 0.625, 0.625);
|
||||
}
|
||||
if(armorType == 1) {
|
||||
GL11.glScaled(0.875, 0.875, 0.875);
|
||||
}
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
renderStandard(ResourceManager.armor_bismuth, armorType,
|
||||
ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex, ResourceManager.armor_bismuth_tex,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot");
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,12 +3,17 @@ package com.hbm.items.armor;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.threading.PacketThreading;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorDNT;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
import com.hbm.util.ArmorUtil;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
@ -21,16 +26,18 @@ import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
|
||||
public class ArmorDNT extends ArmorFSBPowered {
|
||||
public class ArmorDNT extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorDNT(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -190,4 +197,23 @@ public class ArmorDNT extends ArmorFSBPowered {
|
||||
list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.fastFall"));
|
||||
list.add(EnumChatFormatting.AQUA + " " + I18nUtil.resolveKey("armor.sprintBoost"));
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
if(armorType == 0) {
|
||||
GL11.glTranslated(0, -1, 0);
|
||||
}
|
||||
setupRenderInv();
|
||||
}
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_dnt, armorType,
|
||||
ResourceManager.dnt_helmet, ResourceManager.dnt_chest, ResourceManager.dnt_arm, ResourceManager.dnt_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,10 @@ import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorDesh;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -12,9 +15,11 @@ import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorDesh extends ArmorFSBFueled {
|
||||
public class ArmorDesh extends ArmorFSBFueled implements IItemRendererProvider {
|
||||
|
||||
public ArmorDesh(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) {
|
||||
super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain);
|
||||
@ -44,4 +49,18 @@ public class ArmorDesh extends ArmorFSBFueled {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_steamsuit, armorType,
|
||||
ResourceManager.steamsuit_helmet, ResourceManager.steamsuit_chest, ResourceManager.steamsuit_arm, ResourceManager.steamsuit_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
@ -7,8 +9,11 @@ import com.hbm.handler.threading.PacketThreading;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorDiesel;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -18,11 +23,13 @@ import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorDiesel extends ArmorFSBFueled {
|
||||
public class ArmorDiesel extends ArmorFSBFueled implements IItemRendererProvider {
|
||||
|
||||
public ArmorDiesel(ArmorMaterial material, int slot, String texture, FluidType fuelType, int maxFuel, int fillRate, int consumption, int drain) {
|
||||
super(material, slot, texture, fuelType, maxFuel, fillRate, consumption, drain);
|
||||
@ -69,4 +76,22 @@ public class ArmorDiesel extends ArmorFSBFueled {
|
||||
public boolean acceptsFluid(FluidType type, ItemStack stack) {
|
||||
return type == Fluids.DIESEL || type == Fluids.DIESEL_CRACK;
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
if(armorType == 0) {
|
||||
GL11.glTranslated(0, 0.5, 0);
|
||||
GL11.glScaled(0.875, 0.875, 0.875);
|
||||
}
|
||||
renderStandard(ResourceManager.armor_dieselsuit, armorType,
|
||||
ResourceManager.dieselsuit_helmet, ResourceManager.dieselsuit_chest, ResourceManager.dieselsuit_arm, ResourceManager.dieselsuit_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,14 +1,21 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorDigamma;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorDigamma extends ArmorFSBPowered {
|
||||
public class ArmorDigamma extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorDigamma(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -30,4 +37,24 @@ public class ArmorDigamma extends ArmorFSBPowered {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
if(armorType == 0) {
|
||||
GL11.glScaled(0.875, 0.875, 0.875);
|
||||
GL11.glTranslated(0, -2, 0);
|
||||
}
|
||||
setupRenderInv();
|
||||
}
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_fau, armorType,
|
||||
ResourceManager.fau_helmet, ResourceManager.fau_chest, ResourceManager.fau_arm, ResourceManager.fau_leg,
|
||||
"Head", "Body,Cassette", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,23 +3,32 @@ package com.hbm.items.armor;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorEnvsuit;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ArmorEnvsuit extends ArmorFSBPowered {
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class ArmorEnvsuit extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -91,4 +100,32 @@ public class ArmorEnvsuit extends ArmorFSBPowered {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
if(armorType == 0) {
|
||||
GL11.glScaled(0.3125, 0.3125, 0.3125);
|
||||
GL11.glTranslated(0, 1, 0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(ResourceManager.envsuit_helmet);
|
||||
ResourceManager.armor_envsuit.renderPart("Helmet");
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glColor3f(1F, 1F, 0.8F);
|
||||
ResourceManager.armor_envsuit.renderPart("Lamps");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
} else {
|
||||
renderStandard(ResourceManager.armor_envsuit, armorType,
|
||||
ResourceManager.envsuit_helmet, ResourceManager.envsuit_chest, ResourceManager.envsuit_arm, ResourceManager.envsuit_leg,
|
||||
"Helmet,Lamps", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot");
|
||||
}
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,9 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.interfaces.NotableComments;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.ShadyUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
@ -39,10 +41,12 @@ import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
|
||||
//Armor with full set bonus
|
||||
@NotableComments
|
||||
public class ArmorFSB extends ItemArmor implements IArmorDisableModel {
|
||||
|
||||
private String texture = "";
|
||||
@ -63,6 +67,7 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel {
|
||||
public ArmorFSB(ArmorMaterial material, int slot, String texture) {
|
||||
super(material, 0, slot);
|
||||
this.texture = texture;
|
||||
this.setTextureName(RefStrings.MODID + ":armor");
|
||||
}
|
||||
|
||||
public ArmorFSB addEffect(PotionEffect effect) {
|
||||
@ -428,4 +433,63 @@ public class ArmorFSB extends ItemArmor implements IArmorDisableModel {
|
||||
|
||||
public void handleAttack(LivingAttackEvent event) { }
|
||||
public void handleHurt(LivingHurtEvent event) { }
|
||||
|
||||
public static void setupRenderInv() {
|
||||
GL11.glTranslated(0, -1.5, 0);
|
||||
GL11.glScaled(3.25, 3.25, 3.25);
|
||||
GL11.glRotated(180, 1, 0, 0);
|
||||
GL11.glRotated(-135, 0, 1, 0);
|
||||
GL11.glRotated(-20, 1, 0, 0);
|
||||
}
|
||||
|
||||
public static void setupRenderNonInv() {
|
||||
GL11.glRotated(180, 1, 0, 0);
|
||||
GL11.glScaled(0.75, 0.75, 0.75);
|
||||
GL11.glRotated(-90, 0, 1, 0);
|
||||
}
|
||||
|
||||
// if it's the same vomit every time, why not make a method that does it for us?
|
||||
public static void renderStandard(IModelCustom model, int armorType,
|
||||
ResourceLocation helmetTex, ResourceLocation chestTex, ResourceLocation armTex, ResourceLocation legTex,
|
||||
String helmet, String chest, String leftArm, String rightArm, String leftLeg, String rightLeg, String leftBoot, String rightBoot) {
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
if(armorType == 0) {
|
||||
GL11.glScaled(0.3125, 0.3125, 0.3125);
|
||||
GL11.glTranslated(0, 1, 0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(helmetTex);
|
||||
for(String s : helmet.split(",")) model.renderPart(s);
|
||||
}
|
||||
if(armorType == 1) {
|
||||
GL11.glScaled(0.225, 0.225, 0.225);
|
||||
GL11.glTranslated(0, -10, 0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(chestTex);
|
||||
for(String s : chest.split(",")) model.renderPart(s);
|
||||
GL11.glTranslated(0, 0, 0.1);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(armTex);
|
||||
for(String s : leftArm.split(",")) model.renderPart(s);
|
||||
for(String s : rightArm.split(",")) model.renderPart(s);
|
||||
}
|
||||
if(armorType == 2) {
|
||||
GL11.glScaled(0.25, 0.25, 0.25);
|
||||
GL11.glTranslated(0, -20, 0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(legTex);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
for(String s : leftLeg.split(",")) model.renderPart(s);
|
||||
GL11.glTranslated(0, 0, 0.1);
|
||||
for(String s : rightLeg.split(",")) model.renderPart(s);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
if(armorType == 3) {
|
||||
GL11.glScaled(0.25, 0.25, 0.25);
|
||||
GL11.glTranslated(0, -22, 0);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(legTex);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
for(String s : leftBoot.split(",")) model.renderPart(s);
|
||||
GL11.glTranslated(0, 0, 0.1);
|
||||
for(String s : rightBoot.split(",")) model.renderPart(s);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
}
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
}
|
||||
|
||||
@ -4,7 +4,10 @@ import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorHEV;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -15,11 +18,13 @@ import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
|
||||
public class ArmorHEV extends ArmorFSBPowered {
|
||||
public class ArmorHEV extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorHEV(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -175,4 +180,17 @@ public class ArmorHEV extends ArmorFSBPowered {
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
||||
}
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_hev, armorType,
|
||||
ResourceManager.hev_helmet, ResourceManager.hev_chest, ResourceManager.hev_arm, ResourceManager.hev_leg,
|
||||
"Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftFoot", "RightFoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,14 +1,21 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorRPA;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorRPA extends ArmorFSBPowered {
|
||||
public class ArmorRPA extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorRPA(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
@ -30,4 +37,19 @@ public class ArmorRPA extends ArmorFSBPowered {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
if(armorType == 1) GL11.glTranslated(0, 0.25, 0);
|
||||
renderStandard(ResourceManager.armor_remnant, armorType,
|
||||
ResourceManager.rpa_helmet, ResourceManager.rpa_chest, ResourceManager.rpa_arm, ResourceManager.rpa_leg,
|
||||
"Head", "Body,Fan,Glow", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,6 +26,7 @@ public class ArmorT45 extends ArmorFSBPowered {
|
||||
|
||||
public ArmorT45(ArmorMaterial material, int slot, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, "", maxPower, chargeRate, consumption, drain);
|
||||
this.setCreativeTab(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
52
src/main/java/com/hbm/items/armor/ArmorT51.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorT51;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorT51 extends ArmorFSBPowered implements IItemRendererProvider {
|
||||
|
||||
public ArmorT51(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) {
|
||||
super(material, slot, texture, maxPower, chargeRate, consumption, drain);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
ModelArmorT51[] models;
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
|
||||
|
||||
if(models == null) {
|
||||
models = new ModelArmorT51[4];
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
models[i] = new ModelArmorT51(i);
|
||||
}
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() { setupRenderInv(); }
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_t51, armorType,
|
||||
ResourceManager.t51_helmet, ResourceManager.t51_chest, ResourceManager.t51_arm, ResourceManager.t51_leg,
|
||||
"Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
@ -1,14 +1,21 @@
|
||||
package com.hbm.items.armor;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorTaurun;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ArmorTaurun extends ArmorFSB {
|
||||
public class ArmorTaurun extends ArmorFSB implements IItemRendererProvider {
|
||||
|
||||
public ArmorTaurun(ArmorMaterial material, int slot, String texture) {
|
||||
super(material, slot, texture);
|
||||
@ -31,4 +38,22 @@ public class ArmorTaurun extends ArmorFSB {
|
||||
|
||||
return models[armorSlot];
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
if(armorType == 0) GL11.glTranslated(0, 1, 0);
|
||||
if(armorType == 1) GL11.glTranslated(0, 1.5, 0);
|
||||
setupRenderInv();
|
||||
}
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_taurun, armorType,
|
||||
ResourceManager.taurun_helmet, ResourceManager.taurun_chest, ResourceManager.taurun_arm, ResourceManager.taurun_leg,
|
||||
"Helmet", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,10 +2,15 @@ package com.hbm.items.armor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.extprop.HbmPlayerProps;
|
||||
import com.hbm.handler.ArmorModHandler;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.render.model.ModelArmorTrenchmaster;
|
||||
import com.hbm.render.tileentity.IItemRendererProvider;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@ -13,12 +18,14 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.model.ModelBiped;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import net.minecraftforge.event.entity.living.LivingAttackEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
|
||||
public class ArmorTrenchmaster extends ArmorFSB {
|
||||
public class ArmorTrenchmaster extends ArmorFSB implements IItemRendererProvider {
|
||||
|
||||
public ArmorTrenchmaster(ArmorMaterial material, int slot, String texture) {
|
||||
super(material, slot, texture);
|
||||
@ -102,4 +109,22 @@ public class ArmorTrenchmaster extends ArmorFSB {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override public Item getItemForRenderer() { return this; }
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase( ) {
|
||||
public void renderInventory() {
|
||||
if(armorType == 0) GL11.glTranslated(0, 1, 0);
|
||||
if(armorType == 1) GL11.glTranslated(0, 1.5, 0);
|
||||
setupRenderInv();
|
||||
}
|
||||
public void renderNonInv() { setupRenderNonInv(); }
|
||||
public void renderCommon() {
|
||||
renderStandard(ResourceManager.armor_trenchmaster, armorType,
|
||||
ResourceManager.trenchmaster_helmet, ResourceManager.trenchmaster_chest, ResourceManager.trenchmaster_arm, ResourceManager.trenchmaster_leg,
|
||||
"Helmet,Light", "Chest", "LeftArm", "RightArm", "LeftLeg", "RightLeg", "LeftBoot", "RightBoot");
|
||||
}};
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,6 @@ import com.hbm.interfaces.Spaghetti;
|
||||
import com.hbm.inventory.OreDictManager.DictFrame;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemBattery;
|
||||
import com.hbm.items.machine.ItemBreedingRod.BreedingRodType;
|
||||
import com.hbm.items.machine.ItemCircuit.EnumCircuitType;
|
||||
|
||||
@ -407,21 +406,6 @@ public class ItemStarterKit extends Item {
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.missile_emp, 1));
|
||||
}
|
||||
|
||||
if(this == ModItems.t45_kit)
|
||||
{
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_helmet, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_plate, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_legs, 1));
|
||||
player.inventory.addItemStackToInventory(new ItemStack(ModItems.t45_boots, 1));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
player.inventory.addItemStackToInventory(ItemBattery.getFullBattery(ModItems.fusion_core));
|
||||
}
|
||||
|
||||
if(this == ModItems.stealth_boy)
|
||||
{
|
||||
player.addPotionEffect(new PotionEffect(Potion.invisibility.id, 30 * 20, 1, true));
|
||||
@ -470,7 +454,6 @@ public class ItemStarterKit extends Item {
|
||||
this == ModItems.prototype_kit ||
|
||||
this == ModItems.fleija_kit ||
|
||||
this == ModItems.solinium_kit ||
|
||||
this == ModItems.t45_kit ||
|
||||
this == ModItems.grenade_kit ||
|
||||
this == ModItems.missile_kit ||
|
||||
this == ModItems.multi_kit) {
|
||||
|
||||
@ -4,29 +4,36 @@ import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.Set;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.hbm.inventory.gui.GUIScreenToolAbility;
|
||||
import com.hbm.items.IItemControlReceiver;
|
||||
import com.hbm.items.IKeybindReceiver;
|
||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.ClientConfig;
|
||||
import com.hbm.handler.HbmKeybinds.EnumKeybind;
|
||||
import com.hbm.handler.ability.AvailableAbilities;
|
||||
import com.hbm.handler.ability.IBaseAbility;
|
||||
import com.hbm.handler.ability.IToolAreaAbility;
|
||||
import com.hbm.handler.ability.IToolHarvestAbility;
|
||||
import com.hbm.handler.ability.ToolPreset;
|
||||
import com.hbm.interfaces.IItemHUD;
|
||||
import com.hbm.inventory.gui.GUIScreenToolAbility;
|
||||
import com.hbm.items.IItemControlReceiver;
|
||||
import com.hbm.items.IKeybindReceiver;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.toclient.PlayerInformPacket;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.util.Tuple.Pair;
|
||||
|
||||
import api.hbm.item.IDepthRockTool;
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
@ -34,6 +41,10 @@ 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.Minecraft;
|
||||
import net.minecraft.client.gui.Gui;
|
||||
import net.minecraft.client.gui.GuiIngame;
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.enchantment.Enchantment;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
@ -53,12 +64,14 @@ import net.minecraft.network.play.server.S23PacketBlockChange;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
import net.minecraftforge.common.IShearable;
|
||||
import net.minecraftforge.event.world.BlockEvent;
|
||||
|
||||
public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIProvider, IItemControlReceiver, IKeybindReceiver {
|
||||
|
||||
public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIProvider, IItemControlReceiver, IKeybindReceiver, IItemHUD {
|
||||
|
||||
protected boolean isShears = false;
|
||||
protected EnumToolType toolType;
|
||||
protected EnumRarity rarity = EnumRarity.common;
|
||||
@ -69,7 +82,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
protected boolean rockBreaker = false;
|
||||
|
||||
public static enum EnumToolType {
|
||||
|
||||
|
||||
PICKAXE(
|
||||
Sets.newHashSet(new Material[] { Material.iron, Material.anvil, Material.rock, Material.glass }),
|
||||
Sets.newHashSet(new Block[] { Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail })
|
||||
@ -98,7 +111,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
public Set<Material> materials = new HashSet();
|
||||
public Set<Block> blocks = new HashSet();
|
||||
}
|
||||
|
||||
|
||||
public ItemToolAbility setShears() {
|
||||
this.isShears = true;
|
||||
return this;
|
||||
@ -109,7 +122,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
this.damage = damage;
|
||||
this.movement = movement;
|
||||
this.toolType = type;
|
||||
|
||||
|
||||
// hacky workaround, might be good to rethink this entire system
|
||||
if(type == EnumToolType.MINER) {
|
||||
this.setHarvestLevel("pickaxe", material.getHarvestLevel());
|
||||
@ -163,15 +176,15 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
|
||||
World world = player.worldObj;
|
||||
Block block = world.getBlock(x, y, z);
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* The original implementation of this always returned FALSE which uses the vanilla block break code.
|
||||
* This one now returns TRUE when an ability applies and instead relies on breakExtraBlock, which has the minor
|
||||
* issue of only running on the sever, while the client uses the vanilla implementation. breakExtraBlock was only
|
||||
* meant to be used for AoE or vein miner and not for the block that's being mined, hence break EXTRA block.
|
||||
* The consequence was that the server would fail to break keyholes since breakExtraBlock is supposed to exclude
|
||||
* them, while the client happily removes the block, causing a desync.
|
||||
*
|
||||
*
|
||||
* Since keyholes aren't processable and exempt from silk touch anyway, we just default to the vanilla implementation in every case.
|
||||
*/
|
||||
if(block == ModBlocks.stone_keyhole || block == ModBlocks.stone_keyhole_meta) return false;
|
||||
@ -187,7 +200,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
preset.harvestAbility.preHarvestAll(preset.harvestAbilityLevel, world, player);
|
||||
|
||||
boolean skipRef = preset.areaAbility.onDig(preset.areaAbilityLevel, world, x, y, z, player, this);
|
||||
|
||||
|
||||
if(!skipRef) {
|
||||
breakExtraBlock(world, x, y, z, player, x, y, z);
|
||||
}
|
||||
@ -291,7 +304,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
|
||||
Block block = world.getBlock(x, y, z);
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
|
||||
if(!(canHarvestBlock(block, stack) ||
|
||||
canShearBlock(block, stack, world, x, y, z)) ||
|
||||
(block.getBlockHardness(world, x, y, z) == -1.0F && block.getPlayerRelativeBlockHardness(player, world, x, y, z) == 0.0F) ||
|
||||
@ -302,8 +315,8 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
float strength = ForgeHooks.blockStrength(block, player, world, x, y, z);
|
||||
|
||||
if(
|
||||
!ForgeHooks.canHarvestBlock(block, player, meta) ||
|
||||
refStrength / strength > 10f ||
|
||||
!ForgeHooks.canHarvestBlock(block, player, meta) ||
|
||||
refStrength / strength > 10f ||
|
||||
refBlock.getPlayerRelativeBlockHardness(player, world, refX, refY, refZ) < 0
|
||||
)
|
||||
return;
|
||||
@ -320,7 +333,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
|
||||
/** Assumes a canShearBlock check has passed, will most likely crash otherwise! */
|
||||
public static void shearBlock(World world, int x, int y, int z, Block block, EntityPlayer player) {
|
||||
|
||||
|
||||
ItemStack held = player.getHeldItem();
|
||||
|
||||
IShearable target = (IShearable) block;
|
||||
@ -369,7 +382,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
player.destroyCurrentEquippedItem();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(removedByPlayer && canHarvest) {
|
||||
try {
|
||||
blockCaptureDrops.invoke(block, true);
|
||||
@ -384,7 +397,7 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
} catch (InvocationTargetException e) {
|
||||
// Might be possible? Not in practice, though
|
||||
MainRegistry.logger.error("Failed to capture drops for block " + block, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -441,9 +454,9 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
|
||||
NBTTagList nbtPresets = nbt.getTagList("abilityPresets", 10);
|
||||
int numPresets = Math.min(nbtPresets.tagCount(), 99);
|
||||
|
||||
|
||||
presets = new ArrayList<ToolPreset>(numPresets);
|
||||
|
||||
|
||||
for(int i = 0; i < numPresets; i++) {
|
||||
NBTTagCompound nbtPreset = nbtPresets.getCompoundTagAt(i);
|
||||
ToolPreset preset = new ToolPreset();
|
||||
@ -544,12 +557,12 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
|
||||
@Override
|
||||
public void handleKeybind(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) {
|
||||
|
||||
|
||||
if(keybind == EnumKeybind.ABILITY_CYCLE && state) {
|
||||
|
||||
World world = player.worldObj;
|
||||
if(!canOperate(stack)) return;
|
||||
|
||||
|
||||
Configuration config = getConfiguration(stack);
|
||||
if(config.presets.size() < 2 || world.isRemote) return;
|
||||
|
||||
@ -569,4 +582,40 @@ public class ItemToolAbility extends ItemTool implements IDepthRockTool, IGUIPro
|
||||
public void handleKeybindClient(EntityPlayer player, ItemStack stack, EnumKeybind keybind, boolean state) {
|
||||
if(state) player.openGui(MainRegistry.instance, 0, player.worldObj, 0, 0, 0);
|
||||
}
|
||||
|
||||
private static final Map<IBaseAbility, Pair<Integer, Integer>> abilityGui = new HashMap<>();
|
||||
|
||||
static {
|
||||
abilityGui.put(IToolAreaAbility.RECURSION, new Pair<Integer,Integer>(0, 138));
|
||||
abilityGui.put(IToolAreaAbility.HAMMER, new Pair<Integer,Integer>(16, 138));
|
||||
abilityGui.put(IToolAreaAbility.HAMMER_FLAT, new Pair<Integer,Integer>(32, 138));
|
||||
abilityGui.put(IToolAreaAbility.EXPLOSION, new Pair<Integer,Integer>(48, 138));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderHUD(Pre event, ElementType type, EntityPlayer player, ItemStack stack) {
|
||||
if(type != ElementType.CROSSHAIRS) return;
|
||||
|
||||
Configuration config = getConfiguration(stack);
|
||||
ToolPreset preset = config.getActivePreset();
|
||||
Pair<Integer, Integer> uv = abilityGui.get(preset.areaAbility);
|
||||
|
||||
if(uv == null) return;
|
||||
|
||||
GuiIngame gui = Minecraft.getMinecraft().ingameGUI;
|
||||
int size = 16;
|
||||
int ox = ClientConfig.TOOL_HUD_INDICATOR_X.get();
|
||||
int oy = ClientConfig.TOOL_HUD_INDICATOR_Y.get();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(GUIScreenToolAbility.texture);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR, 1, 0);
|
||||
gui.drawTexturedModalRect(event.resolution.getScaledWidth() / 2 - size - 8 + ox, event.resolution.getScaledHeight() / 2 + 8 + oy, uv.key, uv.value, size, size);
|
||||
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glPopMatrix();
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -237,7 +237,6 @@ public class Library {
|
||||
if(power > maxPower) return maxPower;
|
||||
|
||||
if(slots[index] != null && slots[index].getItem() == ModItems.battery_creative) return 0;
|
||||
if(slots[index] != null && slots[index].getItem() == ModItems.fusion_core_infinite) return 0;
|
||||
|
||||
if(slots[index] != null && slots[index].getItem() instanceof IBatteryItem) {
|
||||
|
||||
@ -259,7 +258,6 @@ public class Library {
|
||||
public static long chargeTEFromItems(ItemStack[] slots, int index, long power, long maxPower) {
|
||||
|
||||
if(slots[index] != null && slots[index].getItem() == ModItems.battery_creative) return maxPower;
|
||||
if(slots[index] != null && slots[index].getItem() == ModItems.fusion_core_infinite) return maxPower;
|
||||
|
||||
if(slots[index] != null && slots[index].getItem() instanceof IBatteryItem) {
|
||||
|
||||
|
||||
@ -449,6 +449,18 @@ public class ClientProxy extends ServerProxy {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// same crap but for items directly because why invent a new solution when this shit works just fine
|
||||
Iterator itItems = Item.itemRegistry.iterator();
|
||||
while(itItems.hasNext()) {
|
||||
Object o = itItems.next();
|
||||
if(o instanceof IItemRendererProvider) {
|
||||
IItemRendererProvider prov = (IItemRendererProvider) o;
|
||||
for(Item item : prov.getItemsForRenderer()) {
|
||||
MinecraftForgeClient.registerItemRenderer(item, prov.getRenderer());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//universal JSON translated items
|
||||
double[] rtp = new double[] {0, 180, -90};
|
||||
|
||||
@ -1428,6 +1428,8 @@ public class MainRegistry {
|
||||
ignoreMappings.add("hbm:item.mp_f_20");
|
||||
ignoreMappings.add("hbm:item.mp_thruster_10_kerosene_tec");
|
||||
ignoreMappings.add("hbm:item.mp_thruster_15_kerosene_tec");
|
||||
ignoreMappings.add("hbm:item.t45_kit");
|
||||
ignoreMappings.add("hbm:item.fusion_core_infinite");
|
||||
|
||||
/// REMAP ///
|
||||
remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses);
|
||||
|
||||
@ -924,26 +924,27 @@ public class ResourceManager {
|
||||
public static final IModelCustom grenade_frag = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_frag.obj"));
|
||||
public static final IModelCustom grenade_aschrab = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_aschrab.obj"));
|
||||
|
||||
public static final IModelCustom armor_bj = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/BJ.obj"));
|
||||
public static final IModelCustom armor_hev = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hev.obj"));
|
||||
public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj"));
|
||||
public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj"));
|
||||
public static final IModelCustom armor_no9 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/no9.obj"));
|
||||
public static final IModelCustom armor_goggles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/goggles.obj"));
|
||||
public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj"));
|
||||
public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj"));
|
||||
public static final IModelCustom armor_steamsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/steamsuit.obj"));
|
||||
public static final IModelCustom armor_dieselsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bnuuy.obj"));
|
||||
public static final IModelCustom armor_remnant = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/remnant.obj"));
|
||||
public static final IModelCustom armor_bismuth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bismuth.obj"));
|
||||
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj"));
|
||||
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj"));
|
||||
public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj"));
|
||||
public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj"));
|
||||
public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj"));
|
||||
public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj"));
|
||||
public static final IModelCustom armor_taurun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/taurun.obj"));
|
||||
public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj"));
|
||||
public static final IModelCustom armor_bj = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/BJ.obj")).asVBO();
|
||||
public static final IModelCustom armor_hev = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hev.obj")).asVBO();
|
||||
public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj")).asVBO();
|
||||
public static final IModelCustom armor_t51 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/t51.obj")).asVBO();
|
||||
public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj")).asVBO();
|
||||
public static final IModelCustom armor_no9 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/no9.obj")).asVBO();
|
||||
public static final IModelCustom armor_goggles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/goggles.obj")).asVBO();
|
||||
public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj")).asVBO();
|
||||
public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj")).asVBO();
|
||||
public static final IModelCustom armor_steamsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/steamsuit.obj")).asVBO();
|
||||
public static final IModelCustom armor_dieselsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bnuuy.obj")).asVBO();
|
||||
public static final IModelCustom armor_remnant = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/remnant.obj")).asVBO();
|
||||
public static final IModelCustom armor_bismuth = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/bismuth.obj")).asVBO();
|
||||
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj")).asVBO();
|
||||
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")).asVBO();
|
||||
public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj")).asVBO();
|
||||
public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj")).asVBO();
|
||||
public static final IModelCustom player_manly_af = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj"), false).asVBO();
|
||||
public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")).asVBO();
|
||||
public static final IModelCustom armor_taurun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/taurun.obj")).asVBO();
|
||||
public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj")).asVBO();
|
||||
|
||||
////Texture Items
|
||||
|
||||
@ -1087,6 +1088,11 @@ public class ResourceManager {
|
||||
public static final ResourceLocation ajro_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/ajro_chest.png");
|
||||
public static final ResourceLocation ajro_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/ajro_arm.png");
|
||||
|
||||
public static final ResourceLocation t51_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_helmet.png");
|
||||
public static final ResourceLocation t51_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_leg.png");
|
||||
public static final ResourceLocation t51_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_chest.png");
|
||||
public static final ResourceLocation t51_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/t51_arm.png");
|
||||
|
||||
public static final ResourceLocation fau_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_helmet.png");
|
||||
public static final ResourceLocation fau_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_leg.png");
|
||||
public static final ResourceLocation fau_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/fau_chest.png");
|
||||
|
||||
@ -84,6 +84,8 @@ public class StructureManager {
|
||||
public static final NBTStructure plane2 = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed_plane_2.nbt"));
|
||||
|
||||
public static final NBTStructure factory = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/factory.nbt"));
|
||||
public static final NBTStructure crane = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crane.nbt"));
|
||||
public static final NBTStructure broadcasting_tower = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/broadcasting_tower.nbt"));
|
||||
|
||||
public static final NBTStructure spire = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/spire.nbt"));
|
||||
|
||||
|
||||
@ -43,8 +43,8 @@ public class ModelArmorDigamma extends ModelArmorBase {
|
||||
if(this.type == 1) {
|
||||
bindTexture(ResourceManager.fau_chest);
|
||||
this.body.render(scaleFactor);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
OpenGlHelper.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
|
||||
bindTexture(ResourceManager.fau_cassette);
|
||||
this.cassette.render(scaleFactor);
|
||||
bindTexture(ResourceManager.fau_arm);
|
||||
|
||||
59
src/main/java/com/hbm/render/model/ModelArmorT51.java
Normal file
@ -0,0 +1,59 @@
|
||||
package com.hbm.render.model;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.loader.ModelRendererObj;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
|
||||
public class ModelArmorT51 extends ModelArmorBase {
|
||||
|
||||
public ModelArmorT51(int type) {
|
||||
super(type);
|
||||
|
||||
this.head = new ModelRendererObj(ResourceManager.armor_t51, "Helmet");
|
||||
this.body = new ModelRendererObj(ResourceManager.armor_t51, "Chest");
|
||||
this.leftArm = new ModelRendererObj(ResourceManager.armor_t51, "LeftArm").setRotationPoint(5.0F, 2.0F, 0.0F);
|
||||
this.rightArm = new ModelRendererObj(ResourceManager.armor_t51, "RightArm").setRotationPoint(-5.0F, 2.0F, 0.0F);
|
||||
this.leftLeg = new ModelRendererObj(ResourceManager.armor_t51, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F);
|
||||
this.rightLeg = new ModelRendererObj(ResourceManager.armor_t51, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F);
|
||||
this.leftFoot = new ModelRendererObj(ResourceManager.armor_t51, "LeftBoot").setRotationPoint(1.9F, 12.0F, 0.0F);
|
||||
this.rightFoot = new ModelRendererObj(ResourceManager.armor_t51, "RightBoot").setRotationPoint(-1.9F, 12.0F, 0.0F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor) {
|
||||
|
||||
super.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scaleFactor, entity);
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
if(this.type == 0) {
|
||||
bindTexture(ResourceManager.t51_helmet);
|
||||
this.head.render(scaleFactor);
|
||||
}
|
||||
if(this.type == 1) {
|
||||
bindTexture(ResourceManager.t51_chest);
|
||||
this.body.render(scaleFactor);
|
||||
|
||||
bindTexture(ResourceManager.t51_arm);
|
||||
this.leftArm.render(scaleFactor);
|
||||
this.rightArm.render(scaleFactor);
|
||||
}
|
||||
if(this.type == 2) {
|
||||
bindTexture(ResourceManager.t51_leg);
|
||||
this.leftLeg.render(scaleFactor);
|
||||
this.rightLeg.render(scaleFactor);
|
||||
}
|
||||
if(this.type == 3) {
|
||||
bindTexture(ResourceManager.t51_leg);
|
||||
this.leftFoot.render(scaleFactor);
|
||||
this.rightFoot.render(scaleFactor);
|
||||
}
|
||||
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
@ -19,6 +19,7 @@ import com.hbm.inventory.material.NTMMaterial;
|
||||
import com.hbm.inventory.recipes.CrucibleRecipes;
|
||||
import com.hbm.inventory.recipes.CrucibleRecipes.CrucibleRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.toclient.AuxParticlePacketNT;
|
||||
import com.hbm.tileentity.IConfigurableMachine;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
@ -224,6 +225,24 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
|
||||
/* sync */
|
||||
this.networkPackNT(25);
|
||||
} else {
|
||||
|
||||
if(!this.recipeStack.isEmpty() || !this.wasteStack.isEmpty()) {
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 10 == 0) {
|
||||
NBTTagCompound fx = new NBTTagCompound();
|
||||
fx.setString("type", "tower");
|
||||
fx.setFloat("lift", 10F);
|
||||
fx.setFloat("base", 0.75F);
|
||||
fx.setFloat("max", 3.5F);
|
||||
fx.setInteger("life", 100 + worldObj.rand.nextInt(20));
|
||||
fx.setInteger("color",0x202020);
|
||||
fx.setDouble("posX", xCoord + 0.5);
|
||||
fx.setDouble("posY", yCoord + 1);
|
||||
fx.setDouble("posZ", zCoord + 0.5);
|
||||
MainRegistry.proxy.effectNT(fx);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,12 +25,10 @@ import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.util.*;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
@ -631,6 +629,15 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
|
||||
TileEntityRBMKOutgasser irradiationChannel = (TileEntityRBMKOutgasser)te;
|
||||
data_table.put("fluxProgress", irradiationChannel.progress);
|
||||
data_table.put("requiredFlux", irradiationChannel.duration);
|
||||
ItemStack input = irradiationChannel.getStackInSlot(0);
|
||||
if (input != null){
|
||||
data_table.put("craftingName", input.getUnlocalizedName());
|
||||
data_table.put("craftingNumber", input.stackSize);
|
||||
}
|
||||
else {
|
||||
data_table.put("craftingName", "");
|
||||
data_table.put("craftingNumber", 0);
|
||||
}
|
||||
}
|
||||
|
||||
if(te instanceof TileEntityRBMKHeater){
|
||||
@ -760,6 +767,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] pressAZ5(Context context, Arguments args) {
|
||||
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5,"hbm:block.shutdown",1.0F, 1.0F);
|
||||
boolean hasRods = false;
|
||||
for(int i = -7; i <= 7; i++) {
|
||||
for(int j = -7; j <= 7; j++) {
|
||||
|
||||
@ -46,26 +46,26 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
public String getName() {
|
||||
return "container.rbmkOutgasser";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
|
||||
if(!canProcess()) {
|
||||
this.progress = 0;
|
||||
}
|
||||
|
||||
|
||||
for(DirPos pos : getOutputPos()) {
|
||||
if(this.gas.getFill() > 0) this.sendFluid(gas, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
super.updateEntity();
|
||||
}
|
||||
|
||||
|
||||
protected DirPos[] getOutputPos() {
|
||||
|
||||
|
||||
if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.rbmk_loader) {
|
||||
return new DirPos[] {
|
||||
new DirPos(this.xCoord, this.yCoord + RBMKDials.getColumnHeight(worldObj) + 1, this.zCoord, Library.POS_Y),
|
||||
@ -94,30 +94,30 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
|
||||
@Override
|
||||
public void receiveFlux(NeutronStream stream) {
|
||||
|
||||
|
||||
if(canProcess()) {
|
||||
|
||||
double efficiency = Math.min(1 - stream.fluxRatio * 0.8, 1);
|
||||
|
||||
progress += stream.fluxQuantity * efficiency * RBMKDials.getOutgasserMod(worldObj);
|
||||
|
||||
|
||||
if(progress > duration) {
|
||||
process();
|
||||
this.markDirty();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public boolean canProcess() {
|
||||
|
||||
|
||||
if(slots[0] == null)
|
||||
return false;
|
||||
|
||||
|
||||
Pair<ItemStack, FluidStack> output = OutgasserRecipes.getOutput(slots[0]);
|
||||
|
||||
|
||||
if(output == null)
|
||||
return false;
|
||||
|
||||
|
||||
FluidStack fluid = output.getValue();
|
||||
|
||||
if(fluid != null) {
|
||||
@ -125,27 +125,27 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
gas.setTankType(fluid.type);
|
||||
if(gas.getFill() + fluid.fill > gas.getMaxFill()) return false;
|
||||
}
|
||||
|
||||
|
||||
ItemStack out = output.getKey();
|
||||
|
||||
|
||||
if(slots[1] == null || out == null)
|
||||
return true;
|
||||
|
||||
|
||||
return slots[1].getItem() == out.getItem() && slots[1].getItemDamage() == out.getItemDamage() && slots[1].stackSize + out.stackSize <= slots[1].getMaxStackSize();
|
||||
}
|
||||
|
||||
|
||||
private void process() {
|
||||
|
||||
|
||||
Pair<ItemStack, FluidStack> output = OutgasserRecipes.getOutput(slots[0]);
|
||||
this.decrStackSize(0, 1);
|
||||
this.progress = 0;
|
||||
|
||||
|
||||
if(output.getValue() != null) {
|
||||
gas.setFill(gas.getFill() + output.getValue().fill);
|
||||
}
|
||||
|
||||
|
||||
ItemStack out = output.getKey();
|
||||
|
||||
|
||||
if(out != null) {
|
||||
if(slots[1] == null) {
|
||||
slots[1] = out.copy();
|
||||
@ -154,16 +154,16 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onMelt(int reduce) {
|
||||
|
||||
|
||||
int count = 4 + worldObj.rand.nextInt(2);
|
||||
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
spawnDebris(DebrisType.BLANK);
|
||||
}
|
||||
|
||||
|
||||
super.onMelt(reduce);
|
||||
}
|
||||
|
||||
@ -186,19 +186,19 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
data.setDouble("progress", this.progress);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
|
||||
this.progress = nbt.getDouble("progress");
|
||||
this.gas.readFromNBT(nbt, "gas");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
|
||||
nbt.setDouble("progress", this.progress);
|
||||
this.gas.writeToNBT(nbt, "gas");
|
||||
}
|
||||
@ -260,7 +260,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
public Object[] getGasMax(Context context, Arguments args) {
|
||||
return new Object[] {gas.getMaxFill()};
|
||||
}
|
||||
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getGasType(Context context, Arguments args) {
|
||||
@ -273,6 +273,15 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
return new Object[] {progress};
|
||||
}
|
||||
|
||||
@Callback(direct = true, doc = "Returns the unlocalized name and size of the stack that the outgasser is crafting (the input), or nil, nil if there is no stack")
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getCrafting(Context context, Arguments args) {
|
||||
if (slots[0] == null)
|
||||
return new Object[] { "", 0 };
|
||||
else
|
||||
return new Object[]{slots[0].getUnlocalizedName(), slots[0].stackSize };
|
||||
}
|
||||
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getCoordinates(Context context, Arguments args) {
|
||||
@ -282,7 +291,11 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement
|
||||
@Callback(direct = true)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord};
|
||||
ItemStack input = slots[0];
|
||||
if (input != null)
|
||||
return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord, input.getUnlocalizedName(), input.stackSize };
|
||||
else
|
||||
return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord, "", 0 };
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk;
|
||||
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.ISidedInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -11,7 +12,7 @@ import net.minecraft.nbt.NBTTagList;
|
||||
* Base class for RBMK components that have GUI slots and thus have to handle
|
||||
* those things Yes it's a copy pasted MachineBase class, thank the lack of
|
||||
* multiple inheritance for that
|
||||
*
|
||||
*
|
||||
* @author hbm
|
||||
*
|
||||
*/
|
||||
@ -87,6 +88,15 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUseableByPlayer(EntityPlayer player) {
|
||||
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
|
||||
return false;
|
||||
} else {
|
||||
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack decrStackSize(int slot, int amount) {
|
||||
if(slots[slot] != null) {
|
||||
@ -124,10 +134,10 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
|
||||
if(!diag) {
|
||||
NBTTagList list = nbt.getTagList("items", 10);
|
||||
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++) {
|
||||
NBTTagCompound nbt1 = list.getCompoundTagAt(i);
|
||||
byte b0 = nbt1.getByte("slot");
|
||||
@ -143,10 +153,10 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
|
||||
if(!diag) {
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
|
||||
for(int i = 0; i < slots.length; i++) {
|
||||
if(slots[i] != null) {
|
||||
NBTTagCompound nbt1 = new NBTTagCompound();
|
||||
@ -156,7 +166,7 @@ public abstract class TileEntityRBMKSlottedBase extends TileEntityRBMKActiveBase
|
||||
}
|
||||
}
|
||||
nbt.setTag("items", list);
|
||||
|
||||
|
||||
if (customName != null) {
|
||||
nbt.setString("name", customName);
|
||||
}
|
||||
|
||||
@ -51,7 +51,8 @@ public class ArmorUtil {
|
||||
ArmorRegistry.registerHazard(ModItems.hazmat_helmet_grey, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.hazmat_paa_helmet, HazardClass.LIGHT, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.liquidator_helmet, HazardClass.LIGHT, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.t45_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.t51_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.ajr_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.ajro_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND);
|
||||
ArmorRegistry.registerHazard(ModItems.steamsuit_helmet, HazardClass.PARTICLE_COARSE, HazardClass.PARTICLE_FINE, HazardClass.GAS_LUNG, HazardClass.BACTERIA, HazardClass.GAS_BLISTERING, HazardClass.GAS_MONOXIDE, HazardClass.LIGHT, HazardClass.SAND);
|
||||
|
||||
@ -165,6 +165,12 @@ public class DamageResistanceHandler {
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.t51_helmet, ModItems.t51_plate, ModItems.t51_legs, ModItems.t51_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PHYSICAL, 2F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.35F)
|
||||
.addCategory(CATEGORY_EXPLOSION, 5F, 0.25F)
|
||||
.addExact(DamageSource.fall.damageType, 0F, 1F)
|
||||
.setOther(0F, 0.1F));
|
||||
registerSet(ModItems.ajr_helmet, ModItems.ajr_plate, ModItems.ajr_legs, ModItems.ajr_boots, new ResistanceStats()
|
||||
.addCategory(CATEGORY_PHYSICAL, 4F, 0.15F)
|
||||
.addCategory(CATEGORY_FIRE, 0.5F, 0.35F)
|
||||
|
||||
@ -92,23 +92,23 @@ public class MobUtil {
|
||||
}));
|
||||
|
||||
slotPoolAdv.put(4, createSlotPool(new Object[][]{
|
||||
{ModItems.security_helmet, 10}, {ModItems.t45_helmet, 4}, {ModItems.asbestos_helmet, 12},
|
||||
{ModItems.security_helmet, 10}, {ModItems.t51_helmet, 4}, {ModItems.asbestos_helmet, 12},
|
||||
{ModItems.liquidator_helmet, 4}, {ModItems.no9, 12},
|
||||
{ModItems.hazmat_helmet, 6}
|
||||
}));
|
||||
slotPoolAdv.put(3, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_plate, 4}, {ModItems.security_plate, 8}, {ModItems.asbestos_plate, 12},
|
||||
{ModItems.t45_plate, 4}, {ModItems.hazmat_plate, 6},
|
||||
{ModItems.t51_plate, 4}, {ModItems.hazmat_plate, 6},
|
||||
{ModItems.steel_plate, 8}
|
||||
}));
|
||||
slotPoolAdv.put(2, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_legs, 4}, {ModItems.security_legs, 8}, {ModItems.asbestos_legs, 12},
|
||||
{ModItems.t45_legs, 4}, {ModItems.hazmat_legs, 6},
|
||||
{ModItems.t51_legs, 4}, {ModItems.hazmat_legs, 6},
|
||||
{ModItems.steel_legs, 8}
|
||||
}));
|
||||
slotPoolAdv.put(1, createSlotPool(new Object[][]{
|
||||
{ModItems.liquidator_boots, 4}, {ModItems.security_boots, 8}, {ModItems.asbestos_boots, 12},
|
||||
{ModItems.t45_boots, 4}, {ModItems.hazmat_boots, 6},
|
||||
{ModItems.t51_boots, 4}, {ModItems.hazmat_boots, 6},
|
||||
{ModItems.robes_boots, 8}
|
||||
}));
|
||||
slotPoolAdv.put(0, createSlotPool(new Object[][]{
|
||||
|
||||
@ -129,7 +129,7 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("forest_post") {{
|
||||
canSpawn = biome -> biome.heightVariation <= 0.3F;
|
||||
structure = new JigsawPiece("forest_post", StructureManager.forest_post, -9);
|
||||
structure = new JigsawPiece("forest_post", StructureManager.forest_post, -10);
|
||||
spawnWeight = StructureConfig.forestPostSpawnWeight;
|
||||
}});
|
||||
|
||||
@ -145,6 +145,18 @@ public class NTMWorldGenerator implements IWorldGenerator {
|
||||
spawnWeight = StructureConfig.factorySpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("crane") {{
|
||||
canSpawn = flatbiomes::contains;
|
||||
structure = new JigsawPiece("crane", StructureManager.crane, -9);
|
||||
spawnWeight = StructureConfig.craneSpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("broadcaster_tower") {{
|
||||
canSpawn = flatbiomes::contains;
|
||||
structure = new JigsawPiece("broadcaster_tower", StructureManager.broadcasting_tower, -9);
|
||||
spawnWeight = StructureConfig.broadcastingTowerSpawnWeight;
|
||||
}});
|
||||
|
||||
NBTStructure.registerStructure(0, new SpawnCondition("plane1") {{
|
||||
canSpawn = biome -> biome.heightVariation <= 0.3F;
|
||||
structure = new JigsawPiece("crashed_plane_1", StructureManager.plane1, -5);
|
||||
|
||||
@ -116,6 +116,40 @@ public class LogicBlockActions {
|
||||
// world.setBlock(x, y, z, ModBlocks.block_steel); this is useless
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> COLLAPSE_ROOF_RAD_10 = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
|
||||
if(tile.phase == 0) return;
|
||||
|
||||
int r = 8;
|
||||
int r2 = r * r;
|
||||
int r22 = r2 / 2;
|
||||
|
||||
for (int xx = -r; xx < r; xx++) {
|
||||
int X = xx + x;
|
||||
int XX = xx * xx;
|
||||
for (int yy = -r; yy < r; yy++) {
|
||||
int Y = yy + y;
|
||||
int YY = XX + yy * yy;
|
||||
for (int zz = -r; zz < r; zz++) {
|
||||
int Z = zz + z;
|
||||
int ZZ = YY + zz * zz;
|
||||
if (ZZ < r22) {
|
||||
|
||||
if (world.getBlock(X, Y, Z).getExplosionResistance(null) <= 70) {
|
||||
EntityFallingBlockNT entityfallingblock = new EntityFallingBlockNT(world, X + 0.5, Y + 0.5, Z + 0.5, world.getBlock(X, Y, Z), world.getBlockMetadata(X, Y, Z));
|
||||
world.spawnEntityInWorld(entityfallingblock);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
world.setBlock(x, y, z, Blocks.air);
|
||||
};
|
||||
|
||||
public static Consumer<LogicBlock.TileEntityLogicBlock> FODDER_WAVE = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
@ -342,6 +376,7 @@ public class LogicBlockActions {
|
||||
actions.put("FODDER_WAVE", FODDER_WAVE);
|
||||
actions.put("ABERRATOR", PHASE_ABERRATOR);
|
||||
actions.put("COLLAPSE_ROOF_RAD_5", COLLAPSE_ROOF_RAD_5);
|
||||
actions.put("COLLAPSE_ROOF_RAD_10", COLLAPSE_ROOF_RAD_10);
|
||||
actions.put("PUZZLE_TEST", PUZZLE_TEST);
|
||||
actions.put("MISSILE_STRIKE", MISSILE_STRIKE);
|
||||
actions.put("IRRADIATE_ENTITIES_AOE", RAD_CONTAINMENT_SYSTEM);
|
||||
|
||||
@ -43,6 +43,14 @@ public class LogicBlockConditions {
|
||||
return false;
|
||||
};
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> PLAYER_CUBE_3 = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
int y = tile.yCoord;
|
||||
int z = tile.zCoord;
|
||||
return !world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y - 2, z + 1).expand(3, 3, 3)).isEmpty();
|
||||
};
|
||||
|
||||
public static Function<LogicBlock.TileEntityLogicBlock, Boolean> PLAYER_CUBE_5 = (tile) -> {
|
||||
World world = tile.getWorldObj();
|
||||
int x = tile.xCoord;
|
||||
@ -97,6 +105,7 @@ public class LogicBlockConditions {
|
||||
//example conditions
|
||||
conditions.put("EMPTY", EMPTY);
|
||||
conditions.put("ABERRATOR", ABERRATOR);
|
||||
conditions.put("PLAYER_CUBE_3", PLAYER_CUBE_3);
|
||||
conditions.put("PLAYER_CUBE_5", PLAYER_CUBE_5);
|
||||
conditions.put("PLAYER_CUBE_25", PLAYER_CUBE_25);
|
||||
conditions.put("REDSTONE", REDSTONE);
|
||||
|
||||
@ -199,6 +199,12 @@ chem.gasoline=Benzin
|
||||
chem.tarsand=Bitumen aus Teersand
|
||||
chem.meatprocessing=Glyphidflesch-Verarbeitung
|
||||
chem.birkeland=Salpetersäure aus Luft
|
||||
chem.biooilsolidfuel=Festbrennstoff aus Biomasse
|
||||
chem.biosolidfuel=Festbrennstoff aus Öl und Biomasse
|
||||
chem.coallube=Schmiermittel aus Kohleteer
|
||||
chem.heavylube=Schmiermittel aus Schweröl
|
||||
chem.oilelectrodes=Instant-Elektroden (Heizöl)
|
||||
chem.lubeelectrodes=Instant-Elektroden (Schmiermittel)
|
||||
|
||||
chem.ARSENIC=Arsenextraktion
|
||||
chem.ASPHALT=Asphaltherstellung
|
||||
@ -3464,6 +3470,10 @@ item.t45_helmet.name=T45-Powerrüstungshelm
|
||||
item.t45_kit.name=T45-Powerrüstungskit
|
||||
item.t45_legs.name=T45-Powerrüstungsbeinschutz
|
||||
item.t45_plate.name=T45-Powerrüstungsbrustpanzer
|
||||
item.t51_boots.name=T-51b-Powerrüstungsstiefel
|
||||
item.t51_helmet.name=T-51b-Powerrüstungshelm
|
||||
item.t51_legs.name=T-51b-Powerrüstungsbeinschutz
|
||||
item.t51_plate.name=T-51b-Powerrüstungsbrustpanzer
|
||||
item.tank_steel.name=Stahltank
|
||||
item.taurun_boots.name=Taurun-Stiefel
|
||||
item.taurun_helmet.name=Taurun-Helm
|
||||
|
||||
@ -588,6 +588,12 @@ chem.gasoline=Gasoline
|
||||
chem.tarsand=Bitumen from Tar Sand
|
||||
chem.meatprocessing=Glyphid Meat Processing
|
||||
chem.birkeland=Nitric Acid from Air
|
||||
chem.biooilsolidfuel=Solid Fuel from Oil and Biomass
|
||||
chem.biosolidfuel=Solid Fuel from Biomass
|
||||
chem.coallube=Lubricant from Coal Tar Creosote
|
||||
chem.heavylube=Lubricant from Heavy Oil
|
||||
chem.oilelectrodes=Instant Electrodes (Heating Oil)
|
||||
chem.lubeelectrodes=Instant Electrodes (Lubricant)
|
||||
|
||||
chem.ARSENIC=Arsenic Extraction
|
||||
chem.ASPHALT=Asphalt Production
|
||||
@ -4584,6 +4590,10 @@ item.t45_helmet.name=T45 Power Armor Helmet
|
||||
item.t45_kit.name=T45 Power Armor Kit
|
||||
item.t45_legs.name=T45 Power Armor Leggings
|
||||
item.t45_plate.name=T45 Power Armor Chestplate
|
||||
item.t51_boots.name=T-51b Power Armor Boots
|
||||
item.t51_helmet.name=T-51b Power Armor Helmet
|
||||
item.t51_legs.name=T-51b Power Armor Leggings
|
||||
item.t51_plate.name=T-51b Power Armor Chestplate
|
||||
item.tank_steel.name=Steel Tank
|
||||
item.taurun_boots.name=Taurun Boots
|
||||
item.taurun_helmet.name=Taurun Helmet
|
||||
|
||||
3123
src/main/resources/assets/hbm/models/armor/t51.obj
Normal file
BIN
src/main/resources/assets/hbm/structures/broadcasting_tower.nbt
Normal file
BIN
src/main/resources/assets/hbm/structures/crane.nbt
Normal file
BIN
src/main/resources/assets/hbm/textures/armor/base/t51_arm.png
Normal file
|
After Width: | Height: | Size: 1010 B |
BIN
src/main/resources/assets/hbm/textures/armor/base/t51_chest.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
src/main/resources/assets/hbm/textures/armor/base/t51_helmet.png
Normal file
|
After Width: | Height: | Size: 996 B |
BIN
src/main/resources/assets/hbm/textures/armor/base/t51_leg.png
Normal file
|
After Width: | Height: | Size: 851 B |
|
Before Width: | Height: | Size: 502 B After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 1.5 KiB |
BIN
src/main/resources/assets/hbm/textures/armor/t51_helmet.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 380 B After Width: | Height: | Size: 875 B |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.3 KiB |
BIN
src/main/resources/assets/hbm/textures/items/armor.png
Normal file
|
After Width: | Height: | Size: 264 B |
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 256 B |
|
Before Width: | Height: | Size: 153 B After Width: | Height: | Size: 131 B |