Merge remote-tracking branch 'HbmMods/master'
50
changelog
@ -1,27 +1,33 @@
|
||||
## Added
|
||||
* Electrolysis machine
|
||||
* A large machine that can do the chemical plant's electrolysis recipes, as well as crystal processing
|
||||
* Crystals are turned into molten metals as well as byproducts, the metal can be cast using foundry blocks
|
||||
* Processing crystals requires nitric acid and yields more than what the centrifuge would give
|
||||
* Environment suit
|
||||
* An airtight suit for diving with high radiation resistance
|
||||
* Relatively cheap, but protection is comparatively low
|
||||
* Has sprint assist and accelerated diving
|
||||
* Analysis tool
|
||||
* A more universal version of the power net analyzer
|
||||
* Currently only works on fluid networks though
|
||||
* In addition to seeing links and subscribers, the analysis tool also displays subscriber positions as well as a log (up to 50 entries) of what block received how much fluid
|
||||
* This should finally give more insight in the bug that rarely causes fluids to disappear
|
||||
* Leadburster
|
||||
* A 40mm launcher grenade that doesn't explode, instead it attaches itself to a block and starts firing bullets
|
||||
* Fires in circles for 2 seconds before it self-destructs
|
||||
* Congo lake
|
||||
* A 40mm pump-action grenade launcher with a capacity of 4 rounds
|
||||
* Lantern
|
||||
* Cheap and fancy illumination
|
||||
* Will blind glyphids in a small radius
|
||||
* Glyphids don't actually have eyes, just don't think about it too much
|
||||
* Ashpit
|
||||
* An optional part that can be placed under fireboxes and heating ovens
|
||||
* Collects ashes, producing one ash pile for every 10 furnace operations worth of fuel
|
||||
* Ash comes in different types like wood (from planks, logs and saplings), coal (coal, lignite and coke) and generic (everything else)
|
||||
* Ashes can be used as dyes, for making industrial fertilizer, as low-efficiency furnace fuel or for carbon in the crucible
|
||||
* Coal ashes can also be centrifuged, returning the flammable content as unburned coal dust as well as a small amount of boron
|
||||
|
||||
## Changed
|
||||
* Bedrock ores now spawn in the nether
|
||||
* Nether bedrock ores include red phosphorus, quartz and glowstone, all yielding the items directly instead of ores
|
||||
* All current nether bedrock ores are tier 1 and do not require any bore fluid
|
||||
* Custom machines now show their recipes in NEI
|
||||
* All it took was battling NEI's source code for 3 hours and my sanity
|
||||
* The chlorocalcite centrifugation process now requires 8,000mB of sulfuric acid instead of 100mB of water
|
||||
* Mixed chlorocalcite solution now requires flux as a reducing agent
|
||||
* All chlorine producing electrolysis recipes have been moved to the electrolysis machine and can no longer be done in the chemical plant
|
||||
* If only there was a much simpler recipe that may have existed at some point, life could be a dream
|
||||
* Zirconium and lithium are now recognized crucible materials
|
||||
* Glowstone now yields 100mB of chlorine in the combination oven instead of the initial 50mB
|
||||
* Updated polish and chinese localization
|
||||
* Flechettes now get stuck in blocks for a few seconds
|
||||
* NBT kits now display the amount of items in a stack
|
||||
* Removed the special nuclear meteorite
|
||||
|
||||
## Fixed
|
||||
* Fixed custom machines not sending fluid
|
||||
* Fixed custom machine item IO not working beyond the first slot
|
||||
* Fixed the player's arms clipping through the armor model when punching
|
||||
* Fixed thermos craching config hitting before the config is saved, resulting in an empty config the first time the server is launched
|
||||
* Fixed heating oven not visually connecting to exhaust pipes
|
||||
* Fixed loot blocks not correctly rendering items that require multiple render passes
|
||||
* Fixed special meteorites spawning in worldgen
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4683
|
||||
mod_build_number=4690
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
|
||||
|
||||
@ -336,6 +336,9 @@ public class ModBlocks {
|
||||
public static Block lamp_uv_on;
|
||||
public static Block lamp_demon;
|
||||
|
||||
public static Block lantern;
|
||||
public static Block lantern_behemoth;
|
||||
|
||||
public static Block reinforced_stone;
|
||||
public static Block concrete_smooth;
|
||||
public static Block concrete_colored;
|
||||
@ -665,6 +668,7 @@ public class ModBlocks {
|
||||
public static Block heater_oilburner;
|
||||
public static Block heater_electric;
|
||||
public static Block heater_heatex;
|
||||
public static Block machine_ashpit;
|
||||
|
||||
public static Block furnace_iron;
|
||||
public static Block furnace_steel;
|
||||
@ -1546,6 +1550,8 @@ public class ModBlocks {
|
||||
lamp_uv_off = new UVLamp(false).setBlockName("lamp_uv_off").setCreativeTab(MainRegistry.blockTab);
|
||||
lamp_uv_on = new UVLamp(true).setBlockName("lamp_uv_on").setCreativeTab(null);
|
||||
lamp_demon = new DemonLamp().setBlockName("lamp_demon").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_demon");
|
||||
lantern = new BlockLantern().setBlockName("lantern").setStepSound(Block.soundTypeMetal).setCreativeTab(MainRegistry.blockTab).setLightLevel(1F).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
lantern_behemoth = new BlockLanternBehemoth().setBlockName("lantern_behemoth").setStepSound(Block.soundTypeMetal).setCreativeTab(null).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":block_rust");
|
||||
|
||||
reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone");
|
||||
concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete");
|
||||
@ -1555,9 +1561,9 @@ public class ModBlocks {
|
||||
concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos");
|
||||
concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F);
|
||||
concrete_super_broken = new BlockFalling(Material.rock).setBlockName("concrete_super_broken").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":concrete_super_broken");
|
||||
concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side");
|
||||
brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete");
|
||||
brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy");
|
||||
concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side");
|
||||
brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete");
|
||||
brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy");
|
||||
brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(2000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked");
|
||||
brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken");
|
||||
brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked");
|
||||
@ -1811,6 +1817,7 @@ public class ModBlocks {
|
||||
heater_oilburner = new HeaterOilburner().setBlockName("heater_oilburner").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
heater_electric = new HeaterElectric().setBlockName("heater_electric").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
heater_heatex = new HeaterHeatex().setBlockName("heater_heatex").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
machine_ashpit = new MachineAshpit().setBlockName("machine_ashpit").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("stonebrick");
|
||||
|
||||
furnace_iron = new FurnaceIron().setBlockName("furnace_iron").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_aluminium");
|
||||
furnace_steel = new FurnaceSteel().setBlockName("furnace_steel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
@ -2697,6 +2704,8 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(lamp_uv_off, lamp_uv_off.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(lamp_uv_on, lamp_uv_on.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(lamp_demon, lamp_demon.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(lantern, lantern.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(lantern_behemoth, lantern_behemoth.getUnlocalizedName());
|
||||
|
||||
//Reinforced Blocks
|
||||
GameRegistry.registerBlock(asphalt, ItemBlockBlastInfo.class, asphalt.getUnlocalizedName());
|
||||
@ -3059,6 +3068,7 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(machine_epress, machine_epress.getUnlocalizedName());
|
||||
register(heater_firebox);
|
||||
register(heater_oven);
|
||||
register(machine_ashpit);
|
||||
register(heater_oilburner);
|
||||
register(heater_electric);
|
||||
register(heater_heatex);
|
||||
|
||||
31
src/main/java/com/hbm/blocks/generic/BlockLantern.java
Normal file
@ -0,0 +1,31 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.tileentity.deco.TileEntityLantern;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class BlockLantern extends BlockDummyable {
|
||||
|
||||
public BlockLantern() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityLantern();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {4, 0, 0, 0, 0, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.tileentity.IRepairable;
|
||||
import com.hbm.tileentity.deco.TileEntityLanternBehemoth;
|
||||
|
||||
import api.hbm.block.IToolable;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public class BlockLanternBehemoth extends BlockDummyable implements IToolable, ILookOverlay {
|
||||
|
||||
public BlockLanternBehemoth() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityLanternBehemoth();
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemDropped(int i, Random rand, int j) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {4, 0, 0, 0, 0, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
|
||||
|
||||
if(tool != ToolType.TORCH) return false;
|
||||
return IRepairable.tryRepairMultiblock(world, x, y, z, this, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
IRepairable.addGenericOverlay(event, world, x, y, z, this);
|
||||
}
|
||||
}
|
||||
@ -23,7 +23,7 @@ public class HeaterOven extends BlockDummyable implements ITooltipProvider {
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
|
||||
if(meta >= 12) return new TileEntityHeaterOven();
|
||||
return new TileEntityProxyCombo(true, false, false);
|
||||
return new TileEntityProxyCombo().inventory().fluid();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
47
src/main/java/com/hbm/blocks/machine/MachineAshpit.java
Normal file
@ -0,0 +1,47 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ITooltipProvider;
|
||||
import com.hbm.tileentity.TileEntityProxyCombo;
|
||||
import com.hbm.tileentity.machine.TileEntityAshpit;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class MachineAshpit extends BlockDummyable implements ITooltipProvider {
|
||||
|
||||
public MachineAshpit() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
if(meta >= 12) return new TileEntityAshpit();
|
||||
return new TileEntityProxyCombo().inventory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
|
||||
return this.standardOpenBehavior(world, x, y, z, player, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 1, 1, 1, 1};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
this.addStandardInfo(stack, player, list, ext);
|
||||
}
|
||||
}
|
||||
@ -151,33 +151,26 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL
|
||||
this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_fluid_gauge";
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 16)
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTick(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick};
|
||||
public Object[] getTransfer(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 16)
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getSecond(Context context, Arguments args) {
|
||||
return new Object[] {deltaSecond};
|
||||
public Object[] getFluid(Context context, Arguments args) {
|
||||
return new Object[] {getType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 16)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getType(Context context, Arguments args) {
|
||||
return new Object[] {I18nUtil.resolveKey(getType().getUnlocalizedName())};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 16)
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {deltaTick, deltaSecond, I18nUtil.resolveKey(getType().getUnlocalizedName()), xCoord, yCoord, zCoord};
|
||||
return new Object[] {deltaTick, deltaSecond, getType().getName(), xCoord, yCoord, zCoord};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,8 +63,9 @@ public class PowderRecipes {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 8), new Object[] { PB.dust(), S.dust(), KEY_SAND });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 12), new Object[] { CA.dust(), KEY_SAND });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_flux, 16), new Object[] { BORAX.dust(), KEY_SAND });
|
||||
|
||||
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { CA.dust(), P_RED.dust(), KNO.dust(), S.dust() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_fertilizer, 4), new Object[] { ANY_ASH.any(), P_RED.dust(), KNO.dust(), S.dust() });
|
||||
|
||||
if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_advanced_alloy, 4), new Object[] { REDSTONE.dust(), IRON.dust(), COAL.dust(), CU.dust() });
|
||||
|
||||
@ -129,6 +129,7 @@ public class ToolRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mirror_tool), new Object[] { " A ", " IA", "I ", 'A', AL.ingot(), 'I', IRON.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.rbmk_tool), new Object[] { " A ", " IA", "I ", 'A', PB.ingot(), 'I', IRON.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.power_net_tool), new Object[] { "WRW", " I ", " B ", 'W', ModItems.wire_red_copper, 'R', REDSTONE.dust(), 'I', IRON.ingot(), 'B', ModItems.battery_su });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.analysis_tool), new Object[] { " G", " S ", "S ", 'G', KEY_ANYPANE, 'S', STEEL.ingot() });
|
||||
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.kit_toolbox_empty), new Object[] { "CCC", "CIC", 'C', CU.plate(), 'I', IRON.ingot() });
|
||||
|
||||
|
||||
@ -75,6 +75,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_karl, 1), new Object[] { "SSW", " MW", 'S', ModItems.hull_small_steel, 'W', ALLOY.plate(), 'M', ModItems.mechanism_launcher_2 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "SSS", "SSS", "CM ", 'S', ModItems.hull_small_steel, 'C', ModItems.circuit_targeting_tier3, 'M', ModItems.mechanism_launcher_2 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_hk69, 1), new Object[] { "SSI", " MB", 'S', ModItems.hull_small_steel, 'I', IRON.ingot(), 'M', ModItems.mechanism_launcher_1, 'B', ModItems.bolt_tungsten });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "HHR", "WLW", 'H', ModItems.hull_small_aluminium, 'R', ModItems.mechanism_rifle_1, 'W', KEY_LOG, 'L', ModItems.mechanism_launcher_1 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "SSW", "CMW", 'S', STEEL.plate(), 'W', TI.plate(), 'C', ModItems.circuit_red_copper, 'M', ModItems.mechanism_launcher_2 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_stinger_rocket, 4), new Object[] { "SS ", "STI", " IR", 'S', STEEL.plate(), 'T', Item.getItemFromBlock(Blocks.tnt), 'I', AL.plate(), 'R', REDSTONE.dust() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_revolver, 1), new Object[] { "SSM", " RW", 'S', STEEL.plate(), 'W', KEY_PLANKS, 'R', ModItems.wire_aluminium, 'M', ModItems.mechanism_revolver_1 });
|
||||
@ -261,6 +262,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(2, AmmoGrenade.NUCLEAR), new Object[] { " P ", "GIG", " P ", 'G', ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.HE), 'I', ModItems.neutron_reflector, 'P', PU239.nugget() });
|
||||
CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.FINNED), new Object[] { "G", "R", 'G', Items.feather, 'R', ModItems.ammo_grenade });
|
||||
CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.KAMPF), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_grenade });
|
||||
CraftingManager.addRecipeAuto(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER), new Object[] { "LCL", "CHC", "LML", 'L', ModItems.pellet_buckshot, 'C', ANY_SMOKELESS.dust(), 'H', ModItems.hull_small_aluminium, 'M', ModItems.motor });
|
||||
|
||||
//240mm Shells
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_shell, 4), new Object[] { " T ", "GHG", "CCC", 'T', ModBlocks.tnt, 'G', Items.gunpowder, 'H', ModItems.hull_small_steel, 'C', CU.ingot() });
|
||||
|
||||
@ -19,6 +19,7 @@ import net.minecraft.entity.monster.EntityMob;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
@ -68,6 +69,7 @@ public class EntityGlyphid extends EntityMob {
|
||||
|
||||
@Override
|
||||
protected Entity findPlayerToAttack() {
|
||||
if(this.isPotionActive(Potion.blindness)) return null;
|
||||
EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D);
|
||||
return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null;
|
||||
}
|
||||
@ -75,11 +77,18 @@ public class EntityGlyphid extends EntityMob {
|
||||
@Override
|
||||
protected void updateEntityActionState() {
|
||||
super.updateEntityActionState();
|
||||
|
||||
// hell yeah!!
|
||||
if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) {
|
||||
this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true));
|
||||
|
||||
if(this.isPotionActive(Potion.blindness)) {
|
||||
this.entityToAttack = null;
|
||||
this.setPathToEntity(null);
|
||||
} else {
|
||||
|
||||
// hell yeah!!
|
||||
if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) {
|
||||
this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean useExtendedTargeting() {
|
||||
|
||||
@ -166,6 +166,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
super.entityInit();
|
||||
//style
|
||||
this.dataWatcher.addObject(16, Byte.valueOf((byte) 0));
|
||||
//trail
|
||||
@ -251,11 +252,11 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
|
||||
boolean hRic = rand.nextInt(100) < config.HBRC;
|
||||
boolean doesRic = config.doesRicochet || hRic;
|
||||
boolean doesRic = config.doesRicochet && hRic;
|
||||
|
||||
if(!config.isSpectral && !doesRic) {
|
||||
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ);
|
||||
this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit);
|
||||
}
|
||||
|
||||
if(doesRic) {
|
||||
@ -302,7 +303,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
} else {
|
||||
if(!worldObj.isRemote) {
|
||||
this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
onBlockImpact(mop.blockX, mop.blockY, mop.blockZ);
|
||||
onBlockImpact(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit);
|
||||
}
|
||||
}
|
||||
|
||||
@ -375,13 +376,13 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
}
|
||||
|
||||
//for when a bullet dies by hitting a block
|
||||
private void onBlockImpact(int bX, int bY, int bZ) {
|
||||
private void onBlockImpact(int bX, int bY, int bZ, int sideHit) {
|
||||
|
||||
if(config.bntImpact != null)
|
||||
config.bntImpact.behaveBlockHit(this, bX, bY, bZ);
|
||||
config.bntImpact.behaveBlockHit(this, bX, bY, bZ, sideHit);
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
if(!config.liveAfterImpact && !config.isSpectral && bY > -1) this.setDead();
|
||||
if(!config.liveAfterImpact && !config.isSpectral && bY > -1 && !this.inGround) this.setDead();
|
||||
if(!config.doesPenetrate && bY == -1) this.setDead();
|
||||
}
|
||||
|
||||
@ -472,7 +473,7 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
//for when a bullet dies by hitting an entity
|
||||
private void onEntityImpact(Entity e) {
|
||||
onEntityHurt(e);
|
||||
onBlockImpact(-1, -1, -1);
|
||||
onBlockImpact(-1, -1, -1, -1);
|
||||
|
||||
if(config.bntHit != null)
|
||||
config.bntHit.behaveEntityHit(this, e);
|
||||
@ -582,6 +583,6 @@ public class EntityBulletBaseNT extends EntityThrowableInterp implements IBullet
|
||||
public static interface IBulletHurtBehaviorNT { public void behaveEntityHurt(EntityBulletBaseNT bullet, Entity hit); }
|
||||
public static interface IBulletHitBehaviorNT { public void behaveEntityHit(EntityBulletBaseNT bullet, Entity hit); }
|
||||
public static interface IBulletRicochetBehaviorNT { public void behaveBlockRicochet(EntityBulletBaseNT bullet, int x, int y, int z); }
|
||||
public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z); }
|
||||
public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit); }
|
||||
public static interface IBulletUpdateBehaviorNT { public void behaveUpdate(EntityBulletBaseNT bullet); }
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.entity.projectile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.util.TrackerUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
@ -32,7 +34,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
public int throwableShake;
|
||||
protected EntityLivingBase thrower;
|
||||
private String throwerName;
|
||||
private int ticksInGround;
|
||||
public int ticksInGround;
|
||||
private int ticksInAir;
|
||||
|
||||
public EntityThrowableNT(World world) {
|
||||
@ -41,7 +43,17 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() { }
|
||||
protected void entityInit() {
|
||||
this.dataWatcher.addObject(2, Byte.valueOf((byte)0));
|
||||
}
|
||||
|
||||
public void setStuckIn(int side) {
|
||||
this.dataWatcher.updateObject(2, (byte) side);
|
||||
}
|
||||
|
||||
public int getStuckIn() {
|
||||
return this.dataWatcher.getWatchableObjectByte(2);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
@ -214,10 +226,6 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
}
|
||||
}
|
||||
|
||||
this.posX += this.motionX * motionMult();
|
||||
this.posY += this.motionY * motionMult();
|
||||
this.posZ += this.motionZ * motionMult();
|
||||
|
||||
if(mop != null) {
|
||||
if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ) == Blocks.portal) {
|
||||
this.setInPortal();
|
||||
@ -226,30 +234,37 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
}
|
||||
}
|
||||
|
||||
float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
|
||||
for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) {
|
||||
;
|
||||
if(!this.onGround) {
|
||||
float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ);
|
||||
this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI);
|
||||
|
||||
for(this.rotationPitch = (float) (Math.atan2(this.motionY, (double) hyp) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) {
|
||||
;
|
||||
}
|
||||
|
||||
while(this.rotationPitch - this.prevRotationPitch >= 180.0F) {
|
||||
this.prevRotationPitch += 360.0F;
|
||||
}
|
||||
|
||||
while(this.rotationYaw - this.prevRotationYaw < -180.0F) {
|
||||
this.prevRotationYaw -= 360.0F;
|
||||
}
|
||||
|
||||
while(this.rotationYaw - this.prevRotationYaw >= 180.0F) {
|
||||
this.prevRotationYaw += 360.0F;
|
||||
}
|
||||
|
||||
this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
|
||||
this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
|
||||
}
|
||||
|
||||
while(this.rotationPitch - this.prevRotationPitch >= 180.0F) {
|
||||
this.prevRotationPitch += 360.0F;
|
||||
}
|
||||
|
||||
while(this.rotationYaw - this.prevRotationYaw < -180.0F) {
|
||||
this.prevRotationYaw -= 360.0F;
|
||||
}
|
||||
|
||||
while(this.rotationYaw - this.prevRotationYaw >= 180.0F) {
|
||||
this.prevRotationYaw += 360.0F;
|
||||
}
|
||||
|
||||
this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F;
|
||||
this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F;
|
||||
|
||||
float drag = this.getAirDrag();
|
||||
double gravity = this.getGravityVelocity();
|
||||
|
||||
this.posX += this.motionX * motionMult();
|
||||
this.posY += this.motionY * motionMult();
|
||||
this.posZ += this.motionZ * motionMult();
|
||||
|
||||
if(this.isInWater()) {
|
||||
for(int i = 0; i < 4; ++i) {
|
||||
float f = 0.25F;
|
||||
@ -264,7 +279,6 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
this.motionZ *= (double) drag;
|
||||
this.motionY -= gravity;
|
||||
this.setPosition(this.posX, this.posY, this.posZ);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -280,7 +294,7 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
return 5;
|
||||
}
|
||||
|
||||
public void getStuck(int x, int y, int z) {
|
||||
public void getStuck(int x, int y, int z, int side) {
|
||||
this.stuckBlockX = x;
|
||||
this.stuckBlockY = y;
|
||||
this.stuckBlockZ = z;
|
||||
@ -289,6 +303,8 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile {
|
||||
this.motionX = 0;
|
||||
this.motionY = 0;
|
||||
this.motionZ = 0;
|
||||
this.setStuckIn(side);
|
||||
TrackerUtil.sendTeleport(worldObj, this);
|
||||
}
|
||||
|
||||
public double getGravityVelocity() {
|
||||
|
||||
@ -68,6 +68,7 @@ public class BulletConfigSyncingUtil {
|
||||
public static int GRENADE_PHOSPHORUS = i++;
|
||||
public static int GRENADE_TRACER = i++;
|
||||
public static int GRENADE_KAMPF = i++;
|
||||
public static int GRENADE_LEADBURSTER = i++;
|
||||
|
||||
public static int G12_NORMAL = i++;
|
||||
public static int G12_INCENDIARY = i++;
|
||||
@ -365,6 +366,7 @@ public class BulletConfigSyncingUtil {
|
||||
configSet.put(GRENADE_NUCLEAR, GunGrenadeFactory.getGrenadeNuclearConfig());
|
||||
configSet.put(GRENADE_TRACER, GunGrenadeFactory.getGrenadeTracerConfig());
|
||||
configSet.put(GRENADE_KAMPF, GunGrenadeFactory.getGrenadeKampfConfig());
|
||||
configSet.put(GRENADE_LEADBURSTER, GunGrenadeFactory.getGrenadeLeadbursterConfig());
|
||||
|
||||
configSet.put(G12_NORMAL, Gun12GaugeFactory.get12GaugeConfig());
|
||||
configSet.put(G12_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig());
|
||||
|
||||
@ -140,6 +140,7 @@ public class BulletConfiguration implements Cloneable {
|
||||
public static final int STYLE_BLADE = 15;
|
||||
public static final int STYLE_BARREL = 16;
|
||||
public static final int STYLE_TAU = 17;
|
||||
public static final int STYLE_LEADBURSTER = 18;
|
||||
|
||||
public static final int PLINK_NONE = 0;
|
||||
public static final int PLINK_BULLET = 1;
|
||||
|
||||
@ -51,6 +51,15 @@ public class FuelHandler implements IFuelHandler {
|
||||
}
|
||||
}
|
||||
|
||||
if(fuel.getItem() == ModItems.powder_ash) {
|
||||
int meta = fuel.getItemDamage();
|
||||
switch(meta) {
|
||||
case 0: return single / 2;
|
||||
case 1: return single;
|
||||
case 2: return single / 2;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@ -105,6 +105,7 @@ public class GunConfiguration implements Cloneable {
|
||||
public static final String RSOUND_SHOTGUN = "hbm:weapon.shotgunReload";
|
||||
public static final String RSOUND_LAUNCHER = "hbm:weapon.rpgReload";
|
||||
public static final String RSOUND_GRENADE = "hbm:weapon.hkReload";
|
||||
public static final String RSOUND_GRENADE_NEW = "hbm:weapon.glReload";
|
||||
public static final String RSOUND_FATMAN = "hbm:weapon.fatmanReload";
|
||||
|
||||
public GunConfiguration silenced() {
|
||||
|
||||
@ -146,7 +146,7 @@ public class BulletConfigFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(bullet.worldObj.isRemote)
|
||||
return;
|
||||
@ -310,12 +310,19 @@ public class BulletConfigFactory {
|
||||
}
|
||||
}
|
||||
|
||||
public static void makeFlechette(BulletConfiguration bullet) {
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
bulletnt.getStuck(x, y, z, sideHit);
|
||||
};
|
||||
}
|
||||
|
||||
public static IBulletImpactBehaviorNT getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) {
|
||||
|
||||
IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
List<Entity> hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius));
|
||||
|
||||
@ -357,7 +364,7 @@ public class BulletConfigFactory {
|
||||
IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
List<Entity> hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius));
|
||||
|
||||
|
||||
@ -147,6 +147,7 @@ public class Gun20GaugeFactory {
|
||||
bullet.style = BulletConfiguration.STYLE_FLECHETTE;
|
||||
bullet.HBRC = 2;
|
||||
bullet.LBRC = 95;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.spentCasing = CASING20GAUGE.clone().register("20GaFlech").setColor(0x2847FF, SpentCasing.COLOR_CASE_BRASS);
|
||||
|
||||
|
||||
@ -223,7 +223,7 @@ public class Gun44MagnumFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
|
||||
@ -179,6 +179,7 @@ public class Gun4GaugeFactory {
|
||||
bullet.style = BulletConfiguration.STYLE_FLECHETTE;
|
||||
bullet.HBRC = 2;
|
||||
bullet.LBRC = 95;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.spentCasing = CASING4GAUGE.clone().register("4GaFlech").setColor(0x1537FF, SpentCasing.COLOR_CASE_4GA);
|
||||
|
||||
@ -205,7 +206,7 @@ public class Gun4GaugeFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
@ -251,7 +252,7 @@ public class Gun4GaugeFactory {
|
||||
bullet.trail = 1;
|
||||
bullet.explosive = 0.0F;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
@ -283,7 +284,7 @@ public class Gun4GaugeFactory {
|
||||
bullet.trail = 1;
|
||||
bullet.explosive = 0.0F;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
|
||||
@ -62,7 +62,7 @@ public class Gun50BMGFactory {
|
||||
bullet.leadChance = 20;
|
||||
|
||||
bullet.blockDamage = false;
|
||||
bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false);
|
||||
bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false);
|
||||
|
||||
bullet.spentCasing = CASINGLUNA.clone().register("LunaStock");
|
||||
|
||||
@ -76,7 +76,7 @@ public class Gun50BMGFactory {
|
||||
|
||||
bullet.ammo.meta = 1;
|
||||
bullet.incendiary = 10;
|
||||
bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false);
|
||||
bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false);
|
||||
|
||||
bullet.spentCasing = CASINGLUNA.clone().register("LunaInc");
|
||||
|
||||
@ -91,7 +91,7 @@ public class Gun50BMGFactory {
|
||||
bullet.ammo.meta = 2;
|
||||
bullet.explosive = 25;
|
||||
bullet.destroysBlocks = true;
|
||||
bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false);
|
||||
bullet.bntImpact = (projectile, x, y, z, sideHit) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false);
|
||||
|
||||
bullet.spentCasing = CASINGLUNA.clone().register("LunaExp");
|
||||
|
||||
@ -264,7 +264,7 @@ public class Gun50BMGFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
@ -368,7 +368,7 @@ public class Gun50BMGFactory {
|
||||
bulletnt.worldObj.spawnEntityInWorld(meteor);
|
||||
};
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
@ -397,6 +397,7 @@ public class Gun50BMGFactory {
|
||||
bullet.dmgMin = 50;
|
||||
bullet.dmgMax = 54;
|
||||
bullet.style = bullet.STYLE_FLECHETTE;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.spentCasing = CASING50BMG.clone().register("50BMGFlech");
|
||||
|
||||
@ -412,6 +413,7 @@ public class Gun50BMGFactory {
|
||||
bullet.dmgMin = 60;
|
||||
bullet.dmgMax = 64;
|
||||
bullet.style = bullet.STYLE_FLECHETTE;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.bntHit = (bulletnt, hit) -> {
|
||||
|
||||
@ -437,6 +439,7 @@ public class Gun50BMGFactory {
|
||||
bullet.dmgMin = 60;
|
||||
bullet.dmgMax = 64;
|
||||
bullet.style = bullet.STYLE_FLECHETTE;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.bntHit = (bulletnt, hit) -> {
|
||||
|
||||
|
||||
@ -182,7 +182,7 @@ public class Gun556mmFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
@ -266,7 +266,7 @@ public class Gun556mmFactory {
|
||||
bulletnt.worldObj.spawnEntityInWorld(meteor);
|
||||
};
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
@ -310,6 +310,7 @@ public class Gun556mmFactory {
|
||||
bullet.wear = 15;
|
||||
bullet.style = BulletConfiguration.STYLE_FLECHETTE;
|
||||
bullet.doesPenetrate = false;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.spentCasing = CASING556.clone().register("556Flec");
|
||||
|
||||
@ -322,6 +323,7 @@ public class Gun556mmFactory {
|
||||
|
||||
bullet.ammo = new ComparableStack(ModItems.ammo_556.stackFromEnum(Ammo556mm.FLECHETTE_INCENDIARY));
|
||||
bullet.incendiary = 5;
|
||||
BulletConfigFactory.makeFlechette(bullet);
|
||||
|
||||
bullet.spentCasing = CASING556.clone().register("556FlecInc");
|
||||
|
||||
@ -340,7 +342,7 @@ public class Gun556mmFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
@ -395,7 +397,7 @@ public class Gun556mmFactory {
|
||||
bulletnt.worldObj.spawnEntityInWorld(meteor);
|
||||
};
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
|
||||
@ -134,7 +134,7 @@ public class Gun75BoltFactory {
|
||||
bullet.effects = new ArrayList();
|
||||
bullet.effects.add(new PotionEffect(eff));
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaburst");
|
||||
|
||||
@ -44,7 +44,7 @@ public class Gun9mmFactory {
|
||||
config.reloadSoundEnd = false;
|
||||
|
||||
config.name = "mp40";
|
||||
config.manufacturer = EnumGunManufacturer.NAZI;
|
||||
config.manufacturer = EnumGunManufacturer.ERFURT;
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.P9_NORMAL);
|
||||
|
||||
@ -84,7 +84,7 @@ public class GunCannonFactory {
|
||||
bullet.dmgMin = 100;
|
||||
bullet.dmgMax = 150;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS);
|
||||
};
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ public class GunDetonatorFactory {
|
||||
bullet.doesRicochet = false;
|
||||
bullet.setToBolt(BulletConfiguration.BOLT_LASER);
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
World world = bulletnt.worldObj;
|
||||
if(!world.isRemote && y > 0) {
|
||||
|
||||
@ -431,7 +431,7 @@ public class GunEnergyFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
@ -554,7 +554,7 @@ public class GunEnergyFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
@ -632,7 +632,7 @@ public class GunEnergyFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
@ -721,7 +721,7 @@ public class GunEnergyFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
@ -812,7 +812,7 @@ public class GunEnergyFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
ExplosionChaos.explodeZOMG(bullet.worldObj, (int)Math.floor(bullet.posX), (int)Math.floor(bullet.posY), (int)Math.floor(bullet.posZ), 5);
|
||||
|
||||
@ -135,7 +135,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM);
|
||||
}
|
||||
};
|
||||
@ -151,7 +151,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_LOW);
|
||||
}
|
||||
};
|
||||
@ -167,7 +167,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_HIGH);
|
||||
}
|
||||
};
|
||||
@ -187,7 +187,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS);
|
||||
}
|
||||
};
|
||||
@ -203,7 +203,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_SAFE);
|
||||
}
|
||||
};
|
||||
@ -220,7 +220,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
@ -252,7 +252,7 @@ public class GunFatmanFactory {
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
|
||||
@Override
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
@ -503,7 +503,7 @@ public class GunFatmanFactory {
|
||||
bullet.style = BulletConfiguration.STYLE_BF;
|
||||
|
||||
bullet.bntImpact = new IBulletImpactBehaviorNT() {
|
||||
public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) {
|
||||
@Override public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z, int sideHit) {
|
||||
|
||||
if(!bullet.worldObj.isRemote) {
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
package com.hbm.handler.guncfg;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBaseNT;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.handler.BulletConfigSyncingUtil;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
@ -10,18 +9,28 @@ import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemAmmoEnums.AmmoGrenade;
|
||||
import com.hbm.lib.HbmCollection;
|
||||
import com.hbm.lib.HbmCollection.EnumGunManufacturer;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.particle.SpentCasing;
|
||||
import com.hbm.particle.SpentCasing.CasingType;
|
||||
import com.hbm.render.util.RenderScreenOverlay.Crosshair;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
public class GunGrenadeFactory {
|
||||
|
||||
|
||||
private static final CasingEjector EJECTOR_LAUNCHER;
|
||||
private static final CasingEjector EJECTOR_CONGOLAKE;
|
||||
private static final SpentCasing CASING40MM;
|
||||
|
||||
static {
|
||||
EJECTOR_LAUNCHER = new CasingEjector().setAngleRange(0.02F, 0.03F).setAfterReload();
|
||||
EJECTOR_CONGOLAKE = new CasingEjector().setMotion(0.3, 0.1, 0).setAngleRange(0.02F, 0.03F).setDelay(15);
|
||||
CASING40MM = new SpentCasing(CasingType.STRAIGHT).setScale(4F, 4F, 3F).setBounceMotion(0.02F, 0.03F).setColor(0x777777).setupSmoke(1F, 0.5D, 60, 40);
|
||||
}
|
||||
|
||||
@ -47,25 +56,42 @@ public class GunGrenadeFactory {
|
||||
|
||||
config.name = "gPistol";
|
||||
config.manufacturer = EnumGunManufacturer.H_AND_K;
|
||||
|
||||
config.config = new ArrayList<Integer>();
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_NORMAL);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_HE);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_INCENDIARY);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_PHOSPHORUS);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_CHEMICAL);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_CONCUSSION);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_FINNED);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_SLEEK);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_NUCLEAR);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_TRACER);
|
||||
config.config.add(BulletConfigSyncingUtil.GRENADE_KAMPF);
|
||||
|
||||
config.config = HbmCollection.grenade;
|
||||
config.durability = 300;
|
||||
|
||||
config.ejector = EJECTOR_LAUNCHER;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static GunConfiguration getCongoConfig() {
|
||||
|
||||
GunConfiguration config = new GunConfiguration();
|
||||
|
||||
config.rateOfFire = 20;
|
||||
config.roundsPerCycle = 1;
|
||||
config.gunMode = GunConfiguration.MODE_NORMAL;
|
||||
config.firingMode = GunConfiguration.FIRE_MANUAL;
|
||||
config.reloadDuration = 20;
|
||||
config.firingDuration = 0;
|
||||
config.ammoCap = 4;
|
||||
config.reloadType = GunConfiguration.RELOAD_SINGLE;
|
||||
config.allowsInfinity = true;
|
||||
config.crosshair = Crosshair.L_CIRCUMFLEX;
|
||||
config.firingSound = "hbm:weapon.glShoot";
|
||||
config.reloadSound = GunConfiguration.RSOUND_GRENADE_NEW;
|
||||
|
||||
config.name = "congoLake";
|
||||
config.manufacturer = EnumGunManufacturer.NAWS;
|
||||
|
||||
config.config = HbmCollection.grenade;
|
||||
config.durability = 2500;
|
||||
|
||||
config.ejector = EJECTOR_CONGOLAKE;
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getGrenadeConfig() {
|
||||
|
||||
@ -211,7 +237,7 @@ public class GunGrenadeFactory {
|
||||
bullet.velocity = 4;
|
||||
bullet.explosive = 0.0F;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS);
|
||||
};
|
||||
|
||||
@ -253,4 +279,101 @@ public class GunGrenadeFactory {
|
||||
|
||||
return bullet;
|
||||
}
|
||||
|
||||
public static BulletConfiguration getGrenadeLeadbursterConfig() {
|
||||
|
||||
BulletConfiguration bullet = BulletConfigFactory.standardGrenadeConfig();
|
||||
|
||||
bullet.ammo = new ComparableStack(ModItems.ammo_grenade.stackFromEnum(AmmoGrenade.LEADBURSTER));
|
||||
bullet.spread = 0.0F;
|
||||
bullet.gravity = 0.01D;
|
||||
bullet.explosive = 0F;
|
||||
bullet.style = BulletConfiguration.STYLE_LEADBURSTER;
|
||||
bullet.doesRicochet = false;
|
||||
bullet.doesPenetrate = true;
|
||||
bullet.vPFX = "";
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
switch(sideHit) {
|
||||
case 0: bulletnt.rotationPitch = (float) (90); break;
|
||||
case 1: bulletnt.rotationPitch = (float) (-90); break;
|
||||
case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break;
|
||||
case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break;
|
||||
case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break;
|
||||
case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break;
|
||||
}
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(0, 0, 1);
|
||||
vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D));
|
||||
vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180));
|
||||
|
||||
double offset = 0.1;
|
||||
bulletnt.posX -= vec.xCoord * offset;
|
||||
bulletnt.posY -= vec.yCoord * offset;
|
||||
bulletnt.posZ -= vec.zCoord * offset;
|
||||
|
||||
bulletnt.ticksExisted = 0;
|
||||
bulletnt.getStuck(x, y, z, sideHit);
|
||||
};
|
||||
|
||||
bullet.bntUpdate = (bulletnt) -> {
|
||||
if(bulletnt.worldObj.isRemote) return;
|
||||
|
||||
switch(bulletnt.getStuckIn()) {
|
||||
case 0: bulletnt.rotationPitch = (float) (90); break;
|
||||
case 1: bulletnt.rotationPitch = (float) (-90); break;
|
||||
case 2: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 0; break;
|
||||
case 3: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) 180; break;
|
||||
case 4: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = 90; break;
|
||||
case 5: bulletnt.rotationPitch = 0; bulletnt.rotationYaw = (float) -90; break;
|
||||
}
|
||||
|
||||
if(bulletnt.ticksInGround < 20) return;
|
||||
int timer = bulletnt.ticksInGround - 20;
|
||||
|
||||
Vec3 offset = Vec3.createVectorHelper(0, 0, -0.5);
|
||||
offset.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D));
|
||||
offset.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180));
|
||||
|
||||
if(bulletnt.ticksExisted >= 100) {
|
||||
bulletnt.setDead();
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setString("type", "vanillaExt");
|
||||
data.setString("mode", "largeexplode");
|
||||
data.setFloat("size", 1F);
|
||||
data.setByte("count", (byte)1);
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX + offset.xCoord, bulletnt.posY + offset.yCoord, bulletnt.posZ + offset.zCoord), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50));
|
||||
}
|
||||
|
||||
if(timer > 60) return;
|
||||
|
||||
bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:weapon.silencerShoot", 2F, 1F);
|
||||
|
||||
for(int i = 0; i < 5; i++) {
|
||||
Vec3 vec = Vec3.createVectorHelper(0, 1, 0);
|
||||
vec.rotateAroundX((float) Math.toRadians(11.25 * i));
|
||||
vec.rotateAroundZ((float) -Math.toRadians(13 * timer));
|
||||
vec.rotateAroundX((float) (bulletnt.rotationPitch * Math.PI / 180D));
|
||||
vec.rotateAroundY((float) (bulletnt.rotationYaw * Math.PI / 180));
|
||||
|
||||
EntityBulletBaseNT pellet = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.R556_NORMAL);
|
||||
double dist = 0.5;
|
||||
double off = 0.5;
|
||||
pellet.setPosition(bulletnt.posX + vec.xCoord * dist + offset.xCoord * off, bulletnt.posY + vec.yCoord * dist + offset.yCoord * off, bulletnt.posZ + vec.zCoord * dist + offset.zCoord * off);
|
||||
double vel = 0.5;
|
||||
pellet.motionX = vec.xCoord * vel;
|
||||
pellet.motionY = vec.yCoord * vel;
|
||||
pellet.motionZ = vec.zCoord * vel;
|
||||
|
||||
float hyp = MathHelper.sqrt_double(pellet.motionX * pellet.motionX + pellet.motionZ * pellet.motionZ);
|
||||
pellet.prevRotationYaw = pellet.rotationYaw = (float) (Math.atan2(pellet.motionX, pellet.motionZ) * 180.0D / Math.PI);
|
||||
pellet.prevRotationPitch = pellet.rotationPitch = (float) (Math.atan2(pellet.motionY, (double) hyp) * 180.0D / Math.PI);
|
||||
|
||||
bulletnt.worldObj.spawnEntityInWorld(pellet);
|
||||
}
|
||||
};
|
||||
|
||||
return bullet;
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ public class GunNPCFactory {
|
||||
bullet.vPFX = "reddust";
|
||||
bullet.damageType = ModDamageSource.s_laser;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
@ -252,7 +252,7 @@ public class GunNPCFactory {
|
||||
if(target != null) {
|
||||
|
||||
if(bullet.getDistanceSqToEntity(target) < 5) {
|
||||
bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1);
|
||||
bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1, -1);
|
||||
bullet.setDead();
|
||||
return;
|
||||
}
|
||||
@ -306,7 +306,7 @@ public class GunNPCFactory {
|
||||
}
|
||||
};
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bulletnt.worldObj.rand.nextFloat() * 0.2F);
|
||||
bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "fireworks.blast", 5.0F, 0.5F);
|
||||
|
||||
@ -127,7 +127,7 @@ public class GunOSIPRFactory {
|
||||
|
||||
};
|
||||
|
||||
bullet.bntImpact = (ball, x, y, z) -> {
|
||||
bullet.bntImpact = (ball, x, y, z, sideHit) -> {
|
||||
final Block block = ball.worldObj.getBlock(x, y, z);
|
||||
if(block instanceof RedBarrel)
|
||||
((RedBarrel) block).explode(ball.worldObj, x, y, z);
|
||||
|
||||
@ -284,7 +284,7 @@ public class GunRocketFactory {
|
||||
bullet.incendiary = 0;
|
||||
bullet.trail = 7;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM);
|
||||
};
|
||||
|
||||
@ -395,7 +395,7 @@ public class GunRocketFactory {
|
||||
bullet.incendiary = 0;
|
||||
bullet.trail = 7;
|
||||
|
||||
bullet.bntImpact = (bulletnt, x, y, z) -> {
|
||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||
|
||||
if(bulletnt.worldObj.isRemote)
|
||||
return;
|
||||
|
||||
@ -23,6 +23,7 @@ import com.hbm.inventory.material.Mats;
|
||||
import com.hbm.inventory.material.NTMMaterial;
|
||||
import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ItemEnums.EnumBriquetteType;
|
||||
import com.hbm.items.ItemEnums.EnumCokeType;
|
||||
import com.hbm.items.ItemEnums.EnumTarType;
|
||||
@ -291,6 +292,7 @@ public class OreDictManager {
|
||||
public static final DictGroup ANY_TAR = new DictGroup("Tar", KEY_OIL_TAR, KEY_COAL_TAR, KEY_CRACK_TAR, KEY_WOOD_TAR);
|
||||
/** Any special post-RBMK gating material, namely bismuth and arsenic */
|
||||
public static final DictFrame ANY_BISMOID = new DictFrame("AnyBismoid");
|
||||
public static final DictFrame ANY_ASH = new DictFrame("Ash");
|
||||
|
||||
public static void registerOres() {
|
||||
|
||||
@ -458,6 +460,7 @@ public class OreDictManager {
|
||||
for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); }
|
||||
ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class));
|
||||
ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth);
|
||||
ANY_ASH .any(fromOne(ModItems.powder_ash, EnumAshType.WOOD), fromOne(ModItems.powder_ash, EnumAshType.COAL), fromOne(ModItems.powder_ash, EnumAshType.MISC));
|
||||
|
||||
/*
|
||||
* TAR
|
||||
@ -563,6 +566,10 @@ public class OreDictManager {
|
||||
OreDictionary.registerOre("dye", new ItemStack(oil_tar, 1, OreDictionary.WILDCARD_VALUE));
|
||||
OreDictionary.registerOre("dyeOrange", powder_cadmium);
|
||||
OreDictionary.registerOre("dye", powder_cadmium);
|
||||
OreDictionary.registerOre("dyeLightGray", fromOne(powder_ash, EnumAshType.WOOD));
|
||||
OreDictionary.registerOre("dyeBlack", fromOne(powder_ash, EnumAshType.COAL));
|
||||
OreDictionary.registerOre("dyeGray", fromOne(powder_ash, EnumAshType.MISC));
|
||||
OreDictionary.registerOre("dye", new ItemStack(powder_ash, 1, OreDictionary.WILDCARD_VALUE));
|
||||
|
||||
OreDictionary.registerOre("blockGlass", glass_boron);
|
||||
OreDictionary.registerOre("blockGlass", glass_lead);
|
||||
|
||||
@ -0,0 +1,73 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.inventory.SlotTakeOnly;
|
||||
import com.hbm.tileentity.machine.TileEntityAshpit;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerAshpit extends Container {
|
||||
|
||||
protected TileEntityAshpit ashpit;
|
||||
|
||||
public ContainerAshpit(InventoryPlayer invPlayer, TileEntityAshpit ashpit) {
|
||||
this.ashpit = ashpit;
|
||||
this.ashpit.openInventory();
|
||||
|
||||
for(int i = 0; i < 5; i++) this.addSlotToContainer(new SlotTakeOnly(ashpit, i, 44 + i * 18, 27));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
|
||||
ItemStack stack = null;
|
||||
Slot slot = (Slot) this.inventorySlots.get(index);
|
||||
|
||||
if(slot != null && slot.getHasStack()) {
|
||||
ItemStack originalStack = slot.getStack();
|
||||
stack = originalStack.copy();
|
||||
|
||||
if(index <= 4) {
|
||||
if(!this.mergeItemStack(originalStack, 5, this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
slot.onSlotChange(originalStack, stack);
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
if(originalStack.stackSize == 0) {
|
||||
slot.putStack((ItemStack) null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return ashpit.isUseableByPlayer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContainerClosed(EntityPlayer player) {
|
||||
super.onContainerClosed(player);
|
||||
this.ashpit.closeInventory();
|
||||
}
|
||||
}
|
||||
41
src/main/java/com/hbm/inventory/gui/GUIAshpit.java
Normal file
@ -0,0 +1,41 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerAshpit;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.machine.TileEntityAshpit;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIAshpit extends GuiInfoContainer {
|
||||
|
||||
private TileEntityAshpit firebox;
|
||||
private final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_ashpit.png");
|
||||
|
||||
public GUIAshpit(InventoryPlayer invPlayer, TileEntityAshpit tedf) {
|
||||
super(new ContainerAshpit(invPlayer, tedf));
|
||||
firebox = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 168;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.firebox.hasCustomInventoryName() ? this.firebox.getInventoryName() : I18n.format(this.firebox.getInventoryName());
|
||||
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
@ -22,6 +22,7 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.material.Mats.MaterialStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.util.Compat;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
@ -85,6 +86,10 @@ public class MatDistribution extends SerializableRecipe {
|
||||
registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10));
|
||||
registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1));
|
||||
registerEntry(new ItemStack(Items.coal, 1, 1), MAT_CARBON, NUGGET.q(3));
|
||||
|
||||
registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), MAT_CARBON, NUGGET.q(1));
|
||||
registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.COAL), MAT_CARBON, NUGGET.q(2));
|
||||
registerEntry(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.MISC), MAT_CARBON, NUGGET.q(1));
|
||||
}
|
||||
|
||||
public static void registerEntry(Object key, Object... matDef) {
|
||||
|
||||
@ -19,6 +19,7 @@ import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.machine.ItemWatzPellet.EnumWatzType;
|
||||
import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre;
|
||||
@ -368,9 +369,14 @@ public class CentrifugeRecipes extends SerializableRecipe {
|
||||
recipes.put(new ComparableStack(ModBlocks.block_slag), new ItemStack[] {
|
||||
new ItemStack(Blocks.gravel, 1),
|
||||
new ItemStack(ModItems.powder_fire, 1),
|
||||
new ItemStack(ModItems.powder_calcium), //temp
|
||||
new ItemStack(ModItems.powder_calcium),
|
||||
new ItemStack(ModItems.dust) });
|
||||
|
||||
recipes.put(new ComparableStack(ModItems.powder_ash, 1, EnumAshType.COAL.ordinal()), new ItemStack[] {
|
||||
new ItemStack(ModItems.powder_coal_tiny, 2),
|
||||
new ItemStack(ModItems.powder_boron_tiny, 1),
|
||||
new ItemStack(ModItems.dust_tiny, 6)});
|
||||
|
||||
for(EnumBedrockOre ore : EnumBedrockOre.values()) {
|
||||
int i = ore.ordinal();
|
||||
|
||||
|
||||
@ -18,6 +18,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.inventory.recipes.loader.SerializableRecipe;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ItemEnums.EnumBriquetteType;
|
||||
import com.hbm.items.ItemEnums.EnumCokeType;
|
||||
import com.hbm.items.ItemEnums.EnumTarType;
|
||||
@ -47,9 +48,9 @@ public class CombinationRecipes extends SerializableRecipe {
|
||||
recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 100)));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250)));
|
||||
|
||||
recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250)));
|
||||
recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50)));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500)));
|
||||
recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250)));
|
||||
recipes.put(KEY_SAPLING, new Pair(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.WOOD), new FluidStack(Fluids.WOODOIL, 50)));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.WOOD)), new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 500)));
|
||||
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), null));
|
||||
|
||||
@ -237,6 +237,13 @@ public class AnvilRecipes {
|
||||
new OreDictStack(CU.ingot(), 8)
|
||||
}, new AnvilOutput(new ItemStack(ModBlocks.heater_oven))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
new AStack[] {
|
||||
new ComparableStack(Blocks.stone, 8),
|
||||
new OreDictStack(STEEL.plate(), 2),
|
||||
new OreDictStack(IRON.ingot(), 4)
|
||||
}, new AnvilOutput(new ItemStack(ModBlocks.machine_ashpit))).setTier(2));
|
||||
|
||||
constructionRecipes.add(new AnvilConstructionRecipe(
|
||||
new AStack[] {
|
||||
new ComparableStack(ModItems.tank_steel, 4),
|
||||
|
||||
@ -186,7 +186,8 @@ public class ItemAmmoEnums {
|
||||
FINNED("ammo_grenade_finned", AmmoItemTrait.PRO_GRAVITY, AmmoItemTrait.CON_RADIUS),
|
||||
NUCLEAR("ammo_grenade_nuclear", AmmoItemTrait.PRO_NUCLEAR, AmmoItemTrait.PRO_RANGE, AmmoItemTrait.CON_HEAVY_WEAR),
|
||||
TRACER("ammo_grenade_tracer", AmmoItemTrait.NEU_BLANK),
|
||||
KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR);
|
||||
KAMPF("ammo_grenade_kampf", AmmoItemTrait.PRO_ROCKET_PROPELLED, AmmoItemTrait.PRO_RADIUS, AmmoItemTrait.PRO_ACCURATE1, AmmoItemTrait.CON_WEAR),
|
||||
LEADBURSTER("ammo_grenade_leadburster", AmmoItemTrait.NEU_LEADBURSTER, AmmoItemTrait.CON_NO_EXPLODE1);
|
||||
|
||||
private final Set<AmmoItemTrait> traits;
|
||||
private final String unloc;
|
||||
|
||||
@ -23,6 +23,12 @@ public class ItemEnums {
|
||||
PARAFFIN
|
||||
}
|
||||
|
||||
public static enum EnumAshType {
|
||||
WOOD,
|
||||
COAL,
|
||||
MISC
|
||||
}
|
||||
|
||||
public static enum EnumBriquetteType {
|
||||
COAL,
|
||||
LIGNITE,
|
||||
|
||||
@ -109,6 +109,7 @@ public class ModItems {
|
||||
public static Item briquette;
|
||||
public static Item coal_infernal;
|
||||
public static Item cinnebar;
|
||||
public static Item powder_ash;
|
||||
|
||||
public static Item niter;
|
||||
public static Item ingot_copper;
|
||||
@ -1522,6 +1523,7 @@ public class ModItems {
|
||||
public static Item gun_panzerschreck;
|
||||
public static Item gun_quadro;
|
||||
public static Item gun_hk69;
|
||||
public static Item gun_congolake;
|
||||
public static Item gun_stinger;
|
||||
public static Item gun_skystinger;
|
||||
public static Item gun_revolver;
|
||||
@ -2723,6 +2725,7 @@ public class ModItems {
|
||||
powder_lignite = new Item().setUnlocalizedName("powder_lignite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_lignite");
|
||||
coal_infernal = new Item().setUnlocalizedName("coal_infernal").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":coal_infernal");
|
||||
cinnebar = new Item().setUnlocalizedName("cinnebar").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":cinnebar");
|
||||
powder_ash = new ItemEnumMulti(EnumAshType.class, true, true).setUnlocalizedName("powder_ash").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_ash");
|
||||
|
||||
ingot_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("ingot_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_gh336");
|
||||
nugget_gh336 = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("nugget_gh336").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":nugget_gh336");
|
||||
@ -4127,6 +4130,7 @@ public class ModItems {
|
||||
gun_panzerschreck = new ItemGunBase(GunRocketFactory.getPanzConfig()).setUnlocalizedName("gun_panzerschreck").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_panzerschreck");
|
||||
gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro");
|
||||
gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69");
|
||||
gun_congolake = new ItemGunCongo(GunGrenadeFactory.getCongoConfig()).setUnlocalizedName("gun_congolake").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_congolake");
|
||||
gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger");
|
||||
gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger");
|
||||
gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver");
|
||||
@ -5810,6 +5814,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(dust, dust.getUnlocalizedName());
|
||||
GameRegistry.registerItem(dust_tiny, dust_tiny.getUnlocalizedName());
|
||||
GameRegistry.registerItem(fallout, fallout.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_ash, powder_ash.getUnlocalizedName());
|
||||
|
||||
//Powders
|
||||
GameRegistry.registerItem(powder_fire, powder_fire.getUnlocalizedName());
|
||||
@ -6992,6 +6997,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(gun_panzerschreck, gun_panzerschreck.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_quadro, gun_quadro.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_hk69, gun_hk69.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_congolake, gun_congolake.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_stinger, gun_stinger.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_fatman, gun_fatman.getUnlocalizedName());
|
||||
GameRegistry.registerItem(gun_proto, gun_proto.getUnlocalizedName());
|
||||
|
||||
@ -62,7 +62,7 @@ public class ItemKitNBT extends Item {
|
||||
list.add("Contains:");
|
||||
|
||||
for(ItemStack item : stacks) {
|
||||
list.add("-" + item.getDisplayName());
|
||||
list.add("-" + item.getDisplayName() + (item.stackSize > 1 ? (" x" + item.stackSize) : ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -65,6 +65,7 @@ public class ItemAmmo extends ItemEnumMulti {
|
||||
NEU_STARMETAL,
|
||||
NEU_TRACER,
|
||||
NEU_UHH,
|
||||
NEU_LEADBURSTER,
|
||||
NEU_WARCRIME1,
|
||||
NEU_WARCRIME2,
|
||||
PRO_ACCURATE1,
|
||||
|
||||
@ -305,7 +305,7 @@ public class ItemAmmoArty extends Item {
|
||||
this.itemTypes[CARGO] = new ArtilleryShell("ammo_arty_cargo", SpentCasing.COLOR_CASE_16INCH) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) {
|
||||
if(mop.typeOfHit == MovingObjectType.BLOCK) {
|
||||
shell.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord);
|
||||
shell.getStuck(mop.blockX, mop.blockY, mop.blockZ);
|
||||
shell.getStuck(mop.blockX, mop.blockY, mop.blockZ, mop.sideHit);
|
||||
}
|
||||
}};
|
||||
|
||||
|
||||
37
src/main/java/com/hbm/items/weapon/ItemGunCongo.java
Normal file
@ -0,0 +1,37 @@
|
||||
package com.hbm.items.weapon;
|
||||
|
||||
import com.hbm.handler.GunConfiguration;
|
||||
import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationKeyframe;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemGunCongo extends ItemGunBase {
|
||||
|
||||
public ItemGunCongo(GunConfiguration config) {
|
||||
super(config);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public BusAnimation getAnimation(ItemStack stack, AnimType type) {
|
||||
|
||||
if(type == AnimType.CYCLE) {
|
||||
return new BusAnimation()
|
||||
.addBus("RECOIL", new BusAnimationSequence()
|
||||
.addKeyframe(new BusAnimationKeyframe(1, 0, 0, 50))
|
||||
.addKeyframe(new BusAnimationKeyframe(0, 0, 0, 100)))
|
||||
.addBus("PUMP", new BusAnimationSequence()
|
||||
.addKeyframe(new BusAnimationKeyframe(0, 0, 0, 500))
|
||||
.addKeyframe(new BusAnimationKeyframe(1, 0, 0, 100))
|
||||
.addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)));
|
||||
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -70,7 +70,7 @@ public class HbmCollection {
|
||||
/** MIRV MINI-NUKES **/
|
||||
public static final List<Integer> fatmanMIRV = ImmutableList.of(BulletConfigSyncingUtil.NUKE_MIRV_NORMAL, BulletConfigSyncingUtil.NUKE_MIRV_LOW, BulletConfigSyncingUtil.NUKE_MIRV_HIGH, BulletConfigSyncingUtil.NUKE_MIRV_SAFE, BulletConfigSyncingUtil.NUKE_MIRV_SPECIAL);
|
||||
/** 40MM GRENADE **/
|
||||
public static final List<Integer> grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF);
|
||||
public static final List<Integer> grenade = ImmutableList.of(BulletConfigSyncingUtil.GRENADE_NORMAL, BulletConfigSyncingUtil.GRENADE_HE, BulletConfigSyncingUtil.GRENADE_INCENDIARY, BulletConfigSyncingUtil.GRENADE_PHOSPHORUS, BulletConfigSyncingUtil.GRENADE_CHEMICAL, BulletConfigSyncingUtil.GRENADE_CONCUSSION, BulletConfigSyncingUtil.GRENADE_FINNED, BulletConfigSyncingUtil.GRENADE_SLEEK, BulletConfigSyncingUtil.GRENADE_NUCLEAR, BulletConfigSyncingUtil.GRENADE_TRACER, BulletConfigSyncingUtil.GRENADE_KAMPF, BulletConfigSyncingUtil.GRENADE_LEADBURSTER);
|
||||
/** 84MM ROCKET **/
|
||||
public static final List<Integer> rocket = ImmutableList.of(BulletConfigSyncingUtil.ROCKET_NORMAL, BulletConfigSyncingUtil.ROCKET_HE, BulletConfigSyncingUtil.ROCKET_INCENDIARY, BulletConfigSyncingUtil.ROCKET_PHOSPHORUS, BulletConfigSyncingUtil.ROCKET_SHRAPNEL, BulletConfigSyncingUtil.ROCKET_EMP, BulletConfigSyncingUtil.ROCKET_GLARE, BulletConfigSyncingUtil.ROCKET_TOXIC, BulletConfigSyncingUtil.ROCKET_CANISTER, BulletConfigSyncingUtil.ROCKET_SLEEK, BulletConfigSyncingUtil.ROCKET_NUKE, BulletConfigSyncingUtil.ROCKET_CHAINSAW);
|
||||
|
||||
@ -133,8 +133,10 @@ public class HbmCollection {
|
||||
METRO,
|
||||
/**MWT Prototype Labs**/
|
||||
MWT,
|
||||
/**Naval Air Weapons Station**/
|
||||
NAWS,
|
||||
/**Erfurter Maschinenfabrik Geipel**/
|
||||
NAZI,
|
||||
ERFURT,
|
||||
/**No manufacturer, just puts "-" **/
|
||||
NONE,
|
||||
/**OxfordEM Technologies**/
|
||||
|
||||
@ -9,11 +9,14 @@ import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.config.MobConfig;
|
||||
import com.hbm.config.WorldConfig;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.saveddata.TomSaveData;
|
||||
import com.hbm.tileentity.deco.TileEntityLanternBehemoth;
|
||||
import com.hbm.tileentity.machine.storage.TileEntitySafe;
|
||||
import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule;
|
||||
import com.hbm.util.LootGenerator;
|
||||
import com.hbm.util.WeightedRandomGeneric;
|
||||
import com.hbm.world.dungeon.AncientTomb;
|
||||
import com.hbm.world.dungeon.Antenna;
|
||||
@ -59,6 +62,7 @@ import net.minecraft.world.biome.BiomeGenJungle;
|
||||
import net.minecraft.world.biome.BiomeGenRiver;
|
||||
import net.minecraft.world.chunk.IChunkProvider;
|
||||
import net.minecraft.world.gen.feature.WorldGenMinable;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
import cpw.mods.fml.common.IWorldGenerator;
|
||||
|
||||
public class HbmWorldGen implements IWorldGenerator {
|
||||
@ -389,6 +393,29 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
if(rand.nextInt(1000) == 0) {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z);
|
||||
|
||||
if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z) && world.getBlock(x, y, z).isReplaceable(world, x, y, z)) {
|
||||
|
||||
world.setBlock(x, y, z, ModBlocks.lantern_behemoth, 12, 3);
|
||||
MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {4, 0, 0, 0, 0, 0}, ModBlocks.lantern_behemoth, ForgeDirection.NORTH);
|
||||
|
||||
TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) world.getTileEntity(x, y, z);
|
||||
lantern.isBroken = true;
|
||||
|
||||
if(rand.nextInt(2) == 0) {
|
||||
LootGenerator.setBlock(world, x, y, z - 2);
|
||||
LootGenerator.lootBooklet(world, x, y, z - 2);
|
||||
}
|
||||
|
||||
if(GeneralConfig.enableDebugMode)
|
||||
MainRegistry.logger.info("[Debug] Successfully spawned lantern at " + x + " " + (y) + " " + z);
|
||||
}
|
||||
}
|
||||
|
||||
if(GeneralConfig.enable528 && GeneralConfig.enable528BosniaSimulator && rand.nextInt(16) == 0) {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
@ -629,7 +656,7 @@ public class HbmWorldGen implements IWorldGenerator {
|
||||
int x = i + rand.nextInt(16);
|
||||
int z = j + rand.nextInt(16);
|
||||
int y = world.getHeightValue(x, z) - rand.nextInt(10);
|
||||
(new Meteorite()).generate(world, rand, x, y, z, false, true, false);
|
||||
(new Meteorite()).generate(world, rand, x, y, z, false, false, false);
|
||||
}
|
||||
|
||||
if (GeneralConfig.enableNITAN) {
|
||||
|
||||
@ -3,7 +3,7 @@ package com.hbm.lib;
|
||||
public class RefStrings {
|
||||
public static final String MODID = "hbm";
|
||||
public static final String NAME = "Hbm's Nuclear Tech Mod";
|
||||
public static final String VERSION = "1.0.27 BETA (4683)";
|
||||
public static final String VERSION = "1.0.27 BETA (4690)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -169,6 +169,8 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBobble.class, new RenderBobble());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySnowglobe.class, new RenderSnowglobe());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEmitter.class, new RenderEmitter());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLantern.class, new RenderLantern());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityLanternBehemoth.class, new RenderLanternBehemoth());
|
||||
//bombs
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeGadget.class, new RenderNukeGadget());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityNukeBoy.class, new RenderNukeBoy());
|
||||
@ -264,6 +266,7 @@ public class ClientProxy extends ServerProxy {
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceCombination.class, new RenderFurnaceCombination());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterFirebox.class, new RenderFirebox());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOven.class, new RenderHeatingOven());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityAshpit.class, new RenderAshpit());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterOilburner.class, new RenderOilburner());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterElectric.class, new RenderElectricHeater());
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeaterHeatex.class, new RenderHeaterHeatex());
|
||||
@ -525,6 +528,7 @@ public class ClientProxy extends ServerProxy {
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo());
|
||||
//multitool
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool());
|
||||
|
||||
@ -450,6 +450,7 @@ public class CraftingManager {
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_green_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P', P_RED.dust(), 'T', ModItems.cell_tritium, '1', "dustSulfur", '2', CU.dust() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.lamp_tritium_blue_off, 1), new Object[] { "GPG", "1T2", "GPG", 'G', KEY_ANYGLASS, 'P',P_RED.dust(), 'T', ModItems.cell_tritium, '1', AL.dust(), '2', ST.dust() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.lantern, 1), new Object[] { "PGP", " S ", " S ", 'P', KEY_ANYPANE, 'G', Items.glowstone_dust, 'S', ModBlocks.steel_beam });
|
||||
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barbed_wire, 16), new Object[] { "AIA", "I I", "AIA", 'A', ModItems.wire_aluminium, 'I', IRON.ingot() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barbed_wire_fire, 8), new Object[] { "BBB", "BIB", "BBB", 'B', ModBlocks.barbed_wire, 'I', P_RED.dust() });
|
||||
|
||||
@ -955,6 +955,8 @@ public class MainRegistry {
|
||||
WeaponConfig.loadFromConfig(config);
|
||||
MobConfig.loadFromConfig(config);
|
||||
StructureConfig.loadFromConfig(config);
|
||||
|
||||
config.save();
|
||||
|
||||
try {
|
||||
if(GeneralConfig.enableThermosPreventer && Class.forName("thermos.Thermos") != null) {
|
||||
@ -967,8 +969,6 @@ public class MainRegistry {
|
||||
+ "change Thermos' config anyway so that extra change in NTM's config can't be that big of a burden.");
|
||||
}
|
||||
} catch(ClassNotFoundException e) { }
|
||||
|
||||
config.save();
|
||||
}
|
||||
|
||||
private static HashSet<String> ignoreMappings = new HashSet();
|
||||
|
||||
@ -306,6 +306,9 @@ public class ResourceManager {
|
||||
public static Animation transition_seal_anim;
|
||||
public static final WavefrontObjDisplayList fire_door = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/doors/fire_door.obj")).asDisplayList();
|
||||
|
||||
//Lantern
|
||||
public static final IModelCustom lantern = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/trinkets/lantern.obj"));
|
||||
|
||||
//Tesla Coil
|
||||
public static final IModelCustom tesla = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/tesla.obj"));
|
||||
public static final IModelCustom teslacrab = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/teslacrab.obj"));
|
||||
@ -387,6 +390,7 @@ public class ResourceManager {
|
||||
//Heaters
|
||||
public static final ResourceLocation heater_firebox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/firebox.png");
|
||||
public static final ResourceLocation heater_oven_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heating_oven.png");
|
||||
public static final ResourceLocation ashpit_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/ashpit.png");
|
||||
public static final ResourceLocation heater_oilburner_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/oilburner.png");
|
||||
public static final ResourceLocation heater_electric_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/electric_heater.png");
|
||||
public static final ResourceLocation heater_heatex_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/heater_heatex.png");
|
||||
@ -664,6 +668,10 @@ public class ResourceManager {
|
||||
public static final ResourceLocation transition_seal_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/transition_seal.png");
|
||||
public static final ResourceLocation fire_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/fire_door.png");
|
||||
|
||||
//Lantern
|
||||
public static final ResourceLocation lantern_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern.png");
|
||||
public static final ResourceLocation lantern_rusty_tex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/lantern_rusty.png");
|
||||
|
||||
//Tesla Coil
|
||||
public static final ResourceLocation tesla_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tesla.png");
|
||||
public static final ResourceLocation teslacrab_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/teslacrab.png");
|
||||
@ -753,6 +761,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asDisplayList();
|
||||
public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList();
|
||||
public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList();
|
||||
public static final IModelCustom congolake = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/congolake.obj")).asDisplayList();
|
||||
|
||||
public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj"));
|
||||
|
||||
@ -848,6 +857,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation coilgun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/coilgun.png");
|
||||
public static final ResourceLocation cryocannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon.png");
|
||||
public static final ResourceLocation uac_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pistol_texture.png");
|
||||
public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png");
|
||||
|
||||
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");
|
||||
|
||||
@ -952,6 +962,7 @@ public class ResourceManager {
|
||||
|
||||
//Projectiles
|
||||
public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj"));
|
||||
public static final IModelCustom leadburster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/leadburster.obj"));
|
||||
public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj"));
|
||||
|
||||
//Bomber
|
||||
@ -1080,6 +1091,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation rocket_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/rocket_mirv.png");
|
||||
public static final ResourceLocation mini_nuke_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_nuke.png");
|
||||
public static final ResourceLocation mini_mirv_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/mini_mirv.png");
|
||||
public static final ResourceLocation leadburster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/projectiles/leadburster.png");
|
||||
public static final ResourceLocation casings_tex = new ResourceLocation(RefStrings.MODID, "textures/particle/casings.png");
|
||||
|
||||
//Bomber
|
||||
|
||||
@ -3,7 +3,9 @@ package com.hbm.render.entity.projectile;
|
||||
import java.util.Random;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import com.hbm.entity.projectile.EntityBulletBaseNT;
|
||||
import com.hbm.entity.projectile.IBulletBase;
|
||||
import com.hbm.handler.BulletConfiguration;
|
||||
import com.hbm.items.ModItems;
|
||||
@ -72,6 +74,7 @@ public class RenderBullet extends Render {
|
||||
case BulletConfiguration.STYLE_BLADE: renderBlade(); break;
|
||||
case BulletConfiguration.STYLE_BARREL: renderNuke(3); break;
|
||||
case BulletConfiguration.STYLE_TAU: renderTau(bullet, trail, f1); break;
|
||||
case BulletConfiguration.STYLE_LEADBURSTER: renderLeadburster(bullet, f1); break;
|
||||
default: renderBullet(trail); break;
|
||||
}
|
||||
|
||||
@ -589,6 +592,24 @@ public class RenderBullet extends Render {
|
||||
iface.prevZ(pZ);
|
||||
}
|
||||
|
||||
private void renderLeadburster(Entity bullet, float interp) {
|
||||
EntityBulletBaseNT bulletnt = (EntityBulletBaseNT) bullet;
|
||||
GL11.glPushMatrix();
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
|
||||
GL11.glRotated(90, 0, 0, -1);
|
||||
double scale = 0.05;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
bindTexture(ResourceManager.leadburster_tex);
|
||||
ResourceManager.leadburster.renderPart("Based");
|
||||
if(bulletnt.getStuckIn() != -1) {
|
||||
GL11.glRotated((bullet.ticksExisted + interp) * -18, 0, 1, 0);
|
||||
}
|
||||
ResourceManager.leadburster.renderPart("Based.001");
|
||||
ResourceManager.leadburster.renderPart("Backlight");
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||
return new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png");
|
||||
|
||||
@ -0,0 +1,106 @@
|
||||
package com.hbm.render.item.weapon;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.anim.HbmAnimations;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class ItemRenderWeaponCongo implements IItemRenderer {
|
||||
|
||||
@Override
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
|
||||
switch(type) {
|
||||
case EQUIPPED:
|
||||
case EQUIPPED_FIRST_PERSON:
|
||||
case ENTITY:
|
||||
case INVENTORY:
|
||||
return true;
|
||||
default: return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
|
||||
|
||||
return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.congolake_tex);
|
||||
|
||||
switch(type) {
|
||||
|
||||
case EQUIPPED_FIRST_PERSON:
|
||||
|
||||
double s0 = 0.25D;
|
||||
GL11.glRotated(20, 0, 0, 1);
|
||||
GL11.glTranslated(0.5, 0.0, -0.5);
|
||||
GL11.glRotated(-10, 0, 1, 0);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glScaled(s0, s0, s0);
|
||||
|
||||
double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL");
|
||||
GL11.glTranslated(0, 0, -recoil[0]);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.congolake.renderPart("Gun");
|
||||
|
||||
double[] pump = HbmAnimations.getRelevantTransformation("PUMP");
|
||||
GL11.glTranslated(0, 0, -pump[0]);
|
||||
|
||||
ResourceManager.congolake.renderPart("Pump_Pummp");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
|
||||
break;
|
||||
|
||||
case EQUIPPED:
|
||||
|
||||
double scale = 0.35D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glRotatef(15, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glTranslatef(1.25F, -1F, 1.5F);
|
||||
|
||||
break;
|
||||
|
||||
case ENTITY:
|
||||
|
||||
double s1 = 0.2D;
|
||||
GL11.glScaled(s1, s1, s1);
|
||||
|
||||
break;
|
||||
|
||||
case INVENTORY:
|
||||
|
||||
double s = 2D;
|
||||
GL11.glTranslated(6, 9, 0);
|
||||
GL11.glRotated(-135, 0, 0, 1);
|
||||
GL11.glRotated(-90, 0, 1, 0);
|
||||
GL11.glScaled(s, s, -s);
|
||||
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) {
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
ResourceManager.congolake.renderAll();
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
71
src/main/java/com/hbm/render/tileentity/RenderAshpit.java
Normal file
@ -0,0 +1,71 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
import com.hbm.tileentity.machine.TileEntityAshpit;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class RenderAshpit extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
|
||||
case 3: GL11.glRotatef(0, 0F, 1F, 0F); break;
|
||||
case 5: GL11.glRotatef(90, 0F, 1F, 0F); break;
|
||||
case 2: GL11.glRotatef(180, 0F, 1F, 0F); break;
|
||||
case 4: GL11.glRotatef(270, 0F, 1F, 0F); break;
|
||||
}
|
||||
GL11.glRotatef(-90, 0F, 1F, 0F);
|
||||
|
||||
TileEntityAshpit oven = (TileEntityAshpit) tile;
|
||||
|
||||
bindTexture(ResourceManager.ashpit_tex);
|
||||
ResourceManager.heater_oven.renderPart("Main");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
float door = oven.prevDoorAngle + (oven.doorAngle - oven.prevDoorAngle) * interp;
|
||||
GL11.glTranslated(0, 0, door * 0.75D / 135D);
|
||||
ResourceManager.heater_oven.renderPart("Door");
|
||||
GL11.glPopMatrix();
|
||||
|
||||
if(oven.isFull) {
|
||||
ResourceManager.heater_oven.renderPart("InnerBurning");
|
||||
} else {
|
||||
ResourceManager.heater_oven.renderPart("Inner");
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.machine_ashpit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase() {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -1, 0);
|
||||
GL11.glScaled(3.25, 3.25, 3.25);
|
||||
}
|
||||
public void renderCommon() {
|
||||
bindTexture(ResourceManager.ashpit_tex);
|
||||
ResourceManager.heater_oven.renderPart("Main");
|
||||
ResourceManager.heater_oven.renderPart("Door");
|
||||
}};
|
||||
}
|
||||
}
|
||||
69
src/main/java/com/hbm/render/tileentity/RenderLantern.java
Normal file
@ -0,0 +1,69 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.item.ItemRenderBase;
|
||||
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public class RenderLantern extends TileEntitySpecialRenderer implements IItemRendererProvider {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
bindTexture(ResourceManager.lantern_tex);
|
||||
ResourceManager.lantern.renderPart("Lantern");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||
float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F;
|
||||
GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult);
|
||||
ResourceManager.lantern.renderPart("Light");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glPopAttrib();
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item getItemForRenderer() {
|
||||
return Item.getItemFromBlock(ModBlocks.lantern);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IItemRenderer getRenderer() {
|
||||
return new ItemRenderBase() {
|
||||
public void renderInventory() {
|
||||
GL11.glTranslated(0, -5, 0);
|
||||
double scale = 2.75;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
}
|
||||
public void renderCommon() {
|
||||
bindTexture(ResourceManager.lantern_tex);
|
||||
ResourceManager.lantern.renderPart("Lantern");
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.1F + 0.9F;
|
||||
GL11.glColor3f(1F * mult, 1F * mult, 0.7F * mult);
|
||||
ResourceManager.lantern.renderPart("Light");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
}};
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package com.hbm.render.tileentity;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.tileentity.deco.TileEntityLanternBehemoth;
|
||||
|
||||
import net.minecraft.client.renderer.OpenGlHelper;
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public class RenderLanternBehemoth extends TileEntitySpecialRenderer {
|
||||
|
||||
@Override
|
||||
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(x + 0.5D, y, z + 0.5D);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
TileEntityLanternBehemoth lantern = (TileEntityLanternBehemoth) tile;
|
||||
if(lantern.isBroken) {
|
||||
GL11.glRotated(5, 1, 0, 0);
|
||||
GL11.glRotated(10, 0, 0, 1);
|
||||
}
|
||||
|
||||
bindTexture(ResourceManager.lantern_rusty_tex);
|
||||
ResourceManager.lantern.renderPart("Lantern");
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glPushAttrib(GL11.GL_LIGHTING_BIT);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F);
|
||||
|
||||
if(lantern.isBroken) {
|
||||
float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5);
|
||||
GL11.glColor3f(1F * mult, 0, 0);
|
||||
} else {
|
||||
float mult = (float) (Math.sin(System.currentTimeMillis() / 200D) / 2 + 0.5) * 0.5F + 0.5F;
|
||||
GL11.glColor3f(0, 1F * mult, 0);
|
||||
}
|
||||
ResourceManager.lantern.renderPart("Light");
|
||||
GL11.glColor3f(1F, 1F, 1F);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glPopAttrib();
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
@ -100,11 +100,22 @@ public class RenderLoot extends TileEntitySpecialRenderer {
|
||||
GL11.glRotated(90, 1, 0, 0);
|
||||
|
||||
bindTexture(TextureMap.locationItemsTexture);
|
||||
IIcon icon = stack.getIconIndex();
|
||||
float f14 = icon.getMinU();
|
||||
float f15 = icon.getMaxU();
|
||||
float f4 = icon.getMinV();
|
||||
float f5 = icon.getMaxV();
|
||||
ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
|
||||
|
||||
for(int i = 0; i < stack.getItem().getRenderPasses(stack.getItemDamage()); i++) {
|
||||
|
||||
IIcon icon = stack.getItem().getIcon(stack, i);
|
||||
float f14 = icon.getMinU();
|
||||
float f15 = icon.getMaxU();
|
||||
float f4 = icon.getMinV();
|
||||
float f5 = icon.getMaxV();
|
||||
|
||||
int k1 = stack.getItem().getColorFromItemStack(stack, i);
|
||||
float f10 = (float) (k1 >> 16 & 255) / 255.0F;
|
||||
float f11 = (float) (k1 >> 8 & 255) / 255.0F;
|
||||
float f12 = (float) (k1 & 255) / 255.0F;
|
||||
GL11.glColor4f(1.0F * f10, 1.0F * f11, 1.0F * f12, 1.0F);
|
||||
|
||||
ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -182,6 +182,8 @@ public class TileMappings {
|
||||
put(TileEntitySILEX.class, "tileentity_silex");
|
||||
put(TileEntityFEL.class, "tileentity_fel");
|
||||
put(TileEntityDemonLamp.class, "tileentity_demonlamp");
|
||||
put(TileEntityLantern.class, "tileentity_lantern_ordinary");
|
||||
put(TileEntityLanternBehemoth.class, "tileentity_lantern_behemoth");
|
||||
put(TileEntityStorageDrum.class, "tileentity_waste_storage_drum");
|
||||
put(TileEntityDeaerator.class, "tileentity_deaerator");
|
||||
put(TileEntityCableBaseNT.class, "tileentity_ohgod"); // what?
|
||||
@ -257,6 +259,7 @@ public class TileMappings {
|
||||
private static void putMachines() {
|
||||
put(TileEntityHeaterFirebox.class, "tileentity_firebox");
|
||||
put(TileEntityHeaterOven.class, "tileentity_heating_oven");
|
||||
put(TileEntityAshpit.class, "tileentity_ashpit");
|
||||
put(TileEntityHeaterOilburner.class, "tileentity_oilburner");
|
||||
put(TileEntityHeaterElectric.class, "tileentity_electric_heater");
|
||||
put(TileEntityHeaterHeatex.class, "tileentity_heater_heatex");
|
||||
|
||||
@ -4,6 +4,8 @@ import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.LaunchPad;
|
||||
import com.hbm.inventory.container.ContainerLaunchPadTier1;
|
||||
import com.hbm.inventory.gui.GUILaunchPadTier1;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.tool.ItemDesingator;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.packet.AuxElectricityPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
@ -280,40 +282,54 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyStored(Context context, Arguments args) {
|
||||
return new Object[] {getPower()};
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxEnergy(Context context, Arguments args) {
|
||||
return new Object[] {getMaxPower()};
|
||||
return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getCoords(Context context, Arguments args) {
|
||||
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
|
||||
int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord");
|
||||
int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord");
|
||||
int xCoord2;
|
||||
int zCoord2;
|
||||
if (slots[1].stackTagCompound != null) {
|
||||
xCoord2 = slots[1].stackTagCompound.getInteger("xCoord");
|
||||
zCoord2 = slots[1].stackTagCompound.getInteger("zCoord");
|
||||
} else
|
||||
return new Object[] {false};
|
||||
|
||||
// Not sure if i should have this
|
||||
/*
|
||||
if(xCoord2 == xCoord && zCoord2 == zCoord) {
|
||||
xCoord2 += 1;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
return new Object[] {xCoord2, zCoord2};
|
||||
}
|
||||
return new Object[] {"Designator not found"};
|
||||
return new Object[] {false, "Designator not found"};
|
||||
}
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setCoords(Context context, Arguments args) {
|
||||
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
|
||||
slots[1].stackTagCompound = new NBTTagCompound();
|
||||
slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0));
|
||||
slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1));
|
||||
|
||||
return new Object[] {"Success"};
|
||||
|
||||
return new Object[] {true};
|
||||
}
|
||||
return new Object[] {"Designator not found"};
|
||||
return new Object[] {false, "Designator not found"};
|
||||
}
|
||||
|
||||
@Callback
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.bomb;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.bomb.LaunchPad;
|
||||
import com.hbm.entity.missile.EntityMissileCustom;
|
||||
import com.hbm.handler.MissileStruct;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
@ -28,9 +30,14 @@ import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import api.hbm.fluid.IFluidStandardReceiver;
|
||||
import api.hbm.item.IDesignatorItem;
|
||||
import cpw.mods.fml.common.Optional;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import li.cil.oc.api.machine.Arguments;
|
||||
import li.cil.oc.api.machine.Callback;
|
||||
import li.cil.oc.api.machine.Context;
|
||||
import li.cil.oc.api.network.SimpleComponent;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
@ -43,7 +50,8 @@ import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider {
|
||||
@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")})
|
||||
public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent {
|
||||
|
||||
private ItemStack slots[];
|
||||
|
||||
@ -597,6 +605,86 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide
|
||||
return tanks;
|
||||
}
|
||||
|
||||
// do some opencomputer stuff
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "large_launch_pad";
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyStored(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxEnergy(Context context, Arguments args) {
|
||||
return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getContents(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getLaunchInfo(Context context, Arguments args) {
|
||||
return new Object[] {canLaunch(), isMissileValid(), hasDesignator(), hasFuel()};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getCoords(Context context, Arguments args) {
|
||||
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
|
||||
int xCoord2;
|
||||
int zCoord2;
|
||||
if (slots[1].stackTagCompound != null) {
|
||||
xCoord2 = slots[1].stackTagCompound.getInteger("xCoord");
|
||||
zCoord2 = slots[1].stackTagCompound.getInteger("zCoord");
|
||||
} else
|
||||
return new Object[] {false};
|
||||
|
||||
// Not sure if i should have this
|
||||
/*
|
||||
if(xCoord2 == xCoord && zCoord2 == zCoord) {
|
||||
xCoord2 += 1;
|
||||
}
|
||||
*/
|
||||
|
||||
return new Object[] {xCoord2, zCoord2};
|
||||
}
|
||||
return new Object[] {false, "Designator not found"};
|
||||
}
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] setCoords(Context context, Arguments args) {
|
||||
if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) {
|
||||
slots[1].stackTagCompound = new NBTTagCompound();
|
||||
slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0));
|
||||
slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1));
|
||||
|
||||
return new Object[] {true};
|
||||
}
|
||||
return new Object[] {false, "Designator not found"};
|
||||
}
|
||||
|
||||
@Callback
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] launch(Context context, Arguments args) {
|
||||
//worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord);
|
||||
((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord);
|
||||
return new Object[] {};
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerLaunchTable(player.inventory, this);
|
||||
|
||||
53
src/main/java/com/hbm/tileentity/deco/TileEntityLantern.java
Normal file
@ -0,0 +1,53 @@
|
||||
package com.hbm.tileentity.deco;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.entity.mob.EntityGlyphid;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
|
||||
public class TileEntityLantern extends TileEntity {
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 20 == 0) {
|
||||
|
||||
List<EntityGlyphid> glyphids = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 5.5, zCoord + 0.5, xCoord + 0.5, yCoord + 5.5, zCoord + 0.5).expand(7.5, 7.5, 7.5));
|
||||
|
||||
for(EntityGlyphid glyphid : glyphids) {
|
||||
glyphid.addPotionEffect(new PotionEffect(Potion.blindness.id, 100, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord,
|
||||
yCoord,
|
||||
zCoord,
|
||||
xCoord + 1,
|
||||
yCoord + 6,
|
||||
zCoord + 1
|
||||
);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,137 @@
|
||||
package com.hbm.tileentity.deco;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.entity.missile.EntityBobmazon;
|
||||
import com.hbm.inventory.OreDictManager;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.RecipesCommon.ComparableStack;
|
||||
import com.hbm.inventory.RecipesCommon.OreDictStack;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.special.ItemKitCustom;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.tileentity.IRepairable;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityLanternBehemoth extends TileEntity implements INBTPacketReceiver, IRepairable {
|
||||
|
||||
public boolean isBroken = false;
|
||||
public int comTimer = -1;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
if(comTimer == 360) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearSingle", 10F, 1F);
|
||||
if(comTimer == 280) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarSingle", 10000F, 1F);
|
||||
if(comTimer == 220) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornNearDual", 10F, 1F);
|
||||
if(comTimer == 100) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.hornFarDual", 10000F, 1F);
|
||||
|
||||
if(comTimer == 0) {
|
||||
EntityBobmazon shuttle = new EntityBobmazon(worldObj);
|
||||
shuttle.posX = xCoord + 0.5 + worldObj.rand.nextGaussian() * 10;
|
||||
shuttle.posY = 300;
|
||||
shuttle.posZ = zCoord + 0.5 + worldObj.rand.nextGaussian() * 10;
|
||||
ItemStack payload = ItemKitCustom.create("Supplies", null, 0xffffff, 0x008000,
|
||||
new ItemStack(ModItems.circuit_aluminium, 4 + worldObj.rand.nextInt(4)),
|
||||
new ItemStack(ModItems.circuit_copper, 4 + worldObj.rand.nextInt(2)),
|
||||
new ItemStack(ModItems.circuit_red_copper, 2 + worldObj.rand.nextInt(3)),
|
||||
new ItemStack(ModItems.circuit_gold, 1 + worldObj.rand.nextInt(2)),
|
||||
worldObj.rand.nextInt(3) == 0 ? new ItemStack(ModItems.gem_alexandrite) : new ItemStack(Items.diamond, 6 + worldObj.rand.nextInt(6)),
|
||||
new ItemStack(Blocks.red_flower));
|
||||
shuttle.payload = payload;
|
||||
|
||||
worldObj.spawnEntityInWorld(shuttle);
|
||||
}
|
||||
|
||||
if(comTimer >= 0) {
|
||||
comTimer--;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setBoolean("isBroken", isBroken);
|
||||
INBTPacketReceiver.networkPack(this, data, 250);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
this.isBroken = nbt.getBoolean("isBroken");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
isBroken = nbt.getBoolean("isBroken");
|
||||
comTimer = nbt.getInteger("comTimer");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setBoolean("isBroken", isBroken);
|
||||
nbt.setInteger("comTimer", comTimer);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDamaged() {
|
||||
return isBroken;
|
||||
}
|
||||
|
||||
List<AStack> repair = new ArrayList();
|
||||
@Override
|
||||
public List<AStack> getRepairMaterials() {
|
||||
|
||||
if(!repair.isEmpty())
|
||||
return repair;
|
||||
|
||||
repair.add(new OreDictStack(OreDictManager.STEEL.plate(), 2));
|
||||
repair.add(new ComparableStack(ModItems.circuit_copper, 1));
|
||||
return repair;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void repair() {
|
||||
this.isBroken = false;
|
||||
this.comTimer = 400;
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
@Override public void tryExtinguish(World world, int x, int y, int z, EnumExtinguishType type) { }
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord,
|
||||
yCoord,
|
||||
zCoord,
|
||||
xCoord + 1,
|
||||
yCoord + 6,
|
||||
zCoord + 1
|
||||
);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
}
|
||||
175
src/main/java/com/hbm/tileentity/machine/TileEntityAshpit.java
Normal file
@ -0,0 +1,175 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.inventory.OreDictManager.DictFrame;
|
||||
import com.hbm.inventory.container.ContainerAshpit;
|
||||
import com.hbm.inventory.gui.GUIAshpit;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TileEntityAshpit extends TileEntityMachineBase implements IGUIProvider {
|
||||
|
||||
private int playersUsing = 0;
|
||||
public float doorAngle = 0;
|
||||
public float prevDoorAngle = 0;
|
||||
public boolean isFull;
|
||||
|
||||
public int ashLevelWood;
|
||||
public int ashLevelCoal;
|
||||
public int ashLevelMisc;
|
||||
|
||||
public TileEntityAshpit() {
|
||||
super(5);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openInventory() {
|
||||
if(!worldObj.isRemote) this.playersUsing++;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void closeInventory() {
|
||||
if(!worldObj.isRemote) this.playersUsing--;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "container.ashpit";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
int threshold = 2000;
|
||||
|
||||
if(processAsh(ashLevelWood, EnumAshType.WOOD, threshold)) ashLevelWood -= threshold;
|
||||
if(processAsh(ashLevelCoal, EnumAshType.COAL, threshold)) ashLevelCoal -= threshold;
|
||||
if(processAsh(ashLevelMisc, EnumAshType.MISC, threshold)) ashLevelMisc -= threshold;
|
||||
|
||||
isFull = false;
|
||||
|
||||
for(int i = 0; i < 5; i++) {
|
||||
if(slots[i] != null) isFull = true;
|
||||
}
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setInteger("playersUsing", this.playersUsing);
|
||||
data.setBoolean("isFull", this.isFull);
|
||||
this.networkPack(data, 50);
|
||||
|
||||
} else {
|
||||
this.prevDoorAngle = this.doorAngle;
|
||||
float swingSpeed = (doorAngle / 10F) + 3;
|
||||
|
||||
if(this.playersUsing > 0) {
|
||||
this.doorAngle += swingSpeed;
|
||||
} else {
|
||||
this.doorAngle -= swingSpeed;
|
||||
}
|
||||
|
||||
this.doorAngle = MathHelper.clamp_float(this.doorAngle, 0F, 135F);
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean processAsh(int level, EnumAshType type, int threshold) {
|
||||
|
||||
if(level >= threshold) {
|
||||
for(int i = 0; i < 5; i++) {
|
||||
if(slots[i] == null) {
|
||||
slots[i] = DictFrame.fromOne(ModItems.powder_ash, type);
|
||||
ashLevelWood -= threshold;
|
||||
return true;
|
||||
} else if(slots[i].stackSize < slots[i].getMaxStackSize() && slots[i].getItem() == ModItems.powder_ash && slots[i].getItemDamage() == type.ordinal()) {
|
||||
slots[i].stackSize++;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
this.playersUsing = nbt.getInteger("playersUsing");
|
||||
this.isFull = nbt.getBoolean("isFull");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getAccessibleSlotsFromSide(int meta) {
|
||||
return new int[] { 0, 1, 2, 3, 4 };
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack itemStack, int j) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
|
||||
this.ashLevelWood = nbt.getInteger("ashLevelWood");
|
||||
this.ashLevelCoal = nbt.getInteger("ashLevelCoal");
|
||||
this.ashLevelMisc = nbt.getInteger("ashLevelMisc");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
|
||||
nbt.setInteger("ashLevelWood", ashLevelWood);
|
||||
nbt.setInteger("ashLevelCoal", ashLevelCoal);
|
||||
nbt.setInteger("ashLevelMisc", ashLevelMisc);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getRenderBoundingBox() {
|
||||
|
||||
if(bb == null) {
|
||||
bb = AxisAlignedBB.getBoundingBox(
|
||||
xCoord - 1,
|
||||
yCoord,
|
||||
zCoord - 1,
|
||||
xCoord + 2,
|
||||
yCoord + 1,
|
||||
zCoord + 2
|
||||
);
|
||||
}
|
||||
|
||||
return bb;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public double getMaxRenderDistanceSquared() {
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerAshpit(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUIAshpit(player.inventory, this);
|
||||
}
|
||||
}
|
||||
@ -279,13 +279,19 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyStored(Context context, Arguments args) {
|
||||
return new Object[] {getPower()};
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxEnergy(Context context, Arguments args) {
|
||||
return new Object[] {getMaxPower()};
|
||||
return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
|
||||
@ -202,20 +202,20 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl
|
||||
|
||||
@Callback(direct = true, limit = 2)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFirstFuel(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill()};
|
||||
public Object[] getFuel(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[1].getFill()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 2)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getSecondFuel(Context context, Arguments args) {
|
||||
return new Object[] {tanks[1].getFill()};
|
||||
public Object[] getTypes(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {tanks[0].getFill(), tanks[1].getFill()};
|
||||
return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -194,13 +194,19 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInput(Context context, Arguments args) {
|
||||
return new Object[] {joules};
|
||||
return new Object[] {joules, "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getOutput(Context context, Arguments args) {
|
||||
return new Object[] {power};
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@ -212,7 +218,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {joules, power, tank.getFill()};
|
||||
return new Object[] {joules, getPower(), tank.getFill()};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -176,13 +176,19 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyStored(Context context, Arguments args) {
|
||||
return new Object[] {power};
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxEnergy(Context context, Arguments args) {
|
||||
return new Object[] {maxPower};
|
||||
return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
|
||||
@ -308,6 +308,7 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn
|
||||
if(this.tanks[3].getFill() < 100) return false;
|
||||
|
||||
ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]);
|
||||
if(recipe == null) return false;
|
||||
|
||||
if(leftStack != null) {
|
||||
if(recipe.output1.material != leftStack.material) return false;
|
||||
|
||||
@ -1,13 +1,17 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.tank.FluidTank;
|
||||
import com.hbm.items.ItemEnums.EnumAshType;
|
||||
import com.hbm.module.ModuleBurnTime;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachinePolluting;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
|
||||
import api.hbm.fluid.IFluidStandardSender;
|
||||
import api.hbm.tile.IHeatSource;
|
||||
@ -15,6 +19,7 @@ import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
@ -68,9 +73,21 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i
|
||||
for(int i = 0; i < 2; i++) {
|
||||
if(slots[i] != null) {
|
||||
|
||||
int fuel = (int) (getModule().getBurnTime(slots[i]) * getTimeMult());
|
||||
int baseTime = getModule().getBurnTime(slots[i]);
|
||||
|
||||
if(fuel > 0) {
|
||||
if(baseTime > 0) {
|
||||
int fuel = (int) (baseTime * getTimeMult());
|
||||
|
||||
TileEntity below = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord);
|
||||
|
||||
if(below instanceof TileEntityAshpit) {
|
||||
TileEntityAshpit ashpit = (TileEntityAshpit) below;
|
||||
EnumAshType type = this.getAshFromFuel(slots[i]);
|
||||
if(type == EnumAshType.WOOD) ashpit.ashLevelWood += baseTime;
|
||||
if(type == EnumAshType.COAL) ashpit.ashLevelCoal += baseTime;
|
||||
if(type == EnumAshType.MISC) ashpit.ashLevelMisc += baseTime;
|
||||
}
|
||||
|
||||
this.maxBurnTime = this.burnTime = fuel;
|
||||
this.burnHeat = getModule().getBurnHeat(getBaseHeat(), slots[i]);
|
||||
slots[i].stackSize--;
|
||||
@ -133,6 +150,22 @@ public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting i
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EnumAshType getAshFromFuel(ItemStack stack) {
|
||||
|
||||
List<String> names = ItemStackUtil.getOreDictNames(stack);
|
||||
|
||||
for(String name : names) {
|
||||
if(name.contains("Coke")) return EnumAshType.COAL;
|
||||
if(name.contains("Coal")) return EnumAshType.COAL;
|
||||
if(name.contains("Lignite")) return EnumAshType.COAL;
|
||||
if(name.startsWith("log")) return EnumAshType.WOOD;
|
||||
if(name.contains("Wood")) return EnumAshType.WOOD;
|
||||
if(name.contains("Sapling")) return EnumAshType.WOOD;
|
||||
}
|
||||
|
||||
return EnumAshType.MISC;
|
||||
}
|
||||
|
||||
public abstract ModuleBurnTime getModule();
|
||||
public abstract int getBaseHeat();
|
||||
|
||||
@ -375,7 +375,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I
|
||||
else if(type == Fluids.HOTSTEAM) {type_1 = "1";}
|
||||
else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";}
|
||||
else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";}
|
||||
else {type_1 = "Steam out-of-bounds";}
|
||||
else {type_1 = "Unknown Error";}
|
||||
return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
|
||||
@ -312,19 +312,19 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getFillType(Context context, Arguments args) {
|
||||
return new Object[] {feed.getTankType().getID()};
|
||||
return new Object[] {feed.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getExportType(Context context, Arguments args) {
|
||||
return new Object[] {steam.getTankType().getID()};
|
||||
return new Object[] {steam.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord};
|
||||
return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
|
||||
@ -389,12 +389,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTypeStored(Context context, Arguments args) {
|
||||
return new Object[] {tank.getTankType().getUnlocalizedName()};
|
||||
return new Object[] {tank.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()};
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()};
|
||||
}
|
||||
}
|
||||
|
||||
@ -392,19 +392,25 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I
|
||||
// do some opencomputer stuff
|
||||
@Override
|
||||
public String getComponentName() {
|
||||
return "ntm_energy_storage"; // need a way to somehow detect the first word of the energy storage block so people wont get confused when it comes to multiple energy storage blocks
|
||||
return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block)
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyStored(Context context, Arguments args) {
|
||||
return new Object[] {getPower()};
|
||||
public Object[] getEnergyStored(Context context, Arguments args) { //TODO for gamma: when ready remove these deprecated functions in all components
|
||||
return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getMaxEnergy(Context context, Arguments args) {
|
||||
return new Object[] {getMaxPower()};
|
||||
return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getEnergyInfo(Context context, Arguments args) {
|
||||
return new Object[] {getPower(), getMaxPower()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 8)
|
||||
|
||||
@ -487,12 +487,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getTypeStored(Context context, Arguments args) {
|
||||
return new Object[] {tank.getTankType().getUnlocalizedName()};
|
||||
return new Object[] {tank.getTankType().getName()};
|
||||
}
|
||||
|
||||
@Callback(direct = true, limit = 4)
|
||||
@Optional.Method(modid = "OpenComputers")
|
||||
public Object[] getInfo(Context context, Arguments args) {
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getUnlocalizedName()};
|
||||
return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()};
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ import java.util.Random;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockLoot.TileEntityLoot;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.items.special.ItemBookLore;
|
||||
import com.hbm.items.ItemAmmoEnums.AmmoFatman;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
@ -21,6 +22,15 @@ public class LootGenerator {
|
||||
loot.addItem(stack, x + rand.nextGaussian() * 0.02, y, z + rand.nextGaussian() * 0.02);
|
||||
}
|
||||
|
||||
public static void lootBooklet(World world, int x, int y, int z) {
|
||||
|
||||
TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z);
|
||||
|
||||
if(loot != null && loot.items.isEmpty()) {
|
||||
loot.addItem(ItemBookLore.createBook("beacon", 12, 0x404040, 0xD637B3), 0, 0, 0);;
|
||||
}
|
||||
}
|
||||
|
||||
public static void lootCapNuke(World world, int x, int y, int z) {
|
||||
|
||||
TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z);
|
||||
|
||||
44
src/main/java/com/hbm/util/TrackerUtil.java
Normal file
@ -0,0 +1,44 @@
|
||||
package com.hbm.util;
|
||||
|
||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.EntityTracker;
|
||||
import net.minecraft.entity.EntityTrackerEntry;
|
||||
import net.minecraft.network.play.server.S18PacketEntityTeleport;
|
||||
import net.minecraft.util.IntHashMap;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
|
||||
/**
|
||||
* This absolute fucking mess of a class is the direct consequence of mojank's terrible entity tracker that allows for 0 flexibility with how entities are synced.
|
||||
*
|
||||
* @author hbm
|
||||
*/
|
||||
public class TrackerUtil {
|
||||
|
||||
/** Grabs the tracker entry from the given entity */
|
||||
public static EntityTrackerEntry getTrackerEntry(WorldServer world, int entityId) {
|
||||
EntityTracker entitytracker = world.getEntityTracker();
|
||||
IntHashMap map = ReflectionHelper.getPrivateValue(EntityTracker.class, entitytracker, "trackedEntityIDs", "field_72794_c");
|
||||
EntityTrackerEntry entry = (EntityTrackerEntry) map.lookup(entityId);
|
||||
return entry;
|
||||
}
|
||||
|
||||
/** Force-teleports the given entity using the tracker, resetting the tick count to 0 to prevent movement during this tick */
|
||||
public static void sendTeleport(World world, Entity e) {
|
||||
|
||||
if(world instanceof WorldServer) {
|
||||
WorldServer server = (WorldServer) world;
|
||||
EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId());
|
||||
int xScaled = e.myEntitySize.multiplyBy32AndRound(e.posX);
|
||||
int yScaled = MathHelper.floor_double(e.posY * 32.0D);
|
||||
int zScaled = e.myEntitySize.multiplyBy32AndRound(e.posZ);
|
||||
int yaw = MathHelper.floor_float(e.rotationYaw * 256.0F / 360.0F);
|
||||
int pitch = MathHelper.floor_float(e.rotationPitch * 256.0F / 360.0F);
|
||||
entry.func_151259_a(new S18PacketEntityTeleport(e.getEntityId(), xScaled, yScaled, zScaled, (byte)yaw, (byte)pitch));
|
||||
//this prevents the tracker from sending movement updates in the same tick
|
||||
entry.ticks = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,6 @@ import java.util.Random;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.WorldConfig;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.interfaces.Spaghetti;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
@ -121,11 +120,6 @@ public class Meteorite {
|
||||
generateSphere5x5(world, rand, x, y, z, list10);
|
||||
setBlock(world, x, y, z, ModBlocks.taint, 9, 2);
|
||||
return;
|
||||
case 11:
|
||||
// Atomic meteorite
|
||||
|
||||
ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, safe ? ExplosionNukeSmall.PARAMS_SAFE : ExplosionNukeSmall.PARAMS_MEDIUM);
|
||||
return;
|
||||
case 12:
|
||||
// Star Blaster
|
||||
world.createExplosion(null, x + 0.5, y + 0.5, z + 0.5, 10F, !safe);
|
||||
|
||||
@ -1010,6 +1010,7 @@ item.ammo_grenade_finned.name=40mm Granate (Geflügelt)
|
||||
item.ammo_grenade_he.name=40mm Granate (HE)
|
||||
item.ammo_grenade_incendiary.name=40mm Granate (Brand)
|
||||
item.ammo_grenade_kampf.name=40mm Rakete
|
||||
item.ammo_grenade_leadburster.name=40mm Leadburster
|
||||
item.ammo_grenade_nuclear.name=40mm Granate (Привет)
|
||||
item.ammo_grenade_phosphorus.name=40mm Granate (WP)
|
||||
item.ammo_grenade_sleek.name=40mm Granate (IF-F&E)
|
||||
@ -3942,6 +3943,8 @@ tile.lamp_tritium_blue_off.name=Blaue Tritiumlampe
|
||||
tile.lamp_tritium_blue_on.name=Blaue Tritiumlampe
|
||||
tile.lamp_tritium_green_off.name=Grüne Tritiumlampe
|
||||
tile.lamp_tritium_green_on.name=Grüne Tritiumlampe
|
||||
tile.lantern.name=Laterne
|
||||
tile.lantern_behemoth.name=Alte Laterne
|
||||
tile.launch_pad.name=Raketenabschussrampe
|
||||
tile.launch_table.name=Große Startrampe
|
||||
tile.leaves_layer.name=Totes Laub
|
||||
@ -3950,6 +3953,8 @@ tile.machine_amgen.name=Umgebungsstrahlungs-Generator
|
||||
tile.machine_arc_furnace_off.name=Lichtbogenofen
|
||||
tile.machine_arc_furnace_on.name=Lichtbogenofen
|
||||
tile.machine_armor_table.name=Rüstungsmodifikationstisch
|
||||
tile.machine_ashpit.name=Ashekasten
|
||||
tile.machine_ashpit.desc=Sammelt Asche von Feuerbüchsen und Heizöfen
|
||||
tile.machine_assembler.name=Fertigungsmaschine
|
||||
tile.machine_assemfac.name=Fertigungsfabrik
|
||||
tile.machine_autocrafter.name=Automatische Werkbank
|
||||
|
||||
@ -442,8 +442,8 @@ book_lore.beacon.page.5=light up red, otherwise it will light up green. Note tha
|
||||
book_lore.beacon.page.6=Chapter 3: Fog Horn $ The fog horn is the primary communication device of the beacon. The beacon is designed for peer-to-peer (P2P) communication as well as for message broadcasting.
|
||||
book_lore.beacon.page.7=Chapter 4: Peer-to-Peer $ For details on communication, refer to the communications handbook. A short rundown of establishing a P2P connection follows: First, the beacon has to give the "START CONNECTION" signal,
|
||||
book_lore.beacon.page.8=being a single long tone. All available peers should respond with a single long tone as well (order specified by proximity, as well as the communication guidelines outlined in the handbook, section "Responding to a Connection")
|
||||
book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals,
|
||||
book_lore.beacon.page.10=most commonly using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION".
|
||||
book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals, most commonly
|
||||
book_lore.beacon.page.10=using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION".
|
||||
book_lore.beacon.page.11=Chapter 5: Warranty $ [ page intentionally left blank ]
|
||||
|
||||
cannery.f1=[ Press F1 for help ]
|
||||
@ -914,6 +914,7 @@ desc.item.ammo.neu_fun=* Fun for the whole family!
|
||||
desc.item.ammo.neu_heavy_metal=* Heavy Metal
|
||||
desc.item.ammo.neu_homing=* Homing
|
||||
desc.item.ammo.neu_jolt=* Jolt
|
||||
desc.item.ammo.neu_leadburster=* Attaches to surfaces and sprays bullets
|
||||
desc.item.ammo.neu_less_bouncy=* Less bouncy
|
||||
desc.item.ammo.neu_maskman_flechette=* Fires a tracer which summons a storm of DU-flechettes
|
||||
desc.item.ammo.neu_maskman_meteorite=* Fires a high-damage round that summons a small meteorite
|
||||
@ -1103,7 +1104,8 @@ gun.make.MANN=Open Mann Co.
|
||||
gun.make.MAXIM=Hiram Maxim
|
||||
gun.make.METRO=Metro Gunsmiths
|
||||
gun.make.MWT=MWT Prototype Labs
|
||||
gun.make.NAZI=Erfurter Maschinenfabrik Geipel
|
||||
gun.make.NAWS=Kayarm Industries
|
||||
gun.make.ERFURT=Erfurter Maschinenfabrik Geipel
|
||||
gun.make.NONE=-
|
||||
gun.make.RAYTHEON=Raytheon Missile Systems
|
||||
gun.make.REMINGTON=Remington Arms
|
||||
@ -1127,6 +1129,7 @@ gun.name.benelli=Benelli M4 Super 90
|
||||
gun.name.benelliDrum=Benelli M4 Super 90 (Drum Magazine Modification)
|
||||
gun.name.bio=RI No. 2 Mark 1
|
||||
gun.name.bolter=Manticora Pattern Boltgun
|
||||
gun.name.congoLake=Congo Lake Pump-Action Grenade Launcher
|
||||
gun.name.cPython=Colt Python
|
||||
gun.name.cz53=CZ53 Personal Minigun
|
||||
gun.name.cz57=CZ57 Avenger Minigun
|
||||
@ -1657,6 +1660,7 @@ item.ammo_grenade_finned.name=40mm Grenade (Finned)
|
||||
item.ammo_grenade_he.name=40mm Grenade (HE)
|
||||
item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary)
|
||||
item.ammo_grenade_kampf.name=40mm Rocket
|
||||
item.ammo_grenade_leadburster.name=40mm Leadburster
|
||||
item.ammo_grenade_nuclear.name=40mm Grenade (Привет)
|
||||
item.ammo_grenade_phosphorus.name=40mm Grenade (WP)
|
||||
item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D)
|
||||
@ -1736,6 +1740,7 @@ item.ams_focus_limiter.desc=Maximum performance for restriction field:$Standard
|
||||
item.ams_lens.name=Stabilizer Lens
|
||||
item.ams_muzzle.name=Ray-Emission Muzzle
|
||||
item.ams_muzzle.desc=...it emits an energy-beam thingy.
|
||||
item.analysis_tool.name=Analysis Tool
|
||||
item.analyzer.name=Analyzer
|
||||
item.anchor_remote.name=Recall Device
|
||||
item.antiknock.name=Tetraethyllead Antiknock Agent
|
||||
@ -2597,6 +2602,7 @@ item.gun_calamity_ammo.name=.50 BMG Round (LEGACY)
|
||||
item.gun_calamity_dual.name=Saddle Gun
|
||||
item.gun_chemthrower.name=Chemthrower
|
||||
item.gun_coilgun.name=Coilgun
|
||||
item.gun_congolake.name=Congo Lake
|
||||
item.gun_cryolator.name=The Cryolator
|
||||
item.gun_cryolator_ammo.name=Cryo Cell
|
||||
item.gun_dampfmaschine.name=Totally Not a Joke Weapon
|
||||
@ -3476,6 +3482,9 @@ item.powder_advanced_alloy.name=Advanced Alloy Powder
|
||||
item.powder_aluminium.name=Aluminium Powder
|
||||
item.powder_asbestos.name=Asbestos Powder
|
||||
item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r
|
||||
item.powder_ash.coal.name=Coal Ash
|
||||
item.powder_ash.misc.name=Ash
|
||||
item.powder_ash.wood.name=Wood Ash
|
||||
item.powder_astatine.name=Astatine Powder
|
||||
item.powder_at209.name=Astatine-209 Powder
|
||||
item.powder_au198.name=Gold-198 Powder
|
||||
@ -4866,6 +4875,8 @@ tile.lamp_tritium_blue_off.name=Blue Tritium Lamp
|
||||
tile.lamp_tritium_blue_on.name=Blue Tritium Lamp
|
||||
tile.lamp_tritium_green_off.name=Green Tritium Lamp
|
||||
tile.lamp_tritium_green_on.name=Green Tritium Lamp
|
||||
tile.lantern.name=Lantern
|
||||
tile.lantern_behemoth.name=Old Lantern
|
||||
tile.launch_pad.name=Missile Launch Pad
|
||||
tile.launch_table.name=Large Launch Pad
|
||||
tile.leaves_layer.name=Fallen Leaves
|
||||
@ -4874,6 +4885,8 @@ tile.machine_amgen.name=Ambience Radiation Generator
|
||||
tile.machine_arc_furnace_off.name=Arc Furnace
|
||||
tile.machine_arc_furnace_on.name=Arc Furnace
|
||||
tile.machine_armor_table.name=Armor Modification Table
|
||||
tile.machine_ashpit.name=Ashpit
|
||||
tile.machine_ashpit.desc=Collects ashes from fireboxes and heating ovens
|
||||
tile.machine_assembler.name=Assembly Machine
|
||||
tile.machine_assemfac.name=Assembly Factory
|
||||
tile.machine_autocrafter.name=Automatic Crafting Table
|
||||
|
||||
@ -8,7 +8,7 @@ achievement.breeding.desc=谢谢你们,上帝保佑你们,上帝保佑美利
|
||||
achievement.breeding=反话
|
||||
achievement.bismuth.desc=还记得有人抱怨了一个月吗?我愿意。
|
||||
achievement.bismuth=铋
|
||||
achievement.blastFurnace.desc=他们为制造探险家1号去打捞了一艘沉没的无畏舰。
|
||||
achievement.blastFurnace.desc=他们为制造探险者1号去打捞了一艘沉没的无畏舰。
|
||||
achievement.blastFurnace=煤和铁
|
||||
achievement.bossCreeper.desc=核爆爬行者? 那是个什么玩意?!
|
||||
achievement.bossCreeper=四条腿的行走核弹
|
||||
@ -350,7 +350,7 @@ book_lore.resignation_note.page.0=Management downsized our department again yest
|
||||
book_lore.resignation_note.page.1=管理层昨天又对我们的部门进行裁员了。那群白痴要怪只能怪他们自己,我都不知道他们在那场惨败后还在期待什么。到底是谁他妈泄露了那种程度的信息?
|
||||
book_lore.resignation_note.page.2=我们损失了几百万,而且现在失业的还是爷。老子希望你们这帮混蛋最后能从你们的一堆问题中学到点教训然后给爷滚去自闭。
|
||||
book_lore.memo_stocks.name=公司内部备忘录
|
||||
book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern.
|
||||
book_lore.memo_stocks.page.0=投资者关系 - $ $ 最新季度报告提供的数据存在一些明显差异。财务部门做出一些调整是谨慎的,所以不必有任何担忧。
|
||||
book_lore.memo_schrab_gsa.name=内部备忘录
|
||||
book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum
|
||||
book_lore.memo_schrab_gsa.page.1=合同管理记录 - 法务部在与美国国防部后勤局的谈判中取得了突破。他们批准了450亿的联邦采购服务总署投资资金用于异变金属的采购与研究。
|
||||
@ -377,13 +377,13 @@ book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no go
|
||||
book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters.
|
||||
book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy
|
||||
book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be
|
||||
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
|
||||
book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison.
|
||||
book_lore.bf_bomb_3.name=私人笔记
|
||||
book_lore.bf_bomb_3.author=M. 波特
|
||||
book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze
|
||||
book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some
|
||||
book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into
|
||||
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
|
||||
book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off.
|
||||
book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through
|
||||
book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people...
|
||||
book_lore.bf_bomb_4.name=私人笔记
|
||||
@ -404,6 +404,20 @@ book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hil
|
||||
book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows!
|
||||
book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back
|
||||
book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself...
|
||||
book_lore.beacon.name=信号信标说明书
|
||||
book_lore.beacon.author=Flim Flam工业
|
||||
book_lore.beacon.page.0=感谢您购买Mk.2照明信号信标(版本1.3)!这本小册子将简要介绍信标的操作及其内部工作原理。
|
||||
book_lore.beacon.page.1=第1章:建筑$每个单元由四个主要部分组成:控制电路、灯笼、雾灯和容纳其他部分的外壳。有关主电路的详细说明,请
|
||||
book_lore.beacon.page.2=灯笼由聚碳酸酯外壳组成,外壳内有一个标准200mm的双色250瓦卤素灯泡,因此灯泡可以从我们的商店订购。
|
||||
book_lore.beacon.page.3=不建议使用第三方灯泡,因为我们无法确保安全操作。外壳由专门的镀锌不锈钢制成,具有耐用性。
|
||||
book_lore.beacon.page.4=第2章:灯笼$灯笼的主要用途是在恶劣的天气条件下提供照明,便于维护,以及状态指示器。如果开机自检(POST)失败,指示灯将
|
||||
book_lore.beacon.page.5=亮起红色,否则就会亮起绿色。请注意,颜色可能因更换灯泡的不同而有所不同。
|
||||
book_lore.beacon.page.6=第3章:雾灯$雾灯是信标的主要通信设备。该信标被设计用于对等(P2P)通信以及消息广播。
|
||||
book_lore.beacon.page.7=第4章:对等$有关通信的详细信息,请参阅通信手册。建立P2P连接的简要介绍如下:首先,信标必须给出“START connection”信号,
|
||||
book_lore.beacon.page.8=是单一的长音。所有可用的对等端也应使用一个长音进行响应(由接近度指定的顺序,以及手册“响应连接”一节中概述的通信指南)
|
||||
book_lore.beacon.page.9=一旦所需对等端做出响应,则给出“ACCEPT CONNECTION”信号,即两个长音,然后对等端也将用两个长音调进行响应。之后的所有通信都必须使用预先协商的信号来进行,
|
||||
book_lore.beacon.page.10=最常用的是FAR-5M标准。如果没有协商标准,沟通将立即结束,起到“ping”的作用。如果通信继续,可以使用另一个长单音“END connection”结束连接。
|
||||
book_lore.beacon.page.11=第5章:保修$[页面故意留空]
|
||||
cannery.f1=[按F1键获取帮助]
|
||||
cannery.centrifuge=气体离心机
|
||||
cannery.centrifuge.0=气体离心机可以使用通用流体管道传输流体。
|
||||
@ -567,6 +581,11 @@ chem.VIT_LIQUID=液态核废料玻璃化
|
||||
chem.XENON=林德循环制氙
|
||||
chem.XENON_OXY=增强林德循环制氙
|
||||
chem.YELLOWCAKE=黄饼生产
|
||||
commands.satellite.no_satellite=未找到使用此频率的卫星!
|
||||
commands.satellite.not_a_satellite=持有的物品不是卫星!
|
||||
commands.satellite.satellite_descended=卫星成功降落。
|
||||
commands.satellite.satellite_orbited=卫星发射。
|
||||
commands.satellite.should_be_run_as_player=此命令应该由玩家运行!
|
||||
container.amsBase=AMS基座(装饰)
|
||||
container.amsEmitter=AMS发射极(装饰)
|
||||
container.amsLimiter=AMS稳能器(装饰)
|
||||
@ -592,6 +611,7 @@ container.craneUnboxer=输送带解包机
|
||||
container.crateDesh=Desh箱
|
||||
container.crateIron=铁箱
|
||||
container.crateSteel=钢箱
|
||||
container.crateTemplate=模板箱
|
||||
container.crateTungsten=钨箱
|
||||
container.crystallizer=矿物酸化器
|
||||
container.cyclotron=回旋加速器
|
||||
@ -636,6 +656,7 @@ container.machineCompressor=压缩机
|
||||
container.machineCrucible=坩埚
|
||||
container.machineDiesel=柴油发电机
|
||||
container.machineElectricBoiler=电锅炉
|
||||
container.machineElectrolyser=电解机
|
||||
container.machineFEL=FEL
|
||||
container.machineITER=聚变反应堆
|
||||
container.machineLargeTurbine=工业汽轮机
|
||||
@ -693,6 +714,7 @@ container.reactorResearch=研究型反应堆
|
||||
container.reix=Rei-X主机
|
||||
container.rtg=放射性同位素发电机
|
||||
container.rtgFurnace=放射性同位素热力炉[RTG]
|
||||
container.rttyCounter=红石无线项目计数器
|
||||
container.rttyReceiver=无线红石接收器
|
||||
container.rttySender=无线红石发射器
|
||||
container.safe=保险箱
|
||||
@ -980,6 +1002,11 @@ entity.hbm.entity_balls_o_tron_seg.name=机械蠕虫
|
||||
entity.hbm.entity_bullet.name=子弹
|
||||
entity.hbm.entity_rocket.name=火箭弹
|
||||
entity.hbm.entity_schrabnel.name=Schrabnel
|
||||
excavator.crusher=粉碎开关
|
||||
excavator.drill=挖掘开关
|
||||
excavator.silktouch=精准采集开关
|
||||
excavator.veinminer=连锁挖矿开关
|
||||
excavator.walling=填充开关
|
||||
flare.ignition=点火装置
|
||||
flare.valve=流量阀
|
||||
fluid.acid_fluid=酸
|
||||
@ -1007,6 +1034,7 @@ gun.make.CERIX=赛里克斯·马格努斯锻造世界
|
||||
gun.make.COLT=柯尔特制造公司
|
||||
gun.make.COMBINE=世界工会
|
||||
gun.make.CUBE=Cube 2: Sauerbraten
|
||||
gun.make.DRG=深岩银河
|
||||
gun.make.ENZINGER=Enzinger工会
|
||||
gun.make.EQUESTRIA=小马国导弹系统
|
||||
gun.make.FLIMFLAM=FlimFlam“欺骗”工业
|
||||
@ -1107,7 +1135,7 @@ gun.name.tommy9=M1A1冲锋枪9毫米型
|
||||
gun.name.tommy=M1A1冲锋枪
|
||||
gun.name.topaz=重型火焰燃烧器
|
||||
gun.name.uacCarbine=UAC-41卡宾枪
|
||||
gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag
|
||||
gun.name.uacDeagle=UAC-H54“火星猛禽”大容量手枪
|
||||
gun.name.uacDMR=UAC-30 精确射手步枪
|
||||
gun.name.uacLMG=UAC-49轻机枪
|
||||
gun.name.uacPistol=UAC-B950 .45 标准型手枪
|
||||
@ -1221,6 +1249,7 @@ hbmfluid.heavyoil=重油
|
||||
hbmfluid.heavyoil_vacuum=减压重油
|
||||
hbmfluid.heavywater=重水
|
||||
hbmfluid.helium3=氦-3
|
||||
hbmfluid.helium4=氦-4
|
||||
hbmfluid.hotcrackoil=热裂化油
|
||||
hbmfluid.hotoil=热原油
|
||||
hbmfluid.hotsteam=热蒸汽
|
||||
@ -1259,7 +1288,7 @@ hbmfluid.plasma_dh3=氘-氦3 等离子体
|
||||
hbmfluid.plasma_dt=氘-氚等离子体
|
||||
hbmfluid.plasma_hd=氢-氘等离子体
|
||||
hbmfluid.plasma_ht=氢-氚等离子体
|
||||
hbmfluid.plasma_xm=氙-汞等离子体
|
||||
hbmfluid.plasma_xm=液氧-氦-4等离子体
|
||||
hbmfluid.potassium_chloride=氯化钾溶液
|
||||
hbmfluid.puf6=六氟化钚
|
||||
hbmfluid.radiosolvent=高性能溶剂
|
||||
@ -1272,6 +1301,9 @@ hbmfluid.sas3=三硫化Sa
|
||||
hbmfluid.schrabidic=Sa酸
|
||||
hbmfluid.seedslurry=播种浆料
|
||||
hbmfluid.smear=工业油
|
||||
hbmfluid.smoke=烟雾
|
||||
hbmfluid.smoke_leaded=含铅烟雾
|
||||
hbmfluid.smoke_poison=有毒烟雾
|
||||
hbmfluid.solvent=有机溶剂
|
||||
hbmfluid.sourgas=高硫天然气
|
||||
hbmfluid.spentsteam=低压蒸汽
|
||||
@ -1392,6 +1424,7 @@ hbmmat.watzmud=毒泥浆
|
||||
hbmmat.whitephosphorus=白磷
|
||||
hbmmat.workersalloy=Desh
|
||||
hbmmat.wroughtiron=锻铁
|
||||
hbmmat.zirconium=锆
|
||||
matshape.block=%s 块
|
||||
matshape.blocks=%s 块
|
||||
matshape.ingot=%s 锭
|
||||
@ -1540,6 +1573,9 @@ item.ammo_arty_phosgene.name=16英寸光气炮弹
|
||||
item.ammo_arty_phosphorus.name=16英寸磷炮弹
|
||||
item.ammo_arty_phosphorus_multi.name=16英寸多弹头磷炮弹
|
||||
item.ammo_cell.name=能量单元
|
||||
item.ammo_coilgun.name=钨制线圈枪子弹
|
||||
item.ammo_coilgun_du.name=铀铁合金制线圈枪子弹
|
||||
item.ammo_coilgun_rubber.name=橡胶制线圈枪子弹
|
||||
item.ammo_container.name=万能弹药盒
|
||||
item.ammo_dart.name=塑料镖[凋零]
|
||||
item.ammo_dart_nerf.name=NERF 飞镖
|
||||
@ -2208,8 +2244,8 @@ item.crystal_phosphorus.name=磷晶体
|
||||
item.crystal_plutonium.name=钚晶体
|
||||
item.crystal_rare.name=稀土晶体
|
||||
item.crystal_redstone.name=红石晶体
|
||||
item.crystal_schrabidium.name=低丰度Sa326晶体
|
||||
item.crystal_schraranium.name=Sa326晶体
|
||||
item.crystal_schrabidium.name=Sa326晶体
|
||||
item.crystal_schraranium.name=低丰度Sa326晶体
|
||||
item.crystal_starmetal.name=星辉晶体
|
||||
item.crystal_sulfur.name=硫晶体
|
||||
item.crystal_thorium.name=钍晶体
|
||||
@ -2309,6 +2345,7 @@ item.early_explosive_lenses.desc=8个炸药透镜的组装,带有铝合金推
|
||||
item.egg_balefire.name=野火蛋
|
||||
item.egg_balefire.desc=什么样的鸟儿才会下带有放射性的蛋?
|
||||
item.egg_balefire_shard.name=野火蛋碎片
|
||||
item.egg_glyphid.name=Glyphid Egg
|
||||
item.elec_axe.name=电锯
|
||||
item.elec_pickaxe.name=冲击钻
|
||||
item.elec_shovel.name=螺旋钻
|
||||
@ -2316,6 +2353,10 @@ item.elec_sword.name=电棍
|
||||
item.energy_core.name=临时能源核心
|
||||
item.entanglement_kit.name=纠缠部件
|
||||
item.entanglement_kit.desc=传送机制作零件$通过$铍增强型资源扫描仪实现尺寸转换。
|
||||
item.envsuit_boots.name=M1TTY环保套装靴子
|
||||
item.envsuit_helmet.name=M1TTY环保套装头盔
|
||||
item.envsuit_legs.name=M1TTY环保套装护腿
|
||||
item.envsuit_plate.name=M1TTY环保套装胸甲
|
||||
item.euphemium_boots.name=Ep靴子
|
||||
item.euphemium_capacitor.name=Ep电容
|
||||
item.euphemium_capacitor.desc=允许被动分散累积的正能量。
|
||||
@ -2430,11 +2471,14 @@ item.generator_front.name=发电机前部
|
||||
item.generator_steel.name=发电机主体
|
||||
item.glitch.name=故障
|
||||
item.glowing_stew.name=发光真菌煲
|
||||
item.glyphid_meat.name=异虫肉
|
||||
item.glyphid_meat_grilled.name=熟异虫肉
|
||||
item.goggles.name=护目镜
|
||||
item.grenade_aschrab.name=可抛反Sa326
|
||||
item.grenade_black_hole.name=黑洞手榴弹
|
||||
item.grenade_breach.name=破甲手榴弹
|
||||
item.grenade_burst.name=挖掘手榴弹
|
||||
item.grenate_cats.name=猫猫手榴弹
|
||||
item.grenade_cloud.name=一罐云
|
||||
item.grenade_cluster.name=集束手榴弹
|
||||
item.grenade_electric.name=闪电炸弹
|
||||
@ -2479,6 +2523,7 @@ item.gun_avenger.name=CZ57复仇者机枪
|
||||
item.gun_b92.name=§9B92能量手枪§r
|
||||
item.gun_b92_ammo.name=§9B92能量单元§r
|
||||
item.gun_b93.name=§cB93能量手枪§r
|
||||
item.gun_benelli.name=Benelli自动喷枪(Drum Mod)
|
||||
item.gun_bf.name=BEL
|
||||
item.gun_bf_ammo.name=Mk.V小型AMAT-炮弹 –野火型
|
||||
item.gun_bio_revolver.name=Atlas
|
||||
@ -2492,6 +2537,7 @@ item.gun_calamity.name=希特勒的电锯
|
||||
item.gun_calamity_ammo.name=.50BMG子弹
|
||||
item.gun_calamity_dual.name=马鞍枪
|
||||
item.gun_chemthrower.name=化学喷射器
|
||||
item.gun_coilgun.name=线圈枪
|
||||
item.gun_cryolator.name=冻结者
|
||||
item.gun_cryolator_ammo.name=急冻单元
|
||||
item.gun_dampfmaschine.name=绝对不是开玩笑的武器
|
||||
@ -2585,6 +2631,7 @@ item.gun_super_shotgun.name="超级"猎枪
|
||||
item.gun_super_shotgun.desc=超级烂!
|
||||
item.gun_supershotgun.name=超级猎枪
|
||||
item.gun_thompson.name=汤姆森冲锋枪
|
||||
item.gun_uac_pistol.name=UAC .45手枪
|
||||
item.gun_uboinik.name=Uboinik
|
||||
item.gun_uboinik_ammo.name=12x70 鹿弹
|
||||
item.gun_uzi.name=Uzi冲锋枪
|
||||
@ -3066,6 +3113,9 @@ item.mysteryshovel.name=易碎锹
|
||||
item.n2_charge.name=大型炸药
|
||||
item.neutrino_lens.name=中子透镜
|
||||
item.neutron_reflector.name=中子反射板
|
||||
item.night_vision.name=夜视眼镜
|
||||
item.night_vision.description.item=提供夜视功能(需要全套电动设备)
|
||||
item.night_vision.description.in_armor=%s(允许夜视)
|
||||
item.niter.name=硝石粉
|
||||
item.no9.name=矿工头盔
|
||||
item.nossy_hat.name=华丽的帽子
|
||||
@ -3838,6 +3888,9 @@ item.singularity_super_heated.name=超热共振奇点
|
||||
item.siox.name=SiOX抗癌药物
|
||||
item.siox.desc=使用石棉的力量逆转间皮瘤!
|
||||
item.siren_track.name=警报声轨
|
||||
item.sliding_blast_door_skin.0.name=滑动防爆门 皮肤:默认
|
||||
item.sliding_blast_door_skin.1.name=滑动防爆门 皮肤:变型1
|
||||
item.sliding_blast_door_skin.2.name=滑动防爆门 皮肤:变型2
|
||||
item.smashing_hammer.name=粉碎锤
|
||||
item.solid_fuel.name=固体燃料
|
||||
item.solid_fuel_bf.name=固体燃料(野火)
|
||||
@ -4421,6 +4474,7 @@ tile.charge_semtex.name=塞姆汀采矿炸药
|
||||
tile.charger.name=充电站
|
||||
tile.cheater_virus.name=冻结Ep
|
||||
tile.cheater_virus_seed.name=不稳定Ep Schrabide块
|
||||
tile.chimney_brick.name=烟囱
|
||||
tile.chlorine_gas.name=氯气
|
||||
tile.cluster_aluminium.name=铝矿簇
|
||||
tile.cluster_copper.name=铜矿簇
|
||||
@ -4429,6 +4483,30 @@ tile.cluster_depth_titanium.name=深层钛矿簇
|
||||
tile.cluster_depth_tungsten.name=深层钨矿簇
|
||||
tile.cluster_iron.name=铁矿簇
|
||||
tile.cluster_titanium.name=钛矿簇
|
||||
tile.cm_block.alloy.name=高级合金机器外壳
|
||||
tile.cm_block.desh.name=Desh机器外壳
|
||||
tile.cm_block.steel.name=钢制机器外壳
|
||||
tile.cm_block.tcalloy.name=锝钢机器外壳
|
||||
tile.cm_circuit.aluminium.name=一级电路块
|
||||
tile.cm_circuit.copper.name=二级电路块
|
||||
tile.cm_circuit.gold.name=四级电路块
|
||||
tile.cm_circuit.red_copper.name=三级电路块
|
||||
tile.cm_circuit.schrabidium.name=五级电路块
|
||||
tile.cm_engine.bismuth.name=铋电机组
|
||||
tile.cm_engine.desh.name=DESH电机组
|
||||
tile.cm_engine.standard.name=电机组
|
||||
tile.cm_port.alloy.name=高级合金端口
|
||||
tile.cm_port.desh.name=Desh端口
|
||||
tile.cm_port.steel.name=钢制端口
|
||||
tile.cm_port.tcalloy.name=锝钢端口
|
||||
tile.cm_sheet.alloy.name=高级合金建筑板
|
||||
tile.cm_sheet.desh.name=Desh建筑板
|
||||
tile.cm_sheet.steel.name=钢建筑板
|
||||
tile.cm_sheet.tcalloy.name=锝钢建筑板
|
||||
tile.cm_tank.alloy.name=高级合金储罐
|
||||
tile.cm_tank.desh.name=Desh储罐
|
||||
tile.cm_tank.steel.name=钢制储罐
|
||||
tile.cm_tank.tcalloy.name=锝钢储罐
|
||||
tile.cmb_brick.name=CMB钢瓦块
|
||||
tile.cmb_brick_reinforced.name=加固CMB钢砖块
|
||||
tile.compact_launcher.name=紧凑型发射台
|
||||
@ -4497,6 +4575,7 @@ tile.crate_lead.name=危险品补给箱
|
||||
tile.crate_metal.name=机器补给箱
|
||||
tile.crate_red.name=红色补给箱
|
||||
tile.crate_steel.name=钢箱
|
||||
tile.crate_template.name=模板箱
|
||||
tile.crate_tungsten.name=钨箱
|
||||
tile.crate_weapon.name=武器补给箱
|
||||
tile.crystal_hardened.name=硬化黑水晶
|
||||
@ -4595,11 +4674,14 @@ tile.flame_war.name=盒中论战
|
||||
tile.float_bomb.name=悬浮炸弹
|
||||
tile.fluid_duct.name=通用流体管道
|
||||
tile.fluid_duct_box.name=通用流体管道(方形)
|
||||
tile.fluid_duct_exhaust.name=排气管
|
||||
tile.fluid_duct_gauge.name=流量计管
|
||||
tile.fluid_duct_gauge.desc=显示每个游戏刻在管网有多少流体移动的管道$由桶或罐连接的分离网络被视为一个共享网络。
|
||||
tile.fluid_duct_neo.name=通用流体管道
|
||||
tile.fluid_duct_paintable.name=可喷漆涂层通用流体导管
|
||||
tile.fluid_duct_solid.name=带涂层的通用流体导管
|
||||
tile.fluid_switch.name=红石流体阀
|
||||
tile.fluid_valve.name=流体阀
|
||||
tile.foam_layer.name=泡沫层
|
||||
tile.foundry_basin.name=铸造盘
|
||||
tile.foundry_channel.name=铸造浇道
|
||||
@ -4671,6 +4753,10 @@ tile.hadron_coil_neodymium.name=致密钕线圈
|
||||
tile.hadron_coil_schrabidate.name=致密Sa酸铁线圈
|
||||
tile.hadron_coil_schrabidium.name=密集Sa326线圈
|
||||
tile.hadron_coil_starmetal.name=密集星辉线圈
|
||||
tile.hadron_cooler.name=粒子加速器冷却装置
|
||||
tile.hadron_cooler.desc=冷却功率:10$过冷阈值:10$冷却加成:+10%%$过冷惩罚:-25%%
|
||||
tile.hadron_cooler_mk2.name=粒子加速器冷却装置-回文特制
|
||||
tile.hadron_cooler_mk2.desc=冷却功率:5$效率功能:2-(冷却-15)2/225$最高惩罚:-90%%
|
||||
tile.hadron_core.name=粒子加速器核心组件
|
||||
tile.hadron_diode.name=肖基特二极管
|
||||
tile.hadron_plating.name=粒子加速器镀层
|
||||
@ -4769,6 +4855,7 @@ tile.machine_dineutronium_battery.name=Spark蓄电池
|
||||
tile.machine_drill.name=自动采矿钻机
|
||||
tile.machine_electric_furnace_off.name=电炉
|
||||
tile.machine_electric_furnace_on.name=电炉
|
||||
tile.machine_electrolyser.name=电解机
|
||||
tile.machine_epress.name=电动锻压机
|
||||
tile.machine_excavator.name=大型采矿钻机
|
||||
tile.machine_fel.name=FEL自由电子激光器
|
||||
@ -4782,6 +4869,8 @@ tile.machine_gascent.name=气体离心机
|
||||
tile.machine_generator.name=核反应堆[旧]
|
||||
tile.machine_geo.name=地热发电机
|
||||
tile.machine_hephaestus.name=地热换热器
|
||||
tile.machine_industrial_boiler.name=工业锅炉
|
||||
tile.machine_industrial_boiler.desc=可以烧水或加热油的大型锅炉$需要外部热源$传热率:ΔT*0.01 TU/T$不会爆炸
|
||||
tile.machine_industrial_generator.name=工业发电机
|
||||
tile.machine_keyforge.name=锁匠桌
|
||||
tile.machine_large_turbine.name=工业汽轮机
|
||||
@ -4988,6 +5077,8 @@ tile.pribris.name=RBMK石墨式反应堆残骸
|
||||
tile.pribris_burning.name=燃烧的RBMK反应堆残骸
|
||||
tile.pribris_digamma.name=发黑的RBMK反应堆残骸
|
||||
tile.pribris_radiating.name=阴燃的RBMK反应堆残骸
|
||||
tile.radio_torch_counter.name=红石无线项目计数器
|
||||
tile.radio_torch_counter.desc=平面或比较器兼容块上的标牌$根据匹配项目的数量发出信号
|
||||
tile.radio_torch_receiver.name=无线红石信号接收器
|
||||
tile.radio_torch_receiver.desc=可在平坦表面或与比较器兼容的方块上放置
|
||||
tile.radio_torch_sender.name=无线红石信号发射器
|
||||
@ -5080,6 +5171,7 @@ tile.sellafield.4.name=地狱般的放射性熔融凝固物
|
||||
tile.sellafield.5.name=放射性熔融凝固物核心
|
||||
tile.sellafield_slaked.name=消沉的放射性熔融凝固物
|
||||
tile.semtex.name=塞姆汀塑胶炸药
|
||||
tile.sliding_blast_door.name=滑动防爆门
|
||||
tile.solar_mirror.name=定日镜
|
||||
tile.soyuz_capsule.name=货物着陆舱
|
||||
tile.soyuz_launcher.name=联盟号发射平台
|
||||
|
||||
1671
src/main/resources/assets/hbm/models/projectiles/leadburster.obj
Normal file
500
src/main/resources/assets/hbm/models/trinkets/lantern.obj
Normal file
@ -0,0 +1,500 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'lantern.blend'
|
||||
# www.blender.org
|
||||
o Light
|
||||
v 0.187500 4.062500 0.187500
|
||||
v 0.312500 4.812500 0.312500
|
||||
v 0.187500 4.062500 -0.187500
|
||||
v 0.312500 4.812500 -0.312500
|
||||
v -0.181700 4.062500 0.187500
|
||||
v -0.306700 4.812500 0.312500
|
||||
v -0.181700 4.062500 -0.187500
|
||||
v -0.306700 4.812500 -0.312500
|
||||
vn 0.0000 -0.1644 0.9864
|
||||
vn -0.9864 -0.1644 0.0000
|
||||
vn 0.0000 -0.1644 -0.9864
|
||||
vn 0.9864 -0.1644 0.0000
|
||||
s off
|
||||
f 2//1 5//1 1//1
|
||||
f 7//2 6//2 8//2
|
||||
f 3//3 8//3 4//3
|
||||
f 1//4 4//4 2//4
|
||||
f 2//1 6//1 5//1
|
||||
f 7//2 5//2 6//2
|
||||
f 3//3 7//3 8//3
|
||||
f 1//4 3//4 4//4
|
||||
o Lantern
|
||||
v -0.125000 -0.250000 0.125000
|
||||
v 0.125000 -0.250000 0.125000
|
||||
v -0.125000 -0.250000 -0.125000
|
||||
v 0.125000 -0.250000 -0.125000
|
||||
v -0.125000 0.937500 0.125000
|
||||
v 0.125000 0.937500 0.125000
|
||||
v -0.125000 0.937500 -0.125000
|
||||
v 0.125000 0.937500 -0.125000
|
||||
v -0.062500 1.000000 0.062500
|
||||
v 0.062500 1.000000 0.062500
|
||||
v -0.062500 1.000000 -0.062500
|
||||
v 0.062500 1.000000 -0.062500
|
||||
v -0.125000 1.062500 0.125000
|
||||
v 0.125000 1.062500 0.125000
|
||||
v -0.125000 1.062500 -0.125000
|
||||
v 0.125000 1.062500 -0.125000
|
||||
v -0.125000 1.187500 0.125000
|
||||
v 0.125000 1.187500 0.125000
|
||||
v -0.125000 1.187500 -0.125000
|
||||
v 0.125000 1.187500 -0.125000
|
||||
v -0.062500 1.250000 0.062500
|
||||
v 0.062500 1.250000 0.062500
|
||||
v -0.062500 1.250000 -0.062500
|
||||
v 0.062500 1.250000 -0.062500
|
||||
v -0.062500 3.250000 -0.062500
|
||||
v -0.062500 3.250000 0.062500
|
||||
v 0.062500 3.250000 0.062500
|
||||
v 0.062500 3.250000 -0.062500
|
||||
v -0.125000 3.312500 -0.125000
|
||||
v -0.125000 3.312500 0.125000
|
||||
v 0.125000 3.312500 0.125000
|
||||
v 0.125000 3.312500 -0.125000
|
||||
v -0.125000 3.437500 -0.125000
|
||||
v -0.125000 3.437500 0.125000
|
||||
v 0.125000 3.437500 0.125000
|
||||
v 0.125000 3.437500 -0.125000
|
||||
v -0.062500 3.500000 -0.062500
|
||||
v -0.062500 3.500000 0.062500
|
||||
v 0.062500 3.500000 0.062500
|
||||
v 0.062500 3.500000 -0.062500
|
||||
v -0.062500 4.000000 -0.062500
|
||||
v -0.062500 4.000000 0.062500
|
||||
v 0.062500 4.000000 0.062500
|
||||
v 0.062500 4.000000 -0.062500
|
||||
v -0.250000 4.000000 0.250000
|
||||
v 0.250000 4.000000 0.250000
|
||||
v -0.250000 4.000000 -0.250000
|
||||
v 0.250000 4.000000 -0.250000
|
||||
v -0.250000 4.062500 -0.250000
|
||||
v -0.250000 4.062500 0.250000
|
||||
v 0.250000 4.062500 0.250000
|
||||
v 0.250000 4.062500 -0.250000
|
||||
v 0.250000 4.062500 0.250000
|
||||
v 0.250000 4.062500 0.187500
|
||||
v 0.187500 4.062500 0.250000
|
||||
v 0.187500 4.062500 0.187500
|
||||
v 0.375000 4.812500 0.375000
|
||||
v 0.375000 4.812500 0.312500
|
||||
v 0.312500 4.812500 0.375000
|
||||
v 0.312500 4.812500 0.312500
|
||||
v 0.250000 4.062500 -0.187500
|
||||
v 0.250000 4.062500 -0.250000
|
||||
v 0.187500 4.062500 -0.187500
|
||||
v 0.187500 4.062500 -0.250000
|
||||
v 0.375000 4.812500 -0.312500
|
||||
v 0.375000 4.812500 -0.375000
|
||||
v 0.312500 4.812500 -0.312500
|
||||
v 0.312500 4.812500 -0.375000
|
||||
v -0.181700 4.062500 0.250000
|
||||
v -0.181700 4.062500 0.187500
|
||||
v -0.244200 4.062500 0.250000
|
||||
v -0.244200 4.062500 0.187500
|
||||
v -0.306700 4.812500 0.375000
|
||||
v -0.306700 4.812500 0.312500
|
||||
v -0.369200 4.812500 0.375000
|
||||
v -0.369200 4.812500 0.312500
|
||||
v -0.181700 4.062500 -0.187500
|
||||
v -0.181700 4.062500 -0.250000
|
||||
v -0.244200 4.062500 -0.187500
|
||||
v -0.244200 4.062500 -0.250000
|
||||
v -0.306700 4.812500 -0.312500
|
||||
v -0.306700 4.812500 -0.375000
|
||||
v -0.369200 4.812500 -0.312500
|
||||
v -0.369200 4.812500 -0.375000
|
||||
v 0.375000 4.812500 0.375000
|
||||
v 0.375000 4.812500 -0.375000
|
||||
v -0.369200 4.812500 0.375000
|
||||
v -0.369200 4.812500 -0.375000
|
||||
v 0.375000 4.875000 0.375000
|
||||
v 0.375000 4.875000 -0.375000
|
||||
v -0.369200 4.875000 0.375000
|
||||
v -0.369200 4.875000 -0.375000
|
||||
v 0.125000 5.000000 -0.125000
|
||||
v 0.125000 5.000000 0.125000
|
||||
v -0.119200 5.000000 0.125000
|
||||
v -0.119200 5.000000 -0.125000
|
||||
v -0.059600 5.000000 0.062500
|
||||
v 0.065400 5.000000 0.062500
|
||||
v -0.059600 5.000000 -0.062500
|
||||
v 0.065400 5.000000 -0.062500
|
||||
v -0.059600 5.500000 0.062500
|
||||
v 0.065400 5.500000 0.062500
|
||||
v -0.059600 5.500000 -0.062500
|
||||
v 0.065400 5.500000 -0.062500
|
||||
vt 0.764706 0.176471
|
||||
vt 1.000000 0.235294
|
||||
vt 0.764706 0.235294
|
||||
vt 0.294118 0.279412
|
||||
vt 0.117647 0.294118
|
||||
vt 0.058824 0.279412
|
||||
vt 0.294118 -0.000000
|
||||
vt 0.058824 0.279412
|
||||
vt 0.058824 -0.000000
|
||||
vt 0.294118 -0.000000
|
||||
vt 0.058824 0.279412
|
||||
vt 0.058824 -0.000000
|
||||
vt 0.294118 -0.000000
|
||||
vt 0.058824 -0.000000
|
||||
vt 0.294118 -0.000000
|
||||
vt 0.058824 0.279412
|
||||
vt 0.058824 -0.000000
|
||||
vt 0.235294 0.294118
|
||||
vt 0.058824 0.308824
|
||||
vt 0.117647 0.294118
|
||||
vt 0.294118 0.279412
|
||||
vt 0.117647 0.294118
|
||||
vt 0.294118 0.279412
|
||||
vt 0.294118 0.279412
|
||||
vt 0.117647 0.294118
|
||||
vt 0.294118 0.308824
|
||||
vt 0.058824 0.338235
|
||||
vt 0.058824 0.308824
|
||||
vt 0.235294 0.294118
|
||||
vt 0.235294 0.294118
|
||||
vt 0.058824 0.308824
|
||||
vt 0.235294 0.294118
|
||||
vt 0.058824 0.308824
|
||||
vt 0.294118 0.338235
|
||||
vt 0.117647 0.352941
|
||||
vt 0.058824 0.338235
|
||||
vt 0.294118 0.308824
|
||||
vt 0.294118 0.308824
|
||||
vt 0.058824 0.338235
|
||||
vt 0.294118 0.308824
|
||||
vt 0.058824 0.338235
|
||||
vt 0.235294 0.352941
|
||||
vt 0.117647 0.823529
|
||||
vt 0.117647 0.352941
|
||||
vt 0.294118 0.338235
|
||||
vt 0.117647 0.352941
|
||||
vt 0.294118 0.338235
|
||||
vt 0.294118 0.338235
|
||||
vt 0.117647 0.352941
|
||||
vt 0.117647 0.823529
|
||||
vt 0.294118 0.838235
|
||||
vt 0.058824 0.838235
|
||||
vt 0.235294 0.352941
|
||||
vt 0.117647 0.823529
|
||||
vt 0.235294 0.352941
|
||||
vt 0.235294 0.352941
|
||||
vt 0.117647 0.823529
|
||||
vt 0.058824 0.867647
|
||||
vt 0.294118 0.838235
|
||||
vt 0.058824 0.838235
|
||||
vt 0.294118 0.838235
|
||||
vt 0.058824 0.838235
|
||||
vt 0.294118 0.838235
|
||||
vt 0.058824 0.838235
|
||||
vt 0.294118 0.867647
|
||||
vt 0.117647 0.882353
|
||||
vt 0.058824 0.867647
|
||||
vt 0.058824 0.867647
|
||||
vt 0.058824 0.867647
|
||||
vt 0.235294 0.882353
|
||||
vt 0.117647 1.000000
|
||||
vt 0.117647 0.882353
|
||||
vt 0.294118 0.867647
|
||||
vt 0.117647 0.882353
|
||||
vt 0.294118 0.867647
|
||||
vt 0.294118 0.867647
|
||||
vt 0.117647 0.882353
|
||||
vt 0.235294 0.882353
|
||||
vt 0.117647 1.000000
|
||||
vt 0.235294 0.882353
|
||||
vt 0.117647 1.000000
|
||||
vt 0.235294 0.882353
|
||||
vt 0.117647 1.000000
|
||||
vt 0.764706 -0.000000
|
||||
vt 0.294118 0.117647
|
||||
vt 0.294118 -0.000000
|
||||
vt 0.294118 0.132353
|
||||
vt 0.764706 0.250000
|
||||
vt 0.294118 0.250000
|
||||
vt 0.764706 0.117647
|
||||
vt 0.764706 0.117647
|
||||
vt 0.294118 0.132353
|
||||
vt 0.294118 0.117647
|
||||
vt 0.764706 0.117647
|
||||
vt 0.294118 0.132353
|
||||
vt 0.294118 0.117647
|
||||
vt 0.764706 0.117647
|
||||
vt 0.294118 0.132353
|
||||
vt 0.294118 0.117647
|
||||
vt 0.882353 0.000000
|
||||
vt 0.823529 0.176471
|
||||
vt 0.823529 0.000000
|
||||
vt 0.764706 0.176471
|
||||
vt 0.764706 0.000000
|
||||
vt 1.000000 0.176471
|
||||
vt 0.941176 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.941176 0.176471
|
||||
vt 0.823529 0.000000
|
||||
vt 0.764706 0.176471
|
||||
vt 0.764706 0.000000
|
||||
vt 0.941176 0.000000
|
||||
vt 1.000000 0.176471
|
||||
vt 0.941176 0.176471
|
||||
vt 0.882353 0.000000
|
||||
vt 0.823529 0.176471
|
||||
vt 0.941176 0.176471
|
||||
vt 0.882353 0.000000
|
||||
vt 0.941176 0.000000
|
||||
vt 0.823529 0.176471
|
||||
vt 0.823529 0.000000
|
||||
vt 0.764706 0.176471
|
||||
vt 0.764706 0.000000
|
||||
vt 1.000000 0.176471
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 0.176471
|
||||
vt 0.941176 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.882353 0.000000
|
||||
vt 0.941176 0.176471
|
||||
vt 0.882353 0.176471
|
||||
vt 0.823529 0.176471
|
||||
vt 0.823529 0.000000
|
||||
vt 0.764706 0.176471
|
||||
vt 0.764706 0.000000
|
||||
vt 0.294118 0.426471
|
||||
vt 1.000000 0.250000
|
||||
vt 1.000000 0.426471
|
||||
vt 0.294118 0.617647
|
||||
vt 0.764706 0.558824
|
||||
vt 1.000000 0.617647
|
||||
vt 1.000000 0.426471
|
||||
vt 0.294118 0.441176
|
||||
vt 0.294118 0.426471
|
||||
vt 0.294118 0.441176
|
||||
vt 1.000000 0.426471
|
||||
vt 0.294118 0.441176
|
||||
vt 0.294118 0.426471
|
||||
vt 1.000000 0.426471
|
||||
vt 0.294118 0.441176
|
||||
vt 0.294118 0.426471
|
||||
vt 0.529412 0.500000
|
||||
vt 0.764706 0.500000
|
||||
vt 1.000000 0.441176
|
||||
vt 0.529412 0.558824
|
||||
vt 0.529412 0.735294
|
||||
vt 0.411765 0.617647
|
||||
vt 0.529412 0.617647
|
||||
vt 0.764706 0.735294
|
||||
vt 0.647059 0.617647
|
||||
vt 0.764706 0.617647
|
||||
vt 0.647059 0.735294
|
||||
vt 0.411765 0.735294
|
||||
vt 0.294118 0.617647
|
||||
vt 0.411765 0.764706
|
||||
vt 0.529412 0.764706
|
||||
vt 1.000000 0.176471
|
||||
vt 0.235294 0.823529
|
||||
vt 0.235294 0.823529
|
||||
vt 0.235294 0.823529
|
||||
vt 0.235294 0.823529
|
||||
vt 0.235294 1.000000
|
||||
vt 0.235294 1.000000
|
||||
vt 0.235294 1.000000
|
||||
vt 0.235294 1.000000
|
||||
vt 0.764706 0.132353
|
||||
vt 0.764706 0.132353
|
||||
vt 0.764706 0.132353
|
||||
vt 0.764706 0.132353
|
||||
vt 0.882353 0.176471
|
||||
vt 1.000000 0.000000
|
||||
vt 0.882353 0.176471
|
||||
vt 0.882353 0.176471
|
||||
vt 0.294118 0.250000
|
||||
vt 1.000000 0.441176
|
||||
vt 1.000000 0.441176
|
||||
vt 1.000000 0.441176
|
||||
vt 0.294118 0.735294
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.7071 0.7071 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
vn -0.7071 0.7071 0.0000
|
||||
vn 0.0000 0.7071 -0.7071
|
||||
vn 0.0000 0.7071 0.7071
|
||||
vn 0.0000 -0.7071 0.7071
|
||||
vn 0.7071 -0.7071 0.0000
|
||||
vn -0.7071 -0.7071 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -0.1644 0.9864
|
||||
vn -0.9864 0.1644 0.0000
|
||||
vn 0.0000 0.1644 -0.9864
|
||||
vn 0.9864 -0.1644 0.0000
|
||||
vn 0.0000 0.1644 0.9864
|
||||
vn 0.0000 -0.1644 -0.9864
|
||||
vn -0.9864 -0.1644 0.0000
|
||||
vn 0.9864 0.1644 0.0000
|
||||
vn -0.4472 0.8944 0.0000
|
||||
vn 0.4472 0.8944 0.0000
|
||||
vn 0.0000 0.8944 -0.4472
|
||||
vn 0.0000 0.8944 0.4472
|
||||
s off
|
||||
f 11/1/5 10/2/5 9/3/5
|
||||
f 16/4/6 18/5/6 14/6/6
|
||||
f 11/7/7 16/8/7 12/9/7
|
||||
f 10/10/8 13/11/8 9/12/8
|
||||
f 12/13/9 14/6/9 10/14/9
|
||||
f 9/15/10 15/16/10 11/17/10
|
||||
f 19/18/11 24/19/11 20/20/11
|
||||
f 13/21/12 19/22/12 15/16/12
|
||||
f 15/23/13 20/20/13 16/8/13
|
||||
f 14/24/14 17/25/14 13/11/14
|
||||
f 22/26/8 25/27/8 21/28/8
|
||||
f 18/29/15 21/28/15 17/25/15
|
||||
f 20/30/16 22/31/16 18/5/16
|
||||
f 17/32/17 23/33/17 19/22/17
|
||||
f 28/34/6 30/35/6 26/36/6
|
||||
f 24/37/9 26/36/9 22/31/9
|
||||
f 21/38/10 27/39/10 23/33/10
|
||||
f 23/40/7 28/41/7 24/19/7
|
||||
f 31/42/7 36/43/7 32/44/7
|
||||
f 25/45/12 31/46/12 27/39/12
|
||||
f 27/47/13 32/44/13 28/41/13
|
||||
f 26/48/14 29/49/14 25/27/14
|
||||
f 35/50/16 40/51/16 39/52/16
|
||||
f 30/53/8 34/54/8 29/49/8
|
||||
f 32/55/9 35/50/9 30/35/9
|
||||
f 29/56/10 33/57/10 31/46/10
|
||||
f 40/51/9 43/58/9 39/52/9
|
||||
f 33/57/17 38/59/17 37/60/17
|
||||
f 36/43/11 37/61/11 40/62/11
|
||||
f 34/54/15 39/63/15 38/64/15
|
||||
f 41/65/13 48/66/13 44/67/13
|
||||
f 38/59/10 41/68/10 37/60/10
|
||||
f 37/61/7 44/67/7 40/62/7
|
||||
f 39/63/8 42/69/8 38/64/8
|
||||
f 48/70/9 51/71/9 47/72/9
|
||||
f 43/73/14 46/74/14 42/69/14
|
||||
f 44/75/6 47/72/6 43/58/6
|
||||
f 42/76/12 45/77/12 41/68/12
|
||||
f 46/78/10 49/79/10 45/77/10
|
||||
f 45/80/7 52/81/7 48/66/7
|
||||
f 47/82/8 50/83/8 46/74/8
|
||||
f 55/84/5 54/85/5 53/86/5
|
||||
f 59/87/18 57/88/18 58/89/18
|
||||
f 56/90/9 59/87/9 54/85/9
|
||||
f 53/91/10 57/92/10 55/93/10
|
||||
f 55/94/7 60/95/7 56/96/7
|
||||
f 54/97/8 58/98/8 53/99/8
|
||||
f 61/100/19 67/101/19 63/102/19
|
||||
f 63/102/20 68/103/20 64/104/20
|
||||
f 68/105/21 62/106/21 64/107/21
|
||||
f 66/108/22 61/100/22 62/106/22
|
||||
f 69/109/23 75/110/23 71/111/23
|
||||
f 72/112/20 75/113/20 76/114/20
|
||||
f 76/114/24 70/115/24 72/112/24
|
||||
f 70/115/22 73/116/22 69/109/22
|
||||
f 81/117/19 79/118/19 77/119/19
|
||||
f 79/118/25 84/120/25 80/121/25
|
||||
f 80/121/21 82/122/21 78/123/21
|
||||
f 82/124/26 77/119/26 78/125/26
|
||||
f 89/126/23 87/127/23 85/128/23
|
||||
f 88/129/25 91/130/25 92/131/25
|
||||
f 88/129/24 90/132/24 86/133/24
|
||||
f 86/133/26 89/134/26 85/135/26
|
||||
f 93/136/5 96/137/5 94/138/5
|
||||
f 99/139/27 104/140/27 100/141/27
|
||||
f 95/142/10 100/143/10 96/144/10
|
||||
f 94/138/9 97/145/9 93/136/9
|
||||
f 96/146/7 98/147/7 94/148/7
|
||||
f 93/149/8 99/150/8 95/151/8
|
||||
f 104/140/18 102/152/18 101/153/18
|
||||
f 98/154/28 102/152/28 97/145/28
|
||||
f 100/141/29 101/153/29 98/154/29
|
||||
f 97/145/30 103/155/30 99/139/30
|
||||
f 112/156/9 106/157/9 108/158/9
|
||||
f 109/159/10 107/160/10 105/161/10
|
||||
f 111/162/7 108/158/7 107/160/7
|
||||
f 110/163/8 105/164/8 106/157/8
|
||||
f 109/165/18 112/156/18 111/166/18
|
||||
f 11/1/5 12/167/5 10/2/5
|
||||
f 16/4/6 20/30/6 18/5/6
|
||||
f 11/7/7 15/23/7 16/8/7
|
||||
f 10/10/8 14/24/8 13/11/8
|
||||
f 12/13/9 16/4/9 14/6/9
|
||||
f 9/15/10 13/21/10 15/16/10
|
||||
f 19/18/11 23/40/11 24/19/11
|
||||
f 13/21/12 17/32/12 19/22/12
|
||||
f 15/23/13 19/18/13 20/20/13
|
||||
f 14/24/14 18/29/14 17/25/14
|
||||
f 22/26/8 26/48/8 25/27/8
|
||||
f 18/29/15 22/26/15 21/28/15
|
||||
f 20/30/16 24/37/16 22/31/16
|
||||
f 17/32/17 21/38/17 23/33/17
|
||||
f 28/34/6 32/55/6 30/35/6
|
||||
f 24/37/9 28/34/9 26/36/9
|
||||
f 21/38/10 25/45/10 27/39/10
|
||||
f 23/40/7 27/47/7 28/41/7
|
||||
f 31/42/7 33/168/7 36/43/7
|
||||
f 25/45/12 29/56/12 31/46/12
|
||||
f 27/47/13 31/42/13 32/44/13
|
||||
f 26/48/14 30/53/14 29/49/14
|
||||
f 35/50/16 36/169/16 40/51/16
|
||||
f 30/53/8 35/170/8 34/54/8
|
||||
f 32/55/9 36/169/9 35/50/9
|
||||
f 29/56/10 34/171/10 33/57/10
|
||||
f 40/51/9 44/75/9 43/58/9
|
||||
f 33/57/17 34/171/17 38/59/17
|
||||
f 36/43/11 33/168/11 37/61/11
|
||||
f 34/54/15 35/170/15 39/63/15
|
||||
f 41/65/13 45/80/13 48/66/13
|
||||
f 38/59/10 42/76/10 41/68/10
|
||||
f 37/61/7 41/65/7 44/67/7
|
||||
f 39/63/8 43/73/8 42/69/8
|
||||
f 48/70/9 52/172/9 51/71/9
|
||||
f 43/73/14 47/82/14 46/74/14
|
||||
f 44/75/6 48/70/6 47/72/6
|
||||
f 42/76/12 46/78/12 45/77/12
|
||||
f 46/78/10 50/173/10 49/79/10
|
||||
f 45/80/7 49/174/7 52/81/7
|
||||
f 47/82/8 51/175/8 50/83/8
|
||||
f 55/84/5 56/90/5 54/85/5
|
||||
f 59/87/18 60/176/18 57/88/18
|
||||
f 56/90/9 60/176/9 59/87/9
|
||||
f 53/91/10 58/177/10 57/92/10
|
||||
f 55/94/7 57/178/7 60/95/7
|
||||
f 54/97/8 59/179/8 58/98/8
|
||||
f 61/100/19 65/180/19 67/101/19
|
||||
f 63/102/20 67/101/20 68/103/20
|
||||
f 68/105/21 66/108/21 62/106/21
|
||||
f 66/108/22 65/180/22 61/100/22
|
||||
f 69/109/23 73/116/23 75/110/23
|
||||
f 72/112/20 71/181/20 75/113/20
|
||||
f 76/114/24 74/182/24 70/115/24
|
||||
f 70/115/22 74/182/22 73/116/22
|
||||
f 81/117/19 83/183/19 79/118/19
|
||||
f 79/118/25 83/183/25 84/120/25
|
||||
f 80/121/21 84/120/21 82/122/21
|
||||
f 82/124/26 81/117/26 77/119/26
|
||||
f 89/126/23 91/130/23 87/127/23
|
||||
f 88/129/25 87/127/25 91/130/25
|
||||
f 88/129/24 92/131/24 90/132/24
|
||||
f 86/133/26 90/132/26 89/134/26
|
||||
f 93/136/5 95/184/5 96/137/5
|
||||
f 99/139/27 103/155/27 104/140/27
|
||||
f 95/142/10 99/185/10 100/143/10
|
||||
f 94/138/9 98/154/9 97/145/9
|
||||
f 96/146/7 100/186/7 98/147/7
|
||||
f 93/149/8 97/187/8 99/150/8
|
||||
f 104/140/18 103/155/18 102/152/18
|
||||
f 98/154/28 101/153/28 102/152/28
|
||||
f 100/141/29 104/140/29 101/153/29
|
||||
f 97/145/30 102/152/30 103/155/30
|
||||
f 112/156/9 110/163/9 106/157/9
|
||||
f 109/159/10 111/162/10 107/160/10
|
||||
f 111/162/7 112/156/7 108/158/7
|
||||
f 110/163/8 109/188/8 105/164/8
|
||||
f 109/165/18 110/163/18 112/156/18
|
||||
3494
src/main/resources/assets/hbm/models/weapons/congolake.obj
Normal file
@ -54,6 +54,10 @@
|
||||
"block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]},
|
||||
"block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]},
|
||||
"block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]},
|
||||
"block.hornNearSingle": {"category": "block", "sounds": [{"name": "block/hornNearSingle", "stream": false}]},
|
||||
"block.hornNearDual": {"category": "block", "sounds": [{"name": "block/hornNearDual", "stream": false}]},
|
||||
"block.hornFarSingle": {"category": "block", "sounds": [{"name": "block/hornFarSingle", "stream": false}]},
|
||||
"block.hornFarDual": {"category": "block", "sounds": [{"name": "block/hornFarDual", "stream": false}]},
|
||||
|
||||
"door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]},
|
||||
"door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]},
|
||||
@ -180,6 +184,8 @@
|
||||
"weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]},
|
||||
"weapon.coilgunReload": {"category": "player", "sounds": [{"name": "weapon/coilgunReload", "stream": false}]},
|
||||
"weapon.coilgunShoot": {"category": "player", "sounds": [{"name": "weapon/coilgunShoot", "stream": false}]},
|
||||
"weapon.glReload": {"category": "player", "sounds": [{"name": "weapon/glReload", "stream": false}]},
|
||||
"weapon.glShoot": {"category": "player", "sounds": [{"name": "weapon/glShoot", "stream": false}]},
|
||||
|
||||
"weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]},
|
||||
|
||||
|
||||
BIN
src/main/resources/assets/hbm/sounds/weapon/glReload.ogg
Normal file
BIN
src/main/resources/assets/hbm/sounds/weapon/glShoot.ogg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 291 B |
BIN
src/main/resources/assets/hbm/textures/items/boltgun.png
Normal file
|
After Width: | Height: | Size: 324 B |
BIN
src/main/resources/assets/hbm/textures/items/gun_ar15.png
Normal file
|
After Width: | Height: | Size: 208 B |
|
After Width: | Height: | Size: 309 B |
BIN
src/main/resources/assets/hbm/textures/items/gun_coilgun.png
Normal file
|
After Width: | Height: | Size: 341 B |
BIN
src/main/resources/assets/hbm/textures/items/gun_flamer.png
Normal file
|
After Width: | Height: | Size: 304 B |
BIN
src/main/resources/assets/hbm/textures/items/gun_spas12.png
Normal file
|
After Width: | Height: | Size: 227 B |
BIN
src/main/resources/assets/hbm/textures/items/powder_ash.coal.png
Normal file
|
After Width: | Height: | Size: 260 B |
BIN
src/main/resources/assets/hbm/textures/items/powder_ash.misc.png
Normal file
|
After Width: | Height: | Size: 236 B |