mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Merge remote-tracking branch 'origin/master' into bunkers-(for-real)
This commit is contained in:
commit
3880daea25
24
.gitignore
vendored
24
.gitignore
vendored
@ -20,3 +20,27 @@ build
|
||||
|
||||
# other
|
||||
run
|
||||
|
||||
# CurseForge configuration
|
||||
/curseforge.properties
|
||||
|
||||
# Changelog backup
|
||||
/changelog.bak
|
||||
|
||||
screenshots/
|
||||
|
||||
saves/
|
||||
|
||||
usernamecache.json
|
||||
|
||||
options.txt
|
||||
|
||||
logs/
|
||||
|
||||
doc/
|
||||
|
||||
crash-reports/
|
||||
|
||||
config/
|
||||
|
||||
asm/
|
||||
|
||||
38
build.gradle
38
build.gradle
@ -1,3 +1,6 @@
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Paths
|
||||
|
||||
buildscript {
|
||||
repositories {
|
||||
maven { url = 'https://maven.minecraftforge.net/' }
|
||||
@ -10,6 +13,14 @@ buildscript {
|
||||
}
|
||||
|
||||
apply plugin: 'forge'
|
||||
apply plugin: 'curseforge'
|
||||
|
||||
|
||||
if(Files.exists(Paths.get("curseforge.properties"))) {
|
||||
// Load CurseForge configuration
|
||||
ext.cfprops = parseConfig(file("curseforge.properties"))
|
||||
}
|
||||
|
||||
def version_name = version = mod_version
|
||||
if(!mod_build_number.isEmpty()) {
|
||||
version_name = mod_version + "_X" + mod_build_number
|
||||
@ -114,3 +125,30 @@ task version {
|
||||
println project.version
|
||||
}
|
||||
}
|
||||
|
||||
if(Files.exists(Paths.get("curseforge.properties"))) {
|
||||
curse {
|
||||
apiKey = cfprops.api_key
|
||||
projectId = cfprops.project_id
|
||||
releaseType = "release"
|
||||
|
||||
if (Files.exists(Paths.get("changelog"))) {
|
||||
changelog = String.join("\r\n", Files.readAllLines(Paths.get("changelog")))
|
||||
|
||||
// Perform a backup of the changelog and create a new file for next changes
|
||||
doLast {
|
||||
Files.move(Paths.get("changelog"), Paths.get("changelog.bak"))
|
||||
Files.createFile(Paths.get("changelog"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Properties file parsing helper
|
||||
static def parseConfig(File config) {
|
||||
config.withReader {
|
||||
def prop = new Properties()
|
||||
prop.load(it)
|
||||
return (new ConfigSlurper().parse(prop))
|
||||
}
|
||||
}
|
||||
|
||||
17
changelog
Normal file
17
changelog
Normal file
@ -0,0 +1,17 @@
|
||||
## Added
|
||||
* Machines now emit soot. Soot collects in units of 4x4 chunks, and spreads into neighboring regions. High levels of soot cause visible smog.
|
||||
* Gas artillery shells
|
||||
* Chlorine
|
||||
* Phosgene
|
||||
* Mustard gas
|
||||
* Euphemium capacitor
|
||||
* Used for schrabidium transmutation, has infinite durability
|
||||
|
||||
## Changed
|
||||
* Updated russian localization
|
||||
* Mist now spawns cloud particles with the correct color instead of standard white
|
||||
* HE artillery shells and rockets now turn blocks into slag
|
||||
|
||||
## Fixed
|
||||
* Fixed the TOXIC trait not respecting protection when applying potion effects
|
||||
* Fixed some armor recipes only accepting polymer and not bakelite
|
||||
@ -1,14 +1,17 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=4613
|
||||
mod_build_number=4621
|
||||
|
||||
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\
|
||||
\ UFFR (RTGs, guns, casings), Pu-238 (Tom impact effects), Bismarck (chinese localization),\
|
||||
\ Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines, models, weapons), Vær (gas centrifuges,\
|
||||
\ better worldgen, ZIRNOX, CP-1 parts, starter guide), Adam29 (liquid petroleum, ethanol, electric furnace),\
|
||||
\ Pashtet (russian localization), MartinTheDragon (calculator, chunk-based fallout), haru315 (spiral point algorithm),\
|
||||
\ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
|
||||
\ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\
|
||||
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\
|
||||
\ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips)
|
||||
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\
|
||||
\ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\
|
||||
\ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\
|
||||
\ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\
|
||||
\ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\
|
||||
\ (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\
|
||||
\ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\
|
||||
\ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\
|
||||
\ Toshayo (satellite loot system, project settings, gradle curse task), Silly541 (config for safe ME drives),\
|
||||
\ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\
|
||||
\ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\
|
||||
\ particle emitter), sdddddf80 (recipe configs, chinese localization), SuperCraftAlex (tooltips)
|
||||
|
||||
41
src/main/java/com/hbm/blocks/BlockRemap.java
Normal file
41
src/main/java/com/hbm/blocks/BlockRemap.java
Normal file
@ -0,0 +1,41 @@
|
||||
package com.hbm.blocks;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public class BlockRemap extends Block implements ILookOverlay {
|
||||
|
||||
public Block remapBlock;
|
||||
public int remapMeta;
|
||||
|
||||
protected BlockRemap(Block block, int meta) {
|
||||
super(Material.tnt);
|
||||
this.remapBlock = block;
|
||||
this.remapMeta = meta;
|
||||
this.setTickRandomly(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block setBlockName(String name) {
|
||||
super.setBlockName(name);
|
||||
this.setBlockTextureName(RefStrings.MODID + ":" + name);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateTick(World world, int x, int y, int z, Random rand) {
|
||||
world.setBlock(x, y, z, this.remapBlock, this.remapMeta, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
ILookOverlay.printGeneric(event, "Compatibility block, will convert on update tick.", 0xffff00, 0x404000, new ArrayList());
|
||||
}
|
||||
}
|
||||
@ -13,7 +13,9 @@ import com.hbm.blocks.machine.rbmk.*;
|
||||
import com.hbm.blocks.network.*;
|
||||
import com.hbm.blocks.rail.RailNarrowCurve;
|
||||
import com.hbm.blocks.rail.RailNarrowStraight;
|
||||
import com.hbm.blocks.rail.RailStandardBuffer;
|
||||
import com.hbm.blocks.rail.RailStandardCurve;
|
||||
import com.hbm.blocks.rail.RailStandardRamp;
|
||||
import com.hbm.blocks.rail.RailStandardStraight;
|
||||
import com.hbm.blocks.siege.*;
|
||||
import com.hbm.blocks.test.*;
|
||||
@ -32,6 +34,7 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockFalling;
|
||||
import net.minecraft.block.material.*;
|
||||
import net.minecraft.creativetab.CreativeTabs;
|
||||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
|
||||
@ -206,8 +209,11 @@ public class ModBlocks {
|
||||
public static Block block_aluminium;
|
||||
public static Block block_fluorite;
|
||||
public static Block block_steel;
|
||||
public static Block block_tcalloy;
|
||||
public static Block block_cdalloy;
|
||||
public static Block block_lead;
|
||||
public static Block block_bismuth;
|
||||
public static Block block_cadmium;
|
||||
public static Block block_coltan;
|
||||
public static Block block_tantalium;
|
||||
public static Block block_niobium;
|
||||
@ -313,10 +319,13 @@ public class ModBlocks {
|
||||
public static Block reinforced_brick;
|
||||
public static Block reinforced_ducrete;
|
||||
public static Block reinforced_glass;
|
||||
public static Block reinforced_glass_pane;
|
||||
public static Block reinforced_light;
|
||||
public static Block reinforced_sand;
|
||||
public static Block reinforced_lamp_off;
|
||||
public static Block reinforced_lamp_on;
|
||||
public static Block reinforced_laminate;
|
||||
public static Block reinforced_laminate_pane;
|
||||
|
||||
public static Block lamp_tritium_green_off;
|
||||
public static Block lamp_tritium_green_on;
|
||||
@ -747,6 +756,9 @@ public class ModBlocks {
|
||||
public static Block machine_dineutronium_battery;
|
||||
public static Block machine_fensu;
|
||||
public static final int guiID_machine_fensu = 99;
|
||||
|
||||
public static Block capacitor_bus;
|
||||
public static Block capacitor_copper;
|
||||
|
||||
public static Block machine_coal_off;
|
||||
public static Block machine_coal_on;
|
||||
@ -1099,6 +1111,8 @@ public class ModBlocks {
|
||||
public static Block rail_narrow_curve;
|
||||
public static Block rail_large_straight;
|
||||
public static Block rail_large_curve;
|
||||
public static Block rail_large_ramp;
|
||||
public static Block rail_large_buffer;
|
||||
|
||||
public static Block statue_elb;
|
||||
public static Block statue_elb_g;
|
||||
@ -1392,8 +1406,11 @@ public class ModBlocks {
|
||||
block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium");
|
||||
block_fluorite = new BlockBeaconable(Material.iron).setBlockName("block_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fluorite");
|
||||
block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
block_tcalloy = new BlockBeaconable(Material.iron).setBlockName("block_tcalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_tcalloy");
|
||||
block_cdalloy = new BlockBeaconable(Material.iron).setBlockName("block_cdalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_cdalloy");
|
||||
block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_lead");
|
||||
block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth");
|
||||
block_cadmium = new BlockBeaconable(Material.iron).setBlockName("block_cadmium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_cadmium");
|
||||
block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan");
|
||||
block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium");
|
||||
block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F);
|
||||
@ -1497,11 +1514,14 @@ public class ModBlocks {
|
||||
|
||||
reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick");
|
||||
reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(200.0F);
|
||||
reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(200.0F);
|
||||
reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light");
|
||||
reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand");
|
||||
reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off");
|
||||
reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on");
|
||||
|
||||
reinforced_laminate = new BlockNTMGlassCT(1, RefStrings.MODID + ":reinforced_laminate", Material.rock, true).setBlockName("reinforced_laminate").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(1000.0F);
|
||||
reinforced_laminate_pane = new BlockNTMGlassPane(1, RefStrings.MODID + ":reinforced_laminate_pane", RefStrings.MODID + ":reinforced_laminate_pane_edge", Material.rock, true).setBlockName("reinforced_laminate_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(1000.0F);
|
||||
|
||||
lamp_tritium_green_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_green_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_off");
|
||||
lamp_tritium_green_on = new ReinforcedLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_green_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_on");
|
||||
lamp_tritium_blue_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_blue_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_off");
|
||||
@ -1855,13 +1875,16 @@ public class ModBlocks {
|
||||
|
||||
//machine_deuterium = new MachineDeuterium(Material.iron).setBlockName("machine_deuterium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
|
||||
machine_battery_potato = new MachineBattery(Material.iron, 10000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_battery = new MachineBattery(Material.iron, 1000000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_lithium_battery = new MachineBattery(Material.iron, 50000000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_schrabidium_battery = new MachineBattery(Material.iron, 25000000000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_dineutronium_battery = new MachineBattery(Material.iron, 1000000000000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu");
|
||||
|
||||
capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L).setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper");
|
||||
|
||||
machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab);
|
||||
machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F);
|
||||
|
||||
@ -2123,10 +2146,12 @@ public class ModBlocks {
|
||||
rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow");
|
||||
rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed");
|
||||
rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster");
|
||||
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo");
|
||||
rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight");
|
||||
rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel");
|
||||
|
||||
crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate");
|
||||
crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon");
|
||||
@ -2528,8 +2553,11 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(block_beryllium, block_beryllium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_cobalt, block_cobalt.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_steel, block_steel.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_tcalloy, block_tcalloy.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_cdalloy, block_cdalloy.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_lead, block_lead.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_bismuth, block_bismuth.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_cadmium, block_cadmium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_coltan, block_coltan.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_tantalium, block_tantalium.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(block_niobium, block_niobium.getUnlocalizedName());
|
||||
@ -2641,10 +2669,13 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_glass, ItemBlockBlastInfo.class, reinforced_glass.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_glass_pane, ItemBlockBlastInfo.class, reinforced_glass_pane.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_light, ItemBlockBlastInfo.class, reinforced_light.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_sand, ItemBlockBlastInfo.class, reinforced_sand.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_lamp_off, ItemBlockBlastInfo.class, reinforced_lamp_off.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_lamp_on, ItemBlockBlastInfo.class, reinforced_lamp_on.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_laminate, ItemBlockBlastInfo.class, reinforced_laminate.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(reinforced_laminate_pane,ItemBlockBlastInfo.class, reinforced_laminate_pane.getUnlocalizedName());
|
||||
|
||||
//Bricks
|
||||
GameRegistry.registerBlock(reinforced_stone, ItemBlockBlastInfo.class, reinforced_stone.getUnlocalizedName());
|
||||
@ -3167,6 +3198,8 @@ public class ModBlocks {
|
||||
register(machine_schrabidium_battery);
|
||||
register(machine_dineutronium_battery);
|
||||
register(machine_fensu);
|
||||
register(capacitor_bus);
|
||||
register(capacitor_copper);
|
||||
GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName());
|
||||
GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName());
|
||||
@ -3356,6 +3389,8 @@ public class ModBlocks {
|
||||
register(rail_narrow_curve);
|
||||
register(rail_large_straight);
|
||||
register(rail_large_curve);
|
||||
register(rail_large_ramp);
|
||||
register(rail_large_buffer);
|
||||
|
||||
//Crate
|
||||
GameRegistry.registerBlock(crate, crate.getUnlocalizedName());
|
||||
@ -3444,7 +3479,12 @@ public class ModBlocks {
|
||||
GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName());
|
||||
}
|
||||
|
||||
/*private static void register(Block b, Class<? extends ItemBlock> clazz) {
|
||||
private static void register(Block b, Class<? extends ItemBlock> clazz) {
|
||||
GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName());
|
||||
}*/
|
||||
}
|
||||
|
||||
public static void addRemap(String unloc, Block block, int meta) {
|
||||
Block remap = new BlockRemap(block, meta).setBlockName(unloc);
|
||||
register(remap, ItemBlockRemap.class);
|
||||
}
|
||||
}
|
||||
|
||||
@ -22,19 +22,23 @@ public class BlockNTMGlass extends BlockBreakable {
|
||||
this.doesDrop = doesDrop;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(Random rand) {
|
||||
return doesDrop ? 1 : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderBlockPass() {
|
||||
return renderLayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderAsNormalBlock() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean canSilkHarvest() {
|
||||
return true;
|
||||
}
|
||||
|
||||
52
src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java
Normal file
52
src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java
Normal file
@ -0,0 +1,52 @@
|
||||
package com.hbm.blocks.generic;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockPane;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class BlockNTMGlassPane extends BlockPane
|
||||
{
|
||||
int renderLayer;
|
||||
boolean doesDrop = false;
|
||||
|
||||
//NOTE when you have eclipse make the constructor for you it *WILL BE 'protected'* so make sure to make this public like below.
|
||||
/*public BlockNTMGlassPane(String flatFaceTextureName, String rimTextureName,
|
||||
Material mat, boolean bool) {
|
||||
super(flatFaceTextureName, rimTextureName, mat, bool);
|
||||
// TODO Auto-generated constructor stub
|
||||
this.setLightOpacity(1);
|
||||
this.opaque = true;
|
||||
}*/
|
||||
|
||||
public BlockNTMGlassPane(int layer, String name, String rimTextureName, Material material, boolean doesDrop) {
|
||||
super(name, rimTextureName, material, false);
|
||||
this.renderLayer = layer;
|
||||
this.doesDrop = doesDrop;
|
||||
this.opaque = true;
|
||||
this.setLightOpacity(1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPaneConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
|
||||
Block b = world.getBlock(x, y, z);
|
||||
return super.canPaneConnectTo(world, x, y, z, dir) || b instanceof BlockNTMGlass;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getRenderBlockPass() {
|
||||
return renderLayer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int quantityDropped(Random rand) {
|
||||
return doesDrop ? 1 : 0;
|
||||
}
|
||||
|
||||
}
|
||||
@ -47,8 +47,8 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
this.iconTop = new IIcon[3];
|
||||
this.iconSide = new IIcon[3];
|
||||
this.iconTop = new IIcon[4];
|
||||
this.iconSide = new IIcon[4];
|
||||
|
||||
this.iconTop[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_iron");
|
||||
this.iconSide[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_iron");
|
||||
@ -56,14 +56,17 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
||||
this.iconSide[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_desh");
|
||||
this.iconTop[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top");
|
||||
this.iconSide[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side");
|
||||
this.iconTop[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_wood");
|
||||
this.iconSide[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_wood");
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void getSubBlocks(Item item, CreativeTabs tab, List list) {
|
||||
for(int i = 0; i < getSubCount(); ++i) {
|
||||
list.add(new ItemStack(item, 1, i));
|
||||
}
|
||||
list.add(new ItemStack(item, 1, 3));
|
||||
list.add(new ItemStack(item, 1, 0));
|
||||
list.add(new ItemStack(item, 1, 1));
|
||||
list.add(new ItemStack(item, 1, 2));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -84,7 +87,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
||||
}
|
||||
|
||||
public int getCapacity(int meta) {
|
||||
return meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0;
|
||||
return meta == 3 ? 100 : meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -242,7 +245,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
||||
|
||||
@Override
|
||||
public int getSubCount() {
|
||||
return 3;
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -286,4 +289,14 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo
|
||||
list.add(String.format("%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format("%,d", getCapacity(stack.getItemDamage())));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasComparatorInputOverride() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
|
||||
return ((TileEntityMassStorage) world.getTileEntity(x, y, z)).redstone;
|
||||
}
|
||||
}
|
||||
|
||||
233
src/main/java/com/hbm/blocks/machine/MachineCapacitor.java
Normal file
233
src/main/java/com/hbm/blocks/machine/MachineCapacitor.java
Normal file
@ -0,0 +1,233 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.IPersistentInfoProvider;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.tileentity.INBTPacketReceiver;
|
||||
import com.hbm.tileentity.IPersistentNBT;
|
||||
import com.hbm.tileentity.TileEntityLoadedBase;
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import com.hbm.util.I18nUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import api.hbm.energy.IEnergyUser;
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.BlockContainer;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class MachineCapacitor extends BlockContainer implements ILookOverlay, IPersistentInfoProvider {
|
||||
|
||||
@SideOnly(Side.CLIENT) public IIcon iconTop;
|
||||
@SideOnly(Side.CLIENT) public IIcon iconSide;
|
||||
@SideOnly(Side.CLIENT) public IIcon iconBottom;
|
||||
@SideOnly(Side.CLIENT) public IIcon iconInnerTop;
|
||||
@SideOnly(Side.CLIENT) public IIcon iconInnerSide;
|
||||
|
||||
protected long power;
|
||||
|
||||
public MachineCapacitor(Material mat, long power) {
|
||||
super(mat);
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister iconRegister) {
|
||||
super.registerBlockIcons(iconRegister);
|
||||
this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_copper_top");
|
||||
this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_copper_side");
|
||||
this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_copper_bottom");
|
||||
this.iconInnerTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_copper_inner_top");
|
||||
this.iconInnerSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_copper_inner_side");
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override public int getRenderType() { return renderID; }
|
||||
@Override public boolean isOpaqueCube() { return false; }
|
||||
@Override public boolean renderAsNormalBlock() { return false; }
|
||||
|
||||
@Override
|
||||
public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) {
|
||||
return side;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return new TileEntityCapacitor(this.power);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
|
||||
TileEntity te = world.getTileEntity(x, y, z);
|
||||
|
||||
if(!(te instanceof TileEntityCapacitor))
|
||||
return;
|
||||
|
||||
TileEntityCapacitor battery = (TileEntityCapacitor) te;
|
||||
List<String> text = new ArrayList();
|
||||
text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE");
|
||||
|
||||
double percent = (double) battery.getPower() / (double) battery.getMaxPower();
|
||||
int charge = (int) Math.floor(percent * 10_000D);
|
||||
int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8);
|
||||
text.add("&[" + color + "&]" + (charge / 100D) + "%");
|
||||
|
||||
ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(persistentTag.getLong("maxPower")) + "HE");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
|
||||
return IPersistentNBT.getDrops(world, x, y, z, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) {
|
||||
|
||||
if(!player.capabilities.isCreativeMode) {
|
||||
harvesters.set(player);
|
||||
this.dropBlockAsItem(world, x, y, z, meta, 0);
|
||||
harvesters.set(null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) {
|
||||
player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1);
|
||||
player.addExhaustion(0.025F);
|
||||
}
|
||||
|
||||
public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver, IPersistentNBT {
|
||||
|
||||
public long power;
|
||||
protected long maxPower;
|
||||
|
||||
public TileEntityCapacitor() { }
|
||||
|
||||
public TileEntityCapacitor(long maxPower) {
|
||||
this.maxPower = maxPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
ForgeDirection opp = ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
ForgeDirection dir = opp.getOpposite();
|
||||
|
||||
BlockPos pos = new BlockPos(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ);
|
||||
|
||||
boolean didStep = false;
|
||||
ForgeDirection last = null;
|
||||
|
||||
while(worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()) == ModBlocks.capacitor_bus) {
|
||||
ForgeDirection current = ForgeDirection.getOrientation(worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ()));
|
||||
if(!didStep) last = current;
|
||||
didStep = true;
|
||||
|
||||
if(last != current) {
|
||||
pos = null;
|
||||
break;
|
||||
}
|
||||
|
||||
pos = pos.offset(current);
|
||||
}
|
||||
|
||||
if(pos != null && last != null) {
|
||||
this.tryUnsubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ());
|
||||
this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), last);
|
||||
}
|
||||
|
||||
this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp);
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setLong("maxPower", maxPower);
|
||||
INBTPacketReceiver.networkPack(this, data, 15);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void networkUnpack(NBTTagCompound nbt) {
|
||||
this.power = nbt.getLong("power");
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPower() {
|
||||
return power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMaxPower() {
|
||||
return maxPower;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConnectionPriority getPriority() {
|
||||
return ConnectionPriority.LOW;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPower(long power) {
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(ForgeDirection dir) {
|
||||
return dir == ForgeDirection.getOrientation(this.getBlockMetadata());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeNBT(NBTTagCompound nbt) {
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
data.setLong("power", power);
|
||||
data.setLong("maxPower", maxPower);
|
||||
nbt.setTag(NBT_PERSISTENT_KEY, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readNBT(NBTTagCompound nbt) {
|
||||
NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY);
|
||||
this.power = data.getLong("power");
|
||||
this.maxPower = data.getLong("maxPower");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.power = nbt.getLong("power");
|
||||
this.maxPower = nbt.getLong("maxPower");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setLong("power", power);
|
||||
nbt.setLong("maxPower", maxPower);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package com.hbm.blocks.machine;
|
||||
|
||||
import com.hbm.lib.RefStrings;
|
||||
|
||||
import api.hbm.energy.IEnergyConnectorBlock;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockPistonBase;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class MachineCapacitorBus extends Block implements IEnergyConnectorBlock {
|
||||
|
||||
@SideOnly(Side.CLIENT) private IIcon topIcon;
|
||||
|
||||
public MachineCapacitorBus(Material mat) {
|
||||
super(mat);
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void registerBlockIcons(IIconRegister p_149651_1_) {
|
||||
this.blockIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_side");
|
||||
this.topIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_out");
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public IIcon getIcon(int side, int meta) {
|
||||
return side == meta ? topIcon : blockIcon;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) {
|
||||
int l = BlockPistonBase.determineOrientation(world, x, y, z, player);
|
||||
world.setBlockMetadataWithNotify(x, y, z, l, 2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) {
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
ForgeDirection busDir = ForgeDirection.getOrientation(meta);
|
||||
return dir == busDir;
|
||||
}
|
||||
}
|
||||
@ -19,7 +19,7 @@ public interface IRailNTM {
|
||||
* Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative.
|
||||
* Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail.
|
||||
* */
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info);
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context);
|
||||
|
||||
/** Returns that rail's gauge. Trains will derail if the gauge does not match. */
|
||||
public TrackGauge getGauge(World world, int x, int y, int z);
|
||||
@ -41,4 +41,22 @@ public interface IRailNTM {
|
||||
public RailContext dist(double d) { this.overshoot = d; return this; }
|
||||
public RailContext pos(BlockPos d) { this.pos = d; return this; }
|
||||
}
|
||||
|
||||
/** A wrapper for additional information like stopping on rails and what type of check we're doing */
|
||||
public static class MoveContext {
|
||||
public RailCheckType type;
|
||||
public boolean collision = false; //if a buffer stop or similar applies
|
||||
public double overshoot; //how much of the travel distance was cut shor
|
||||
|
||||
public MoveContext(RailCheckType type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum RailCheckType {
|
||||
CORE,
|
||||
FRONT,
|
||||
BACK,
|
||||
OTHER
|
||||
}
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@ public class RailNarrowCurve extends BlockDummyable implements IRailNTM {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
|
||||
@ -59,7 +59,7 @@ public class RailNarrowStraight extends BlockDummyable implements IRailNTM {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
|
||||
57
src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java
Normal file
57
src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java
Normal file
@ -0,0 +1,57 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class RailStandardBuffer extends BlockDummyable implements IRailNTM {
|
||||
|
||||
public RailStandardBuffer() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 2, 2, 1, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
}
|
||||
|
||||
// TBI
|
||||
@Override
|
||||
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||
return TrackGauge.STANDARD;
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
@ -24,9 +25,11 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
return renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -35,7 +38,7 @@ public class RailStandardCurve extends BlockDummyable implements IRailNTM {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
|
||||
133
src/main/java/com/hbm/blocks/rail/RailStandardRamp.java
Normal file
133
src/main/java/com/hbm/blocks/rail/RailStandardRamp.java
Normal file
@ -0,0 +1,133 @@
|
||||
package com.hbm.blocks.rail;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class RailStandardRamp extends BlockDummyable implements IRailNTM {
|
||||
|
||||
public RailStandardRamp() {
|
||||
super(Material.iron);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World world, int meta) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getDimensions() {
|
||||
return new int[] {0, 0, 2, 2, 1, 0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOffset() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
|
||||
this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F);
|
||||
return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
/* Very simple function determining the snapping position and adding the motion value to it, if desired. */
|
||||
public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
int[] pos = this.findCore(world, x, y, z);
|
||||
if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
int cX = pos[0];
|
||||
int cY = pos[1];
|
||||
int cZ = pos[2];
|
||||
int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset;
|
||||
ForgeDirection dir = ForgeDirection.getOrientation(meta);
|
||||
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
|
||||
|
||||
Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ);
|
||||
|
||||
if(speed == 0) {
|
||||
//return vec;
|
||||
}
|
||||
|
||||
if(dir == Library.POS_X || dir == Library.NEG_X) {
|
||||
double targetX = trainX;
|
||||
if(motionX > 0) {
|
||||
targetX += speed;
|
||||
info.yaw(-90F);
|
||||
} else {
|
||||
targetX -= speed;
|
||||
info.yaw(90F);
|
||||
}
|
||||
double dist = (cX + 0.5 - targetX + 2.5) / 5;
|
||||
vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3);
|
||||
vec.yCoord = MathHelper.clamp_double(dir == Library.POS_X ? cY + dist : cY + 1 - dist, cY, cY + 1);
|
||||
vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5;
|
||||
info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed));
|
||||
info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), cY + (motionX * speed > 0 ^ dir == Library.POS_X ? 1 : 0), cZ));
|
||||
} else {
|
||||
double targetZ = trainZ;
|
||||
if(motionZ > 0) {
|
||||
targetZ += speed;
|
||||
info.yaw(0F);
|
||||
} else {
|
||||
targetZ -= speed;
|
||||
info.yaw(180F);
|
||||
}
|
||||
double dist = (cZ + 0.5 - targetZ + 2.5) / 5;
|
||||
vec.xCoord = cX + 0.5 + rot.offsetX * 0.5;
|
||||
vec.yCoord = MathHelper.clamp_double(dir == Library.POS_Z ? cY + dist : cY + 1 - dist, cY, cY + 1);
|
||||
vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3);
|
||||
info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed));
|
||||
info.pos(new BlockPos(cX, cY + (motionZ * speed > 0 ^ dir == Library.POS_Z ? 1 : 0), cZ + (motionZ * speed > 0 ? 3 : -3)));
|
||||
}
|
||||
|
||||
return vec;
|
||||
}
|
||||
|
||||
@Override
|
||||
public TrackGauge getGauge(World world, int x, int y, int z) {
|
||||
return TrackGauge.STANDARD;
|
||||
}
|
||||
|
||||
protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
return MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir) &&
|
||||
MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, x, y, z, dir);
|
||||
}
|
||||
|
||||
protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) {
|
||||
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), this, dir);
|
||||
MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, this, dir);
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.client.registry.RenderingRegistry;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
@ -24,9 +25,11 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int renderID = RenderingRegistry.getNextAvailableRenderId();
|
||||
|
||||
@Override
|
||||
public int getRenderType() {
|
||||
return 0;
|
||||
return renderID;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -56,7 +59,7 @@ public class RailStandardStraight extends BlockDummyable implements IRailNTM {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) {
|
||||
public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) {
|
||||
return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info);
|
||||
}
|
||||
|
||||
|
||||
@ -36,6 +36,7 @@ public class WorldConfig {
|
||||
public static int bedrockIronSpawn = 100;
|
||||
public static int bedrockCopperSpawn = 200;
|
||||
public static int bedrockBoraxSpawn = 50;
|
||||
public static int bedrockChlorocalciteSpawn = 35;
|
||||
public static int bedrockAsbestosSpawn = 50;
|
||||
public static int bedrockNiobiumSpawn = 50;
|
||||
public static int bedrockTitaniumSpawn = 100;
|
||||
@ -153,6 +154,7 @@ public class WorldConfig {
|
||||
bedrockNiterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B11_bedrockNiterWeight", "Spawn weight for niter bedrock ore", 50);
|
||||
bedrockFluoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B12_bedrockFluoriteWeight", "Spawn weight for fluorite bedrock ore", 50);
|
||||
bedrockRedstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B13_bedrockRedstoneWeight", "Spawn weight for redstone bedrock ore", 50);
|
||||
bedrockChlorocalciteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B14_bedrockbChlorocalciteWeight", "Spawn weight for chlorocalcite bedrock ore", 35);
|
||||
|
||||
ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4);
|
||||
titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2);
|
||||
|
||||
@ -54,8 +54,8 @@ public class ArmorRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ModItems.plate_polymer });
|
||||
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ModItems.plate_polymer });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_helmet, 1), new Object[] { "EEE", "EE ", 'E', DNT.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_plate, 1), new Object[] { "EE ", "EEE", "EEE", 'E', DNT.ingot() });
|
||||
@ -68,7 +68,7 @@ public class ArmorRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', POLYMER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', ANY_PLASTIC.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'T', ModItems.gas_empty, 'B', ModItems.alloy_plate });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_legs });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_boots });
|
||||
@ -81,9 +81,9 @@ public class ArmorRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.getID()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_legs, 1), new Object[] { "MBM", "NSN", "N N", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_legs, 'B', ModBlocks.block_starmetal });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_boots, 1), new Object[] { "N N", "BSB", 'N', ModItems.plate_armor_lunar, 'S', ModItems.starmetal_boots, 'B', ModBlocks.block_starmetal });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ModItems.plate_polymer, 'F', ModItems.gas_mask_filter });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ANY_PLASTIC.ingot(), 'F', ModItems.gas_mask_filter });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_boots });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_helmet, 1), new Object[] { "PWP", "PBP", "FSF", 'P', ModItems.plate_armor_fau, 'W', new ItemStack(Blocks.wool, 1, 14), 'B', ModItems.starmetal_helmet, 'F', ModItems.gas_mask_filter, 'S', ModItems.pipes_steel });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_plate, 1), new Object[] { "MCM", "PBP", "PSP", 'M', ModItems.motor_desh, 'C', ModItems.demon_core_closed, 'P', ModItems.plate_armor_fau, 'B', ModItems.starmetal_plate, 'S', ModBlocks.ancient_scrap });
|
||||
@ -162,7 +162,7 @@ public class ArmorRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_olde, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', Items.leather, 'F', IRON.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ModItems.plate_polymer, 'F', IRON.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_of_infamy, 1), new Object[] { "III", "III", " I ", 'I', IRON.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', POLYMER.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', ANY_PLASTIC.ingot() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_rag, 1), new Object[] { "RRR", 'R', ModItems.rag_damp });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_piss, 1), new Object[] { "RRR", 'R', ModItems.rag_piss });
|
||||
|
||||
|
||||
@ -51,6 +51,9 @@ public class MineralRecipes {
|
||||
add1To9Pair(ModBlocks.block_polymer, ModItems.ingot_polymer);
|
||||
add1To9Pair(ModBlocks.block_bakelite, ModItems.ingot_bakelite);
|
||||
add1To9Pair(ModBlocks.block_rubber, ModItems.ingot_rubber);
|
||||
add1To9Pair(ModBlocks.block_cadmium, ModItems.ingot_cadmium);
|
||||
add1To9Pair(ModBlocks.block_tcalloy, ModItems.ingot_tcalloy);
|
||||
add1To9Pair(ModBlocks.block_cdalloy, ModItems.ingot_cdalloy);
|
||||
|
||||
for(int i = 0; i < EnumCokeType.values().length; i++) {
|
||||
add1To9PairSameMeta(Item.getItemFromBlock(ModBlocks.block_coke), ModItems.coke, i);
|
||||
|
||||
@ -210,7 +210,7 @@ public class EntityMappings {
|
||||
addEntity(EntityCog.class, "entity_stray_cog", 1000);
|
||||
addEntity(EntitySawblade.class, "entity_stray_saw", 1000);
|
||||
addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000);
|
||||
addEntity(EntityMist.class, "entity_mist", 1000);
|
||||
addEntity(EntityMist.class, "entity_mist", 250, false);
|
||||
|
||||
addEntity(EntityItemWaste.class, "entity_item_waste", 100);
|
||||
addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100);
|
||||
|
||||
@ -16,6 +16,7 @@ import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART;
|
||||
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid;
|
||||
import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous;
|
||||
import com.hbm.lib.ModDamageSource;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ArmorUtil;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.EntityDamageUtil;
|
||||
@ -101,10 +102,21 @@ public class EntityMist extends Entity {
|
||||
} else {
|
||||
|
||||
for(int i = 0; i < 2; i++) {
|
||||
double x = this.boundingBox.minX + rand.nextDouble() * (this.boundingBox.maxX - this.boundingBox.minX);
|
||||
double x = this.boundingBox.minX + (rand.nextDouble() - 0.5) * (this.boundingBox.maxX - this.boundingBox.minX);
|
||||
double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY);
|
||||
double z = this.boundingBox.minZ + rand.nextDouble() * (this.boundingBox.maxZ - this.boundingBox.minZ);
|
||||
worldObj.spawnParticle("cloud", x, y, z, 0, 0, 0);
|
||||
double z = this.boundingBox.minZ + (rand.nextDouble() - 0.5) * (this.boundingBox.maxZ - this.boundingBox.minZ);
|
||||
|
||||
NBTTagCompound fx = new NBTTagCompound();
|
||||
fx.setString("type", "tower");
|
||||
fx.setFloat("lift", 0.5F);
|
||||
fx.setFloat("base", 0.75F);
|
||||
fx.setFloat("max", 2F);
|
||||
fx.setInteger("life", 50 + worldObj.rand.nextInt(10));
|
||||
fx.setInteger("color",this.getType().getColor());
|
||||
fx.setDouble("posX", x);
|
||||
fx.setDouble("posY", y);
|
||||
fx.setDouble("posZ", z);
|
||||
MainRegistry.proxy.effectNT(fx);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -192,11 +204,14 @@ public class EntityMist extends Entity {
|
||||
@Override
|
||||
protected void readEntityFromNBT(NBTTagCompound nbt) {
|
||||
this.setType(Fluids.fromID(nbt.getInteger("type")));
|
||||
this.setArea(nbt.getFloat("width"), nbt.getFloat("height"));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeEntityToNBT(NBTTagCompound nbt) {
|
||||
nbt.setInteger("type", this.getType().getID());
|
||||
nbt.setFloat("width", this.dataWatcher.getWatchableObjectFloat(11));
|
||||
nbt.setFloat("height", this.dataWatcher.getWatchableObjectFloat(12));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -204,6 +219,12 @@ public class EntityMist extends Entity {
|
||||
public boolean canRenderOnFire() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override public void moveEntity(double x, double y, double z) { }
|
||||
@Override public void addVelocity(double x, double y, double z) { }
|
||||
@Override public void setPosition(double x, double y, double z) {
|
||||
if(this.ticksExisted == 0) super.setPosition(x, y, z); //honest to fucking god mojang suck my fucking nuts
|
||||
}
|
||||
|
||||
public static SprayStyle getStyleFromType(FluidType type) {
|
||||
|
||||
|
||||
@ -5,12 +5,17 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.rail.IRailNTM;
|
||||
import com.hbm.blocks.rail.IRailNTM.MoveContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailCheckType;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
import com.hbm.util.ChatBuilder;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
@ -20,15 +25,19 @@ import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.ChatComponentText;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre;
|
||||
|
||||
public abstract class EntityRailCarBase extends Entity {
|
||||
public abstract class EntityRailCarBase extends Entity implements ILookOverlay {
|
||||
|
||||
public LogicalTrainUnit ltu;
|
||||
public int ltuIndex = 0;
|
||||
public boolean isOnRail = true;
|
||||
private int turnProgress;
|
||||
/* Clientside position that should be approached with smooth interpolation */
|
||||
@ -100,14 +109,18 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
if(neighbor.getCoupledTo(closestNeighborCoupling) != null) continue;
|
||||
this.couple(closestOwnCoupling, neighbor);
|
||||
neighbor.couple(closestNeighborCoupling, this);
|
||||
if(this.ltu != null) this.ltu.dissolve();
|
||||
if(neighbor.ltu != null) neighbor.ltu.dissolve();
|
||||
if(this.ltu != null) this.ltu.dissolveTrain();
|
||||
if(neighbor.ltu != null) neighbor.ltu.dissolveTrain();
|
||||
player.swingItem();
|
||||
|
||||
player.addChatComponentMessage(new ChatComponentText("Coupled " + this.hashCode() + " (" + closestOwnCoupling.name() + ") to " + neighbor.hashCode() + " (" + closestNeighborCoupling.name() + ")"));
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//DEBUG
|
||||
if(this.ltu != null) {
|
||||
|
||||
String id = Integer.toHexString(ltu.hashCode());
|
||||
@ -151,9 +164,9 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
this.setRotation(this.rotationYaw, this.rotationPitch);
|
||||
}
|
||||
|
||||
BlockPos anchor = this.getCurentAnchorPos();
|
||||
Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan());
|
||||
Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan());
|
||||
BlockPos anchor = this.getCurrentAnchorPos();
|
||||
Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
this.lastRenderX = this.renderX;
|
||||
this.lastRenderY = this.renderY;
|
||||
@ -169,15 +182,15 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
|
||||
if(this.coupledFront != null && this.coupledFront.isDead) {
|
||||
this.coupledFront = null;
|
||||
if(this.ltu != null) this.ltu.dissolve();
|
||||
if(this.ltu != null) this.ltu.dissolveTrain();
|
||||
}
|
||||
if(this.coupledBack != null && this.coupledBack.isDead) {
|
||||
this.coupledBack = null;
|
||||
if(this.ltu != null) this.ltu.dissolve();
|
||||
if(this.ltu != null) this.ltu.dissolveTrain();
|
||||
}
|
||||
|
||||
if(this.ltu == null && (this.coupledFront == null || this.coupledBack == null)) {
|
||||
LogicalTrainUnit.generate(this);
|
||||
LogicalTrainUnit.generateTrain(this);
|
||||
}
|
||||
|
||||
DummyConfig[] definitions = this.getDummies();
|
||||
@ -194,6 +207,8 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
double y = posY + rot.yCoord;
|
||||
double z = posZ + rot.zCoord;
|
||||
dummy.setPosition(x, y, z);
|
||||
dummy.setSize(def.width, def.height);
|
||||
dummy.velocityChanged = true;
|
||||
worldObj.spawnEntityInWorld(dummy);
|
||||
this.dummies[i] = dummy;
|
||||
}
|
||||
@ -209,17 +224,16 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
double x = renderX + rot.xCoord;
|
||||
double y = renderY + rot.yCoord;
|
||||
double z = renderZ + rot.zCoord;
|
||||
dummy.setSize(def.width, def.height); // TEMP
|
||||
dummy.setPosition(x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) {
|
||||
return getRelPosAlongRail(anchor, distanceToCover, this.getGauge(), this.worldObj, Vec3.createVectorHelper(posX, posY, posZ), this.rotationYaw);
|
||||
public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, MoveContext context) {
|
||||
return getRelPosAlongRail(anchor, distanceToCover, this.getGauge(), this.worldObj, Vec3.createVectorHelper(posX, posY, posZ), this.rotationYaw, context);
|
||||
}
|
||||
|
||||
public static Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, TrackGauge gauge, World worldObj, Vec3 next, float yaw) {
|
||||
public static Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, TrackGauge gauge, World worldObj, Vec3 next, float yaw, MoveContext context) {
|
||||
|
||||
if(distanceToCover < 0) {
|
||||
distanceToCover *= -1;
|
||||
@ -248,7 +262,7 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
IRailNTM rail = (IRailNTM) block;
|
||||
|
||||
if(it == 1) {
|
||||
next = rail.getTravelLocation(worldObj, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, new RailContext());
|
||||
next = rail.getTravelLocation(worldObj, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, new RailContext(), context);
|
||||
}
|
||||
|
||||
boolean flip = distanceToCover < 0;
|
||||
@ -256,7 +270,7 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
if(rail.getGauge(worldObj, x, y, z) == gauge) {
|
||||
RailContext info = new RailContext();
|
||||
Vec3 prev = next;
|
||||
next = rail.getTravelLocation(worldObj, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info);
|
||||
next = rail.getTravelLocation(worldObj, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, context);
|
||||
distanceToCover = info.overshoot;
|
||||
anchor = info.pos;
|
||||
|
||||
@ -293,10 +307,50 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
}
|
||||
|
||||
/* Move carts together with links */
|
||||
for(LogicalTrainUnit ltu : ltus) ltu.combineLinks();
|
||||
//for(LogicalTrainUnit ltu : ltus) ltu.combineWagons();
|
||||
|
||||
/* Move carts with unified speed */
|
||||
for(LogicalTrainUnit ltu : ltus) ltu.moveLinks();
|
||||
//for(LogicalTrainUnit ltu : ltus) ltu.moveTrain();
|
||||
|
||||
for(LogicalTrainUnit ltu : ltus) {
|
||||
|
||||
double speed = ltu.getTotalSpeed();
|
||||
|
||||
if(Math.abs(speed) < 0.001) speed = 0;
|
||||
|
||||
if(ltu.trains.length == 1) {
|
||||
|
||||
EntityRailCarBase train = ltu.trains[0];
|
||||
|
||||
BlockPos anchor = new BlockPos(train.posX, train.posY, train.posZ);
|
||||
Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE));
|
||||
if(newPos == null) {
|
||||
train.derail();
|
||||
ltu.dissolveTrain();
|
||||
continue;
|
||||
}
|
||||
train.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
anchor = train.getCurrentAnchorPos();
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
train.derail();
|
||||
ltu.dissolveTrain();
|
||||
continue;
|
||||
} else {
|
||||
ltu.setRenderPos(train, frontPos, backPos);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(speed == 0) {
|
||||
ltu.combineWagons();
|
||||
} else {
|
||||
ltu.moveTrainByApproach(speed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the amount of blocks that the train should move per tick */
|
||||
@ -306,18 +360,20 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
public abstract TrackGauge getGauge();
|
||||
/** Returns the length between the core and one of the bogies */
|
||||
public abstract double getLengthSpan();
|
||||
/** Returns the length between the core and the collision points */
|
||||
public abstract double getCollisionSpan();
|
||||
/** Returns a collision box, usually smaller than the entity's AABB for rendering, which is used for colliding trains */
|
||||
public AxisAlignedBB getCollisionBox() {
|
||||
/*public AxisAlignedBB getCollisionBox() {
|
||||
return this.boundingBox;
|
||||
}
|
||||
}*/
|
||||
/** Returns a collision box used for block collisions when derailed */
|
||||
/*@Override public AxisAlignedBB getBoundingBox() {
|
||||
return this.boundingBox;
|
||||
}*/
|
||||
|
||||
/** Returns the "true" position of the train, i.e. the block it wants to snap to */
|
||||
public BlockPos getCurentAnchorPos() {
|
||||
return new BlockPos(posX, posY, posZ);
|
||||
public BlockPos getCurrentAnchorPos() {
|
||||
return new BlockPos(posX, posY + 0.25, posZ);
|
||||
}
|
||||
|
||||
public void derail() {
|
||||
@ -348,7 +404,7 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
}
|
||||
|
||||
/** Invisible entities that make up the dynamic bounding structure of the train, moving as the train rotates. */
|
||||
public static class BoundingBoxDummyEntity extends Entity {
|
||||
public static class BoundingBoxDummyEntity extends Entity implements ILookOverlay {
|
||||
|
||||
private int turnProgress;
|
||||
private double trainX;
|
||||
@ -413,6 +469,13 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
this.trainZ = posZ;
|
||||
this.turnProgress = turnProg + 2;
|
||||
}
|
||||
@Override
|
||||
public void printHook(Pre event, World world, int x, int y, int z) {
|
||||
Entity e = worldObj.getEntityByID(this.dataWatcher.getWatchableObjectInt(3));
|
||||
if(e instanceof EntityRailCarBase) {
|
||||
((EntityRailCarBase) e).printHook(event, world, x, y, z);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DummyConfig[] getDummies() {
|
||||
@ -473,52 +536,54 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
protected EntityRailCarBase trains[];
|
||||
|
||||
/** Assumes that the train is an endpoint, i.e. that only one coupling is in use */
|
||||
public static LogicalTrainUnit generate(EntityRailCarBase train) {
|
||||
public static LogicalTrainUnit generateTrain(EntityRailCarBase train) {
|
||||
List<EntityRailCarBase> links = new ArrayList();
|
||||
Set<EntityRailCarBase> brake = new HashSet();
|
||||
links.add(train);
|
||||
brake.add(train);
|
||||
LogicalTrainUnit ltu = new LogicalTrainUnit();
|
||||
|
||||
if(train.coupledFront == null && train.coupledFront == null) {
|
||||
if(train.coupledFront == null && train.coupledBack == null) {
|
||||
ltu.trains = new EntityRailCarBase[] {train};
|
||||
train.ltu = ltu;
|
||||
train.ltuIndex = 0;
|
||||
return ltu;
|
||||
}
|
||||
|
||||
EntityRailCarBase prevCar = train;
|
||||
EntityRailCarBase nextCar = train.coupledBack == null ? train.coupledFront : train.coupledBack;
|
||||
EntityRailCarBase current = train;
|
||||
EntityRailCarBase next = null;
|
||||
|
||||
while(nextCar != null) {
|
||||
links.add(nextCar);
|
||||
brake.add(nextCar);
|
||||
do {
|
||||
next = null;
|
||||
|
||||
if(current.coupledFront != null && !brake.contains(current.coupledFront)) next = current.coupledFront;
|
||||
if(current.coupledBack != null && !brake.contains(current.coupledBack)) next = current.coupledBack;
|
||||
|
||||
EntityRailCarBase currentCar = nextCar;
|
||||
nextCar = nextCar.coupledBack == prevCar ? nextCar.coupledFront : nextCar.coupledBack;
|
||||
prevCar = currentCar;
|
||||
links.add(current);
|
||||
brake.add(current);
|
||||
|
||||
if(brake.contains(nextCar)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
current = next;
|
||||
|
||||
} while(next != null);
|
||||
|
||||
ltu.trains = new EntityRailCarBase[links.size()];
|
||||
|
||||
for(int i = 0; i < ltu.trains.length; i++) {
|
||||
ltu.trains[i] = links.get(i);
|
||||
ltu.trains[i].ltu = ltu;
|
||||
ltu.trains[i].ltuIndex = i;
|
||||
}
|
||||
|
||||
return ltu;
|
||||
}
|
||||
|
||||
public void dissolve() {
|
||||
/** Removes the LTU from all wagons */
|
||||
public void dissolveTrain() {
|
||||
for(EntityRailCarBase train : trains) {
|
||||
train.ltu = null;
|
||||
train.ltuIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void combineLinks() {
|
||||
/** Find the center fo the train, then moves all wagons towards that center until the coupling points roughly touch */
|
||||
public void combineWagons() {
|
||||
|
||||
if(trains.length <= 1) return;
|
||||
|
||||
@ -529,34 +594,47 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
|
||||
for(int i = centerIndex - 1; i >= 0; i--) {
|
||||
EntityRailCarBase next = trains[i];
|
||||
moveTo(prev, next);
|
||||
moveWagonTo(prev, next);
|
||||
prev = next;
|
||||
}
|
||||
|
||||
prev = center;
|
||||
for(int i = centerIndex + 1; i < trains.length; i++) {
|
||||
EntityRailCarBase next = trains[i];
|
||||
moveTo(prev, next);
|
||||
moveWagonTo(prev, next);
|
||||
prev = next;
|
||||
}
|
||||
}
|
||||
|
||||
public static void moveTo(EntityRailCarBase prev, EntityRailCarBase next) {
|
||||
TrainCoupling prevCouple = prev.getCouplingFrom(next);
|
||||
TrainCoupling nextCouple = next.getCouplingFrom(prev);
|
||||
Vec3 prevLoc = prev.getCouplingPos(prevCouple);
|
||||
Vec3 nextLoc = next.getCouplingPos(nextCouple);
|
||||
/** Moves one wagon to ne next until the coupling points roughly touch */
|
||||
public void moveWagonTo(EntityRailCarBase moveTo, EntityRailCarBase moving) {
|
||||
TrainCoupling prevCouple = moveTo.getCouplingFrom(moving);
|
||||
TrainCoupling nextCouple = moving.getCouplingFrom(moveTo);
|
||||
Vec3 prevLoc = moveTo.getCouplingPos(prevCouple);
|
||||
Vec3 nextLoc = moving.getCouplingPos(nextCouple);
|
||||
Vec3 delta = Vec3.createVectorHelper(prevLoc.xCoord - nextLoc.xCoord, 0, prevLoc.zCoord - nextLoc.zCoord);
|
||||
double len = delta.lengthVector();
|
||||
len *= 0.25D; //suspension, causes movements to be less rigid
|
||||
BlockPos anchor = new BlockPos(next.posX, next.posY, next.posZ);
|
||||
Vec3 trainPos = Vec3.createVectorHelper(next.posX, next.posY, next.posZ);
|
||||
len *= 0.75; //suspension, causes movements to be less rigid
|
||||
BlockPos anchor = new BlockPos(moving.posX, moving.posY, moving.posZ);
|
||||
Vec3 trainPos = Vec3.createVectorHelper(moving.posX, moving.posY, moving.posZ);
|
||||
float yaw = EntityRailCarBase.generateYaw(prevLoc, nextLoc);
|
||||
Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, next.getGauge(), next.worldObj, trainPos, yaw);
|
||||
next.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE));
|
||||
moving.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord);
|
||||
anchor = moving.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
moving.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
setRenderPos(moving, frontPos, backPos);
|
||||
}
|
||||
}
|
||||
|
||||
public void moveLinks() {
|
||||
/** Generates the speed of the train, then moves the rain along the rail */
|
||||
@Deprecated public void moveTrain() {
|
||||
|
||||
EntityRailCarBase prev = trains[0];
|
||||
TrainCoupling dir = prev.getCouplingFrom(null);
|
||||
@ -576,24 +654,30 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
totalSpeed = maxSpeed * Math.signum(totalSpeed);
|
||||
}
|
||||
|
||||
this.moveTrainBy(totalSpeed);
|
||||
}
|
||||
|
||||
/** Moves the entire train along the rail by a certain speed */
|
||||
@Deprecated public void moveTrainBy(double totalSpeed) {
|
||||
|
||||
for(EntityRailCarBase train : this.trains) {
|
||||
|
||||
BlockPos anchor = train.getCurentAnchorPos();
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed);
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE));
|
||||
|
||||
if(corePos == null) {
|
||||
train.derail();
|
||||
this.dissolve();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
anchor = train.getCurentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan());
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan());
|
||||
anchor = train.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
train.derail();
|
||||
this.dissolve();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
train.renderX = (frontPos.xCoord + backPos.xCoord) / 2D;
|
||||
@ -607,5 +691,110 @@ public abstract class EntityRailCarBase extends Entity {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the total speed of the LTU, negative if it is backwards compared to the arbitrary "front" wagon */
|
||||
public double getTotalSpeed() {
|
||||
|
||||
EntityRailCarBase prev = trains[0];
|
||||
double totalSpeed = 0;
|
||||
double maxSpeed = Double.POSITIVE_INFINITY;
|
||||
//if the first car is in reverse, flip all subsequent cars as well
|
||||
boolean reverseTheReverse = prev.getCouplingFrom(null) == TrainCoupling.BACK;
|
||||
|
||||
if(trains.length == 1) {
|
||||
return prev.getCurrentSpeed();
|
||||
}
|
||||
|
||||
for(EntityRailCarBase train : this.trains) {
|
||||
//if the car's linked indices are the wrong way, it is in reverse and speed applies negatively
|
||||
boolean reverse = false;
|
||||
|
||||
EntityRailCarBase conFront = train.getCoupledTo(TrainCoupling.FRONT);
|
||||
EntityRailCarBase conBack = train.getCoupledTo(TrainCoupling.BACK);
|
||||
|
||||
if(conFront != null && conFront.ltuIndex > train.ltuIndex) reverse = true;
|
||||
if(conBack != null && conBack.ltuIndex < train.ltuIndex) reverse = true;
|
||||
|
||||
reverse ^= reverseTheReverse;
|
||||
|
||||
double speed = train.getCurrentSpeed();
|
||||
if(reverse) speed *= -1;
|
||||
totalSpeed += speed;
|
||||
maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed());
|
||||
prev = train;
|
||||
}
|
||||
|
||||
if(Math.abs(totalSpeed) > maxSpeed) {
|
||||
totalSpeed = maxSpeed * Math.signum(totalSpeed);
|
||||
}
|
||||
|
||||
return totalSpeed;
|
||||
}
|
||||
|
||||
/** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */
|
||||
public void moveTrainByApproach(double speed) {
|
||||
boolean forward = speed < 0;
|
||||
double origSpeed = speed;
|
||||
speed = Math.abs(speed);
|
||||
EntityRailCarBase previous = null;
|
||||
|
||||
EntityRailCarBase first = this.trains[0];
|
||||
|
||||
for(int i = forward ? 0 : this.trains.length - 1; forward ? i < this.trains.length : i >= 0; i += forward ? 1 : -1) {
|
||||
EntityRailCarBase current = this.trains[i];
|
||||
|
||||
if(previous == null) {
|
||||
PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + current.getClass() + " " + origSpeed).color(EnumChatFormatting.RED).flush(), 1),
|
||||
new TargetPoint(current.dimension, current.posX, current.posY + 1, current.posZ, 50));
|
||||
|
||||
boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null);
|
||||
int sigNum = inReverse ? -1 : 1;
|
||||
BlockPos anchor = current.getCurrentAnchorPos();
|
||||
Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE));
|
||||
|
||||
if(corePos == null) {
|
||||
current.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
anchor = current.getCurrentAnchorPos(); //reset origin to new position
|
||||
Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
|
||||
if(frontPos == null || backPos == null) {
|
||||
current.derail();
|
||||
this.dissolveTrain();
|
||||
return;
|
||||
} else {
|
||||
setRenderPos(current, frontPos, backPos);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
this.moveWagonTo(previous, current);
|
||||
}
|
||||
|
||||
previous = current;
|
||||
}
|
||||
}
|
||||
|
||||
/** Uses the front and back bogey positions to set the render pos and angles of a wagon */
|
||||
public void setRenderPos(EntityRailCarBase current, Vec3 frontPos, Vec3 backPos) {
|
||||
current.renderX = (frontPos.xCoord + backPos.xCoord) / 2D;
|
||||
current.renderY = (frontPos.yCoord + backPos.yCoord) / 2D;
|
||||
current.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D;
|
||||
current.prevRotationYaw = current.rotationYaw;
|
||||
current.rotationYaw = current.movementYaw = generateYaw(frontPos, backPos);
|
||||
current.motionX = current.rotationYaw / 360D; // hijacking this crap for easy syncing
|
||||
current.velocityChanged = true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
List<String> text = new ArrayList();
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,22 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
public EntityRailCarCargo(World world) {
|
||||
super(world);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(10, new Integer(0));
|
||||
}
|
||||
|
||||
public int countVacantSlots() {
|
||||
int slots = 0;
|
||||
|
||||
for(int i = 0; i < this.getSizeInventory(); i++) {
|
||||
if(this.getStackInSlot(i) != null) slots++;
|
||||
}
|
||||
|
||||
return slots;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStackInSlot(int slot) {
|
||||
@ -37,9 +53,11 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.slots[slot] = null;
|
||||
}
|
||||
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
}
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -49,8 +67,10 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
if(this.slots[slot] != null) {
|
||||
ItemStack itemstack = this.slots[slot];
|
||||
this.slots[slot] = null;
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return itemstack;
|
||||
} else {
|
||||
if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@ -119,6 +139,8 @@ public abstract class EntityRailCarCargo extends EntityRailCarBase implements II
|
||||
this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1);
|
||||
}
|
||||
}
|
||||
|
||||
this.dataWatcher.updateObject(10, this.countVacantSlots());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -19,15 +19,17 @@ public abstract class EntityRailCarElectric extends EntityRailCarRidable {
|
||||
public int getChargeSlot() { return 0; }
|
||||
|
||||
@Override protected void entityInit() {
|
||||
super.entityInit();
|
||||
this.dataWatcher.addObject(3, new Integer(0));
|
||||
}
|
||||
|
||||
@Override public boolean canAccelerate() {
|
||||
return this.getPower() >= this.getPowerConsumption();
|
||||
return true;
|
||||
//return this.getPower() >= this.getPowerConsumption();
|
||||
}
|
||||
|
||||
@Override public void consumeFuel() {
|
||||
this.setPower(this.getPower() - this.getPowerConsumption());
|
||||
//this.setPower(this.getPower() - this.getPowerConsumption());
|
||||
}
|
||||
|
||||
public void setPower(int power) {
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
package com.hbm.entity.train;
|
||||
|
||||
import com.hbm.util.BobMathUtil;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -10,6 +14,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
|
||||
public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
|
||||
@ -80,55 +85,11 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
if(super.interactFirst(player)) return true;
|
||||
if(worldObj.isRemote) return true;
|
||||
|
||||
double nearestDist = Double.POSITIVE_INFINITY;
|
||||
int nearestSeat = -1;
|
||||
|
||||
Vec3[] seats = getPassengerSeats();
|
||||
for(int i = 0; i < seats.length; i++) {
|
||||
|
||||
Vec3 seat = seats[i];
|
||||
if(seat == null) continue;
|
||||
if(passengerSeats[i] != null) continue;
|
||||
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
double deltaX = player.posX - x;
|
||||
double deltaZ = player.posZ - z;
|
||||
double radians = -Math.atan2(deltaX, deltaZ);
|
||||
double degrees = MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
|
||||
double dist = Math.abs(BobMathUtil.angularDifference(degrees, player.rotationYaw));
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
nearestSeat = i;
|
||||
}
|
||||
}
|
||||
|
||||
if(this.riddenByEntity == null) {
|
||||
Vec3 seat = getRiderSeatPosition();
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
double deltaX = player.posX - x;
|
||||
double deltaZ = player.posZ - z;
|
||||
double radians = -Math.atan2(deltaX, deltaZ);
|
||||
double degrees = MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI - 90);
|
||||
double dist = Math.abs(BobMathUtil.angularDifference(degrees, player.rotationYaw));
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
nearestSeat = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if(nearestDist > 180) return true;
|
||||
int nearestSeat = this.getNearestSeat(player);
|
||||
|
||||
if(nearestSeat == -1) {
|
||||
player.mountEntity(this);
|
||||
} else {
|
||||
} else if(nearestSeat >= 0) {
|
||||
SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj, this, nearestSeat);
|
||||
Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat];
|
||||
passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
@ -144,6 +105,58 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
return true;
|
||||
}
|
||||
|
||||
public int getNearestSeat(EntityPlayer player) {
|
||||
|
||||
double nearestDist = Double.POSITIVE_INFINITY;
|
||||
int nearestSeat = -3;
|
||||
|
||||
Vec3[] seats = getPassengerSeats();
|
||||
Vec3 look = player.getLook(2);
|
||||
look.xCoord += player.posX;
|
||||
look.yCoord += player.posY + player.eyeHeight - player.yOffset;
|
||||
look.zCoord += player.posZ;
|
||||
|
||||
for(int i = 0; i < seats.length; i++) {
|
||||
|
||||
Vec3 seat = seats[i];
|
||||
if(seat == null) continue;
|
||||
if(passengerSeats[i] != null) continue;
|
||||
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double y = renderY + seat.yCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z);
|
||||
double dist = delta.lengthVector();
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
nearestSeat = i;
|
||||
}
|
||||
}
|
||||
|
||||
if(this.riddenByEntity == null) {
|
||||
Vec3 seat = getRiderSeatPosition();
|
||||
seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180));
|
||||
double x = renderX + seat.xCoord;
|
||||
double y = renderY + seat.yCoord;
|
||||
double z = renderZ + seat.zCoord;
|
||||
|
||||
Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z);
|
||||
double dist = delta.lengthVector();
|
||||
|
||||
if(dist < nearestDist) {
|
||||
nearestDist = dist;
|
||||
nearestSeat = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if(nearestDist > 180) return -2;
|
||||
|
||||
return nearestSeat;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
super.onUpdate();
|
||||
@ -266,4 +279,15 @@ public abstract class EntityRailCarRidable extends EntityRailCarCargo {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) {
|
||||
List<String> text = new ArrayList();
|
||||
/*text.add("LTU: " + this.ltu);
|
||||
text.add("Front: " + this.coupledFront);
|
||||
text.add("Back: " + this.coupledBack);*/
|
||||
text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me()));
|
||||
ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text);
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,6 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
@ -52,11 +51,12 @@ public class TrainCargoTram extends EntityRailCarElectric implements IGUIProvide
|
||||
|
||||
@Override public TrackGauge getGauge() { return TrackGauge.STANDARD; }
|
||||
@Override public double getLengthSpan() { return 1.5; }
|
||||
@Override public double getCollisionSpan() { return 2.5; }
|
||||
@Override public Vec3 getRiderSeatPosition() { return Vec3.createVectorHelper(0.375, 2.375, 0.5); }
|
||||
@Override public boolean shouldRiderSit() { return false; }
|
||||
@Override public int getSizeInventory() { return 29; }
|
||||
@Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTram"; }
|
||||
@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); }
|
||||
//@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); }
|
||||
@Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; }
|
||||
|
||||
@Override public int getMaxPower() { return this.getPowerConsumption() * 100; }
|
||||
|
||||
@ -1,13 +1,30 @@
|
||||
package com.hbm.entity.train;
|
||||
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import com.hbm.blocks.rail.IRailNTM.TrackGauge;
|
||||
import com.hbm.inventory.gui.GuiInfoContainer;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
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;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class TrainCargoTramTrailer extends EntityRailCarCargo {
|
||||
public class TrainCargoTramTrailer extends EntityRailCarCargo implements IGUIProvider {
|
||||
|
||||
/*
|
||||
*
|
||||
@ -28,15 +45,12 @@ public class TrainCargoTramTrailer extends EntityRailCarCargo {
|
||||
@Override public double getMaxRailSpeed() { return 1; }
|
||||
@Override public TrackGauge getGauge() { return TrackGauge.STANDARD; }
|
||||
@Override public double getLengthSpan() { return 1.5; }
|
||||
@Override public int getSizeInventory() { return 29; }
|
||||
@Override public double getCollisionSpan() { return 2.5; }
|
||||
@Override public int getSizeInventory() { return 45; }
|
||||
@Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTramTrailer"; }
|
||||
@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); }
|
||||
//@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); }
|
||||
@Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; }
|
||||
|
||||
@Override
|
||||
public double getCurrentSpeed() {
|
||||
return 0; //we'll figure out how linked carts work later on - i hope
|
||||
}
|
||||
@Override public double getCurrentSpeed() { return 0; }
|
||||
|
||||
@Override
|
||||
public DummyConfig[] getDummies() {
|
||||
@ -55,4 +69,115 @@ public class TrainCargoTramTrailer extends EntityRailCarCargo {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean interactFirst(EntityPlayer player) {
|
||||
if(super.interactFirst(player)) return false;
|
||||
|
||||
if(!this.worldObj.isRemote) {
|
||||
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, this.getEntityId(), 0, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new ContainerTrainCargoTramTrailer(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUITrainCargoTramTrailer(player.inventory, this);
|
||||
}
|
||||
|
||||
/*
|
||||
* ##### ##### # # ##### ##### ### # # ##### ####
|
||||
* # # # ## # # # # # ## # # # #
|
||||
* # # # # # # # ##### # # # # ### ####
|
||||
* # # # # ## # # # # # ## # # #
|
||||
* ##### ##### # # # # # ### # # ##### # #
|
||||
*/
|
||||
public static class ContainerTrainCargoTramTrailer extends Container {
|
||||
private TrainCargoTramTrailer train;
|
||||
public ContainerTrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) {
|
||||
this.train = train;
|
||||
for(int i = 0; i < 5; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(train, i * 9 + j, 8 + j * 18, 18 + i * 18));
|
||||
}
|
||||
}
|
||||
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, 140 + i * 18));
|
||||
}
|
||||
}
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 198));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {
|
||||
ItemStack stackCopy = null;
|
||||
Slot slot = (Slot) this.inventorySlots.get(slotIndex);
|
||||
if(slot != null && slot.getHasStack()) {
|
||||
ItemStack stack = slot.getStack();
|
||||
stackCopy = stack.copy();
|
||||
if(slotIndex < train.getSizeInventory()) {
|
||||
if(!this.mergeItemStack(stack, train.getSizeInventory(), this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
} else
|
||||
if(!this.mergeItemStack(stack, 0, 45, false)) {
|
||||
return null;
|
||||
}
|
||||
if(stack.stackSize == 0) {
|
||||
slot.putStack((ItemStack) null);
|
||||
} else {
|
||||
slot.onSlotChanged();
|
||||
}
|
||||
}
|
||||
return stackCopy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return train.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* ##### # # ###
|
||||
* # # # #
|
||||
* # ## # # #
|
||||
* # # # # #
|
||||
* ##### ##### ###
|
||||
*/
|
||||
@SideOnly(Side.CLIENT)
|
||||
public static class GUITrainCargoTramTrailer extends GuiInfoContainer {
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/vehicles/gui_cargo_tram_trailer.png");
|
||||
private TrainCargoTramTrailer train;
|
||||
public GUITrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) {
|
||||
super(new ContainerTrainCargoTramTrailer(invPlayer, train));
|
||||
this.train = train;
|
||||
this.xSize = 176;
|
||||
this.ySize = 222;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.train.hasCustomInventoryName() ? this.train.getInventoryName() : I18n.format(this.train.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float intero, int x, int y) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
package com.hbm.explosion.vanillant.standard;
|
||||
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.interfaces.IBlockMutator;
|
||||
import com.hbm.inventory.RecipesCommon.MetaBlock;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class BlockMutatorDebris implements IBlockMutator {
|
||||
|
||||
protected MetaBlock metaBlock;
|
||||
|
||||
public BlockMutatorDebris(Block block) {
|
||||
this(block, 0);
|
||||
}
|
||||
|
||||
public BlockMutatorDebris(Block block, int meta) {
|
||||
this.metaBlock = new MetaBlock(block, meta);
|
||||
}
|
||||
|
||||
@Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { }
|
||||
|
||||
@Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) {
|
||||
|
||||
World world = explosion.world;
|
||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||
Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ);
|
||||
if(b.isNormalCube() && (b != metaBlock.block || world.getBlockMetadata(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) != metaBlock.meta)) {
|
||||
world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -64,6 +64,8 @@ public class BlockProcessorStandard implements IBlockProcessor {
|
||||
|
||||
block.onBlockExploded(world, blockX, blockY, blockZ, explosion.compat);
|
||||
if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ);
|
||||
} else {
|
||||
iterator.remove();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -122,13 +122,13 @@ public class EntityEffectHandler {
|
||||
|
||||
private static void handleRadiation(EntityLivingBase entity) {
|
||||
|
||||
if(ContaminationUtil.isRadImmune(entity))
|
||||
return;
|
||||
|
||||
World world = entity.worldObj;
|
||||
|
||||
if(!world.isRemote) {
|
||||
|
||||
if(ContaminationUtil.isRadImmune(entity))
|
||||
return;
|
||||
|
||||
int ix = (int)MathHelper.floor_double(entity.posX);
|
||||
int iy = (int)MathHelper.floor_double(entity.posY);
|
||||
int iz = (int)MathHelper.floor_double(entity.posZ);
|
||||
@ -416,6 +416,10 @@ public class EntityEffectHandler {
|
||||
}
|
||||
|
||||
private static void handleOil(EntityLivingBase entity) {
|
||||
|
||||
if(entity.worldObj.isRemote)
|
||||
return;
|
||||
|
||||
int oil = HbmLivingProps.getOil(entity);
|
||||
|
||||
if(oil > 0) {
|
||||
|
||||
300
src/main/java/com/hbm/handler/pollution/PollutionHandler.java
Normal file
300
src/main/java/com/hbm/handler/pollution/PollutionHandler.java
Normal file
@ -0,0 +1,300 @@
|
||||
package com.hbm.handler.pollution;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.util.HashMap;
|
||||
import java.util.Locale;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.Phase;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.SharedMonsterAttributes;
|
||||
import net.minecraft.entity.ai.attributes.AttributeModifier;
|
||||
import net.minecraft.entity.monster.IMob;
|
||||
import net.minecraft.nbt.CompressedStreamTools;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.ChunkCoordIntPair;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
public class PollutionHandler {
|
||||
|
||||
public static final String fileName = "hbmpollution.dat";
|
||||
public static HashMap<World, PollutionPerWorld> perWorld = new HashMap();
|
||||
|
||||
/** Baserate of soot generation for a furnace-equivalent machine per second */
|
||||
public static final float SOOT_PER_SECOND = 1F / 25F;
|
||||
|
||||
///////////////////////
|
||||
/// UTILITY METHODS ///
|
||||
///////////////////////
|
||||
public static void incrementPollution(World world, int x, int y, int z, PollutionType type, float amount) {
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
PollutionData data = ppw.pollution.get(pos);
|
||||
if(data == null) {
|
||||
data = new PollutionData();
|
||||
ppw.pollution.put(pos, data);
|
||||
}
|
||||
data.pollution[type.ordinal()] = MathHelper.clamp_float(data.pollution[type.ordinal()] + amount, 0F, 10_000F);
|
||||
}
|
||||
|
||||
public static void decrementPollution(World world, int x, int y, int z, PollutionType type, float amount) {
|
||||
incrementPollution(world, x, y, z, type, -amount);
|
||||
}
|
||||
|
||||
public static void setPollution(World world, int x, int y, int z, PollutionType type, float amount) {
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
PollutionData data = ppw.pollution.get(pos);
|
||||
if(data == null) {
|
||||
data = new PollutionData();
|
||||
ppw.pollution.put(pos, data);
|
||||
}
|
||||
data.pollution[type.ordinal()] = amount;
|
||||
}
|
||||
|
||||
public static float getPollution(World world, int x, int y, int z, PollutionType type) {
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return 0F;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
PollutionData data = ppw.pollution.get(pos);
|
||||
if(data == null) return 0F;
|
||||
return data.pollution[type.ordinal()];
|
||||
}
|
||||
|
||||
public static PollutionData getPollutionData(World world, int x, int y, int z) {
|
||||
PollutionPerWorld ppw = perWorld.get(world);
|
||||
if(ppw == null) return null;
|
||||
ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6);
|
||||
PollutionData data = ppw.pollution.get(pos);
|
||||
return data;
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
/// EVENT HANDLING ///
|
||||
//////////////////////
|
||||
@SubscribeEvent
|
||||
public void onWorldLoad(WorldEvent.Load event) {
|
||||
if(!event.world.isRemote) {
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
String dirPath = getDataDir(world);
|
||||
|
||||
try {
|
||||
File pollutionFile = new File(dirPath, fileName);
|
||||
|
||||
if(pollutionFile != null) {
|
||||
|
||||
if(pollutionFile.exists()) {
|
||||
FileInputStream io = new FileInputStream(pollutionFile);
|
||||
NBTTagCompound data = CompressedStreamTools.readCompressed(io);
|
||||
io.close();
|
||||
perWorld.put(event.world, new PollutionPerWorld(data));
|
||||
} else {
|
||||
perWorld.put(event.world, new PollutionPerWorld());
|
||||
}
|
||||
}
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldUnload(WorldEvent.Unload event) {
|
||||
if(!event.world.isRemote) perWorld.remove(event.world);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onWorldSave(WorldEvent.Save event) {
|
||||
if(!event.world.isRemote) {
|
||||
WorldServer world = (WorldServer) event.world;
|
||||
String dirPath = getDataDir(world);
|
||||
|
||||
try {
|
||||
File pollutionFile = new File(dirPath, fileName);
|
||||
if(!pollutionFile.exists()) pollutionFile.createNewFile();
|
||||
NBTTagCompound data = perWorld.get(world).writeToNBT();
|
||||
CompressedStreamTools.writeCompressed(data, new FileOutputStream(pollutionFile));
|
||||
} catch(Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getDataDir(WorldServer world) {
|
||||
String dir = world.getSaveHandler().getWorldDirectory().getAbsolutePath();
|
||||
if(world.provider.dimensionId != 0) {
|
||||
dir += File.separator + "DIM" + world.provider.dimensionId;
|
||||
}
|
||||
dir += File.separator + "data";
|
||||
return dir;
|
||||
}
|
||||
|
||||
//////////////////////////
|
||||
/// SYSTEM UPDATE LOOP ///
|
||||
//////////////////////////
|
||||
int eggTimer = 0;
|
||||
@SubscribeEvent
|
||||
public void updateSystem(TickEvent.ServerTickEvent event) {
|
||||
|
||||
if(event.side == Side.SERVER && event.phase == Phase.END) {
|
||||
|
||||
eggTimer++;
|
||||
if(eggTimer < 60) return;
|
||||
eggTimer = 0;
|
||||
|
||||
for(Entry<World, PollutionPerWorld> entry : perWorld.entrySet()) {
|
||||
HashMap<ChunkCoordIntPair, PollutionData> newPollution = new HashMap();
|
||||
|
||||
for(Entry<ChunkCoordIntPair, PollutionData> chunk : entry.getValue().pollution.entrySet()) {
|
||||
int x = chunk.getKey().chunkXPos;
|
||||
int z = chunk.getKey().chunkZPos;
|
||||
PollutionData data = chunk.getValue();
|
||||
|
||||
float[] pollutionForNeightbors = new float[PollutionType.values().length];
|
||||
int S = PollutionType.SOOT.ordinal();
|
||||
int H = PollutionType.HEAVYMETAL.ordinal();
|
||||
|
||||
/* CALCULATION */
|
||||
if(data.pollution[S] > 15) {
|
||||
pollutionForNeightbors[S] = data.pollution[S] * 0.05F;
|
||||
data.pollution[S] *= 0.8F;
|
||||
} else {
|
||||
data.pollution[S] *= 0.99F;
|
||||
}
|
||||
|
||||
data.pollution[H] *= 0.999F;
|
||||
|
||||
/* SPREADING */
|
||||
//apply new data to self
|
||||
PollutionData newData = newPollution.get(chunk.getKey());
|
||||
if(newData == null) newData = new PollutionData();
|
||||
|
||||
boolean shouldPut = false;
|
||||
for(int i = 0; i < newData.pollution.length; i++) {
|
||||
newData.pollution[i] += data.pollution[i];
|
||||
if(newData.pollution[i] > 0) shouldPut = true;
|
||||
}
|
||||
if(shouldPut) newPollution.put(chunk.getKey(), newData);
|
||||
|
||||
//apply neighbor data to neighboring chunks
|
||||
int[][] offsets = new int[][] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
|
||||
for(int[] offset : offsets) {
|
||||
ChunkCoordIntPair offPos = new ChunkCoordIntPair(x + offset[0], z + offset[1]);
|
||||
PollutionData offsetData = newPollution.get(offPos);
|
||||
if(offsetData == null) offsetData = new PollutionData();
|
||||
|
||||
shouldPut = false;
|
||||
for(int i = 0; i < offsetData.pollution.length; i++) {
|
||||
offsetData.pollution[i] += pollutionForNeightbors[i];
|
||||
if(offsetData.pollution[i] > 0) shouldPut = true;
|
||||
}
|
||||
if(shouldPut) newPollution.put(offPos, offsetData);
|
||||
}
|
||||
}
|
||||
|
||||
entry.getValue().pollution.clear();
|
||||
entry.getValue().pollution.putAll(newPollution);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////
|
||||
/// DATA STRUCTURE ///
|
||||
//////////////////////
|
||||
public static class PollutionPerWorld {
|
||||
public HashMap<ChunkCoordIntPair, PollutionData> pollution = new HashMap();
|
||||
|
||||
public PollutionPerWorld() { }
|
||||
|
||||
public PollutionPerWorld(NBTTagCompound data) {
|
||||
|
||||
NBTTagList list = data.getTagList("entries", 10);
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++) {
|
||||
NBTTagCompound nbt = list.getCompoundTagAt(i);
|
||||
int chunkX = nbt.getInteger("chunkX");
|
||||
int chunkZ = nbt.getInteger("chunkZ");
|
||||
pollution.put(new ChunkCoordIntPair(chunkX, chunkZ), PollutionData.fromNBT(nbt));
|
||||
}
|
||||
}
|
||||
|
||||
public NBTTagCompound writeToNBT() {
|
||||
|
||||
NBTTagCompound data = new NBTTagCompound();
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
|
||||
for(Entry<ChunkCoordIntPair, PollutionData> entry : pollution.entrySet()) {
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
nbt.setInteger("chunkX", entry.getKey().chunkXPos);
|
||||
nbt.setInteger("chunkZ", entry.getKey().chunkZPos);
|
||||
entry.getValue().toNBT(nbt);
|
||||
list.appendTag(nbt);
|
||||
}
|
||||
|
||||
data.setTag("entries", list);
|
||||
|
||||
return data;
|
||||
}
|
||||
}
|
||||
|
||||
public static class PollutionData {
|
||||
public float[] pollution = new float[PollutionType.values().length];
|
||||
|
||||
public static PollutionData fromNBT(NBTTagCompound nbt) {
|
||||
PollutionData data = new PollutionData();
|
||||
|
||||
for(int i = 0; i < PollutionType.values().length; i++) {
|
||||
data.pollution[i] = nbt.getFloat(PollutionType.values()[i].name().toLowerCase(Locale.US));
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
public void toNBT(NBTTagCompound nbt) {
|
||||
for(int i = 0; i < PollutionType.values().length; i++) {
|
||||
nbt.setFloat(PollutionType.values()[i].name().toLowerCase(Locale.US), pollution[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static enum PollutionType {
|
||||
SOOT, POISON, HEAVYMETAL, FALLOUT;
|
||||
}
|
||||
|
||||
///////////////////
|
||||
/// MOB EFFECTS ///
|
||||
///////////////////
|
||||
|
||||
|
||||
@SubscribeEvent
|
||||
public void decorateMob(LivingSpawnEvent event) {
|
||||
|
||||
World world = event.world;
|
||||
if(world.isRemote) return;
|
||||
EntityLivingBase living = event.entityLiving;
|
||||
|
||||
PollutionData data = getPollutionData(world, (int) Math.floor(event.x), (int) Math.floor(event.y), (int) Math.floor(event.z));
|
||||
if(data == null) return;
|
||||
|
||||
if(living instanceof IMob) {
|
||||
|
||||
if(data.pollution[PollutionType.SOOT.ordinal()] > 15) {
|
||||
if(living.getEntityAttribute(SharedMonsterAttributes.maxHealth) != null) living.getEntityAttribute(SharedMonsterAttributes.maxHealth).applyModifier(new AttributeModifier("Soot Anger Health Increase", 2D, 1));
|
||||
if(living.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null) living.getEntityAttribute(SharedMonsterAttributes.attackDamage).applyModifier(new AttributeModifier("Soot Anger Damage Increase", 1.5D, 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,6 @@ import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.hazard.modifier.HazardModifier;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -33,7 +32,7 @@ public class HazardTypeHydroactive extends HazardTypeBase {
|
||||
if(RadiationConfig.disableHydro)
|
||||
return;
|
||||
|
||||
if(item.worldObj.getBlock((int)Math.floor(item.posX), (int)Math.floor(item.posY), (int)Math.floor(item.posZ)).getMaterial() == Material.water) {
|
||||
if(item.isWet()) {
|
||||
item.setDead();
|
||||
item.worldObj.newExplosion(null, item.posX, item.posY + item.height * 0.5, item.posZ, level, false, true);
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ public class FluidContainerRegistry {
|
||||
|
||||
public static void register() {
|
||||
FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.water_bucket), new ItemStack(Items.bucket), Fluids.WATER, 1000));
|
||||
FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.potionitem), new ItemStack(Items.glass_bottle), Fluids.WATER, 250));
|
||||
FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.lava_bucket), new ItemStack(Items.bucket), Fluids.LAVA, 1000));
|
||||
FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket), Fluids.WATZ, 1000));
|
||||
FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket), Fluids.SCHRABIDIC, 1000));
|
||||
|
||||
@ -209,6 +209,7 @@ public class OreDictManager {
|
||||
public static final DictFrame LIGCOKE = new DictFrame("LigniteCoke");
|
||||
public static final DictFrame CINNABAR = new DictFrame("Cinnabar");
|
||||
public static final DictFrame BORAX = new DictFrame("Borax");
|
||||
public static final DictFrame CHLOROCALCITE = new DictFrame("Chlorocalcite");
|
||||
public static final DictFrame VOLCANIC = new DictFrame("Volcanic");
|
||||
public static final DictFrame HEMATITE = new DictFrame("Hematite");
|
||||
public static final DictFrame MALACHITE = new DictFrame("Malachite");
|
||||
@ -345,13 +346,13 @@ public class OreDictManager {
|
||||
W .ingot(ingot_tungsten) .dust(powder_tungsten) .block(block_tungsten) .ore(ore_tungsten, ore_nether_tungsten, ore_meteor_tungsten) .oreNether(ore_nether_tungsten);
|
||||
AL .ingot(ingot_aluminium) .dust(powder_aluminium) .plate(plate_aluminium) .block(block_aluminium) .ore(ore_aluminium, ore_meteor_aluminium);
|
||||
STEEL .ingot(ingot_steel) .dustSmall(powder_steel_tiny) .dust(powder_steel) .plate(plate_steel) .block(block_steel);
|
||||
TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy);
|
||||
CDALLOY .ingot(ingot_cdalloy);
|
||||
TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy);
|
||||
CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy);
|
||||
PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead);
|
||||
BI .nugget(nugget_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth);
|
||||
AS .nugget(nugget_arsenic) .ingot(ingot_arsenic);
|
||||
CA .ingot(ingot_calcium) .dust(powder_calcium);
|
||||
CD .ingot(ingot_cadmium) .dust(powder_cadmium);
|
||||
CD .ingot(ingot_cadmium) .dust(powder_cadmium) .block(block_cadmium);
|
||||
TA .nugget(nugget_tantalium) .gem(gem_tantalium) .ingot(ingot_tantalium) .dust(powder_tantalium) .block(block_tantalium);
|
||||
COLTAN .ingot(fragment_coltan) .dust(powder_coltan_ore) .block(block_coltan) .ore(ore_coltan);
|
||||
NB .nugget(fragment_niobium) .ingot(ingot_niobium) .dustSmall(powder_niobium_tiny) .dust(powder_niobium) .block(block_niobium);
|
||||
@ -390,6 +391,7 @@ public class OreDictManager {
|
||||
LIGCOKE .gem(fromOne(coke, EnumCokeType.LIGNITE)) .block(fromOne(block_coke, EnumCokeType.LIGNITE));
|
||||
CINNABAR .crystal(cinnebar) .gem(cinnebar) .ore(ore_cinnebar, ore_depth_cinnebar);
|
||||
BORAX .dust(powder_borax) .ore(ore_depth_borax);
|
||||
CHLOROCALCITE .dust(powder_chlorocalcite);
|
||||
VOLCANIC .gem(gem_volcanic) .ore(basalt_gem);
|
||||
HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE));
|
||||
MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE));
|
||||
|
||||
@ -169,7 +169,6 @@ public class RecipesCommon {
|
||||
String[] entries = new String[ids.length];
|
||||
|
||||
for(int i = 0; i < ids.length; i++) {
|
||||
|
||||
entries[i] = OreDictionary.getOreName(ids[i]);
|
||||
}
|
||||
|
||||
|
||||
@ -1,14 +1,10 @@
|
||||
package com.hbm.inventory;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.AchievementHandler;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class SlotCraftingOutput extends Slot {
|
||||
|
||||
@ -254,7 +254,7 @@ public class Fluids {
|
||||
SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFFFFFF, 0x131313)).addTraits(GASEOUS);
|
||||
OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS);
|
||||
RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F));
|
||||
CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25), new FT_Poison(true, 1));
|
||||
CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25));
|
||||
HEAVYOIL_VACUUM = new FluidType("HEAVYOIL_VACUUM", 0x131214, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0x513F39));
|
||||
REFORMATE = new FluidType("REFORMATE", 0x835472, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0xD180D6));
|
||||
LIGHTOIL_VACUUM = new FluidType("LIGHTOIL_VACUUM", 0x8C8851, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xB46B52));
|
||||
|
||||
@ -116,6 +116,8 @@ public class FT_Toxin extends FluidTrait {
|
||||
@Override
|
||||
public void poison(EntityLivingBase entity, double intensity) {
|
||||
|
||||
if(isProtected(entity)) return;
|
||||
|
||||
for(PotionEffect eff : effects) {
|
||||
entity.addPotionEffect(new PotionEffect(eff.getPotionID(), (int) (eff.getDuration() * intensity), eff.getAmplifier()));
|
||||
}
|
||||
|
||||
@ -9,7 +9,6 @@ import com.hbm.inventory.container.ContainerMixer;
|
||||
import com.hbm.inventory.recipes.MixerRecipes;
|
||||
import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.packet.AuxButtonPacket;
|
||||
import com.hbm.packet.NBTControlPacket;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineMixer;
|
||||
|
||||
@ -99,7 +99,7 @@ public class Mats {
|
||||
public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK);
|
||||
public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK);
|
||||
public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, df("Bismuth"), 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT);
|
||||
public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK);
|
||||
@ -107,6 +107,7 @@ public class Mats {
|
||||
public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK);
|
||||
public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST);
|
||||
public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE);
|
||||
|
||||
//Alloys
|
||||
public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK);
|
||||
|
||||
@ -985,6 +985,15 @@ public class AssemblerRecipes {
|
||||
new ComparableStack(ModItems.motor, 1),
|
||||
new ComparableStack(ModItems.circuit_red_copper, 3)
|
||||
}, 200);
|
||||
|
||||
makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[]
|
||||
{
|
||||
new OreDictStack(NB.ingot(), 4),
|
||||
new ComparableStack(ModItems.redcoil_capacitor, 1),
|
||||
new ComparableStack(ModItems.ingot_euphemium, 4),
|
||||
new ComparableStack(ModItems.circuit_tantalium, 6),
|
||||
new ComparableStack(ModItems.powder_nitan_mix, 18),
|
||||
}, 600);
|
||||
|
||||
makeRecipe(new ComparableStack(ModBlocks.block_cap_nuka, 1), new AStack[] { new ComparableStack(ModItems.cap_nuka, 128) }, 10);
|
||||
makeRecipe(new ComparableStack(ModBlocks.block_cap_quantum, 1), new AStack[] { new ComparableStack(ModItems.cap_quantum, 128) }, 10);
|
||||
|
||||
@ -114,6 +114,16 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
new FluidStack(Fluids.XYLENE, 500),
|
||||
new FluidStack(Fluids.OXYGEN, 100))
|
||||
.outputItems(new ItemStack(ModItems.ingot_pet)));*/
|
||||
|
||||
//Laminate Glass going here
|
||||
recipes.add(new ChemRecipe(97, "LAMINATE", 100)
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.XYLENE, 250),
|
||||
new FluidStack(Fluids.PHOSGENE, 250))
|
||||
.inputItems(
|
||||
new ComparableStack(com.hbm.blocks.ModBlocks.reinforced_glass),
|
||||
new ComparableStack(com.hbm.items.ModItems.bolt_tungsten, 4))
|
||||
.outputItems(new ItemStack(com.hbm.blocks.ModBlocks.reinforced_laminate)));
|
||||
recipes.add(new ChemRecipe(94, "PC", 100)
|
||||
.inputFluids(
|
||||
new FluidStack(Fluids.XYLENE, 500),
|
||||
@ -370,6 +380,24 @@ public class ChemplantRecipes extends SerializableRecipe {
|
||||
.inputItems(new OreDictStack(DIAMOND.dust(), 1))
|
||||
.inputFluids(new FluidStack(Fluids.XPJUICE, 500))
|
||||
.outputFluids(new FluidStack(Fluids.ENDERJUICE, 100)));
|
||||
recipes.add(new ChemRecipe(98, "SHELL_CHLORINE", 100)
|
||||
.inputItems(
|
||||
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
||||
.inputFluids(new FluidStack(Fluids.CHLORINE, 4000))
|
||||
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 9)));
|
||||
recipes.add(new ChemRecipe(99, "SHELL_PHOSGENE", 100)
|
||||
.inputItems(
|
||||
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
||||
.inputFluids(new FluidStack(Fluids.PHOSGENE, 4000))
|
||||
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 10)));
|
||||
recipes.add(new ChemRecipe(100, "SHELL_MUSTARD", 100)
|
||||
.inputItems(
|
||||
new ComparableStack(ModItems.ammo_arty, 1, 0),
|
||||
new OreDictStack(ANY_PLASTIC.ingot(), 1))
|
||||
.inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4000))
|
||||
.outputItems(new ItemStack(ModItems.ammo_arty, 1, 11)));
|
||||
}
|
||||
|
||||
public static void registerFuelProcessing() {
|
||||
|
||||
@ -42,8 +42,9 @@ public class CombinationRecipes extends SerializableRecipe {
|
||||
recipes.put(LIGNITE.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50)));
|
||||
recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50)));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100)));
|
||||
|
||||
|
||||
recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100)));
|
||||
recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250)));
|
||||
recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 50)));
|
||||
recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250)));
|
||||
|
||||
|
||||
@ -80,13 +80,12 @@ public class LiquefactionRecipes extends SerializableRecipe {
|
||||
if(recipes.containsKey(comp))
|
||||
return recipes.get(comp);
|
||||
|
||||
String[] dictKeys = comp.getDictKeys();
|
||||
comp = new ComparableStack(stack.getItem(), 1, OreDictionary.WILDCARD_VALUE);
|
||||
|
||||
if(recipes.containsKey(comp))
|
||||
return recipes.get(comp);
|
||||
|
||||
String[] dictKeys = comp.getDictKeys();
|
||||
|
||||
for(String key : dictKeys) {
|
||||
|
||||
if(recipes.containsKey(key))
|
||||
|
||||
@ -513,6 +513,7 @@ public class ModItems {
|
||||
public static Item powder_paleogenite_tiny;
|
||||
public static Item powder_impure_osmiridium;
|
||||
public static Item powder_borax;
|
||||
public static Item powder_chlorocalcite;
|
||||
|
||||
public static Item powder_lanthanium;
|
||||
public static Item powder_actinium;
|
||||
@ -552,6 +553,7 @@ public class ModItems {
|
||||
public static Item tank_steel;
|
||||
public static Item motor;
|
||||
public static Item motor_desh;
|
||||
public static Item motor_bismuth;
|
||||
public static Item centrifuge_element;
|
||||
//public static Item centrifuge_tower;
|
||||
public static Item reactor_core;
|
||||
@ -1247,6 +1249,7 @@ public class ModItems {
|
||||
public static Item dosimeter;
|
||||
public static Item geiger_counter;
|
||||
public static Item digamma_diagnostic;
|
||||
public static Item pollution_detector;
|
||||
public static Item survey_scanner;
|
||||
public static Item mirror_tool;
|
||||
public static Item rbmk_tool;
|
||||
@ -1796,6 +1799,7 @@ public class ModItems {
|
||||
public static Item energy_core;
|
||||
public static Item fuse;
|
||||
public static Item redcoil_capacitor;
|
||||
public static Item euphemium_capacitor;
|
||||
public static Item titanium_filter;
|
||||
//by using these in crafting table recipes, i'm running the risk of making my recipes too greg-ian (which i don't like)
|
||||
//in the event that i forget about the meaning of the word "sparingly", please throw a brick at my head
|
||||
@ -2906,6 +2910,7 @@ public class ModItems {
|
||||
powder_paleogenite_tiny = new Item().setUnlocalizedName("powder_paleogenite_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_paleogenite_tiny");
|
||||
powder_impure_osmiridium = new Item().setUnlocalizedName("powder_impure_osmiridium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_impure_osmiridium");
|
||||
powder_borax = new Item().setUnlocalizedName("powder_borax").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_borax");
|
||||
powder_chlorocalcite = new Item().setUnlocalizedName("powder_chlorocalcite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_chlorocalcite");
|
||||
|
||||
fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium");
|
||||
fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt");
|
||||
@ -2928,6 +2933,7 @@ public class ModItems {
|
||||
tank_steel = new Item().setUnlocalizedName("tank_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":tank_steel");
|
||||
motor = new Item().setUnlocalizedName("motor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor");
|
||||
motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh");
|
||||
motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth");
|
||||
centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element");
|
||||
//centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower");
|
||||
reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core");
|
||||
@ -4405,6 +4411,7 @@ public class ModItems {
|
||||
energy_core = new ItemBattery(10000000, 0, 1000).setUnlocalizedName("energy_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":energy_core");
|
||||
fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse");
|
||||
redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor");
|
||||
euphemium_capacitor = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("euphemium_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor_euphemium");
|
||||
titanium_filter = new ItemCapacitor(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter");
|
||||
screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver");
|
||||
screwdriver_desh = new ItemTooling(ToolType.SCREWDRIVER, 0).setUnlocalizedName("screwdriver_desh");
|
||||
@ -4571,6 +4578,7 @@ public class ModItems {
|
||||
dosimeter = new ItemDosimeter().setUnlocalizedName("dosimeter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":dosimeter");
|
||||
geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter");
|
||||
digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic");
|
||||
pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector");
|
||||
survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner");
|
||||
mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool");
|
||||
rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool");
|
||||
@ -5714,6 +5722,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(powder_paleogenite_tiny, powder_paleogenite_tiny.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_impure_osmiridium, powder_impure_osmiridium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_borax, powder_borax.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_chlorocalcite, powder_chlorocalcite.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_yellowcake, powder_yellowcake.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName());
|
||||
GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName());
|
||||
@ -5985,6 +5994,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(tank_steel, tank_steel.getUnlocalizedName());
|
||||
GameRegistry.registerItem(motor, motor.getUnlocalizedName());
|
||||
GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName());
|
||||
GameRegistry.registerItem(motor_bismuth, motor_bismuth.getUnlocalizedName());
|
||||
GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName());
|
||||
//GameRegistry.registerItem(centrifuge_tower, centrifuge_tower.getUnlocalizedName());
|
||||
//GameRegistry.registerItem(magnet_dee, magnet_dee.getUnlocalizedName());
|
||||
@ -6429,6 +6439,7 @@ public class ModItems {
|
||||
//Machine Items
|
||||
GameRegistry.registerItem(fuse, fuse.getUnlocalizedName());
|
||||
GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName());
|
||||
GameRegistry.registerItem(euphemium_capacitor, euphemium_capacitor.getUnlocalizedName());
|
||||
GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName());
|
||||
GameRegistry.registerItem(screwdriver, screwdriver.getUnlocalizedName());
|
||||
GameRegistry.registerItem(screwdriver_desh, screwdriver_desh.getUnlocalizedName());
|
||||
@ -6719,6 +6730,7 @@ public class ModItems {
|
||||
GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName());
|
||||
GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName());
|
||||
GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName());
|
||||
GameRegistry.registerItem(pollution_detector, pollution_detector.getUnlocalizedName());
|
||||
GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName());
|
||||
|
||||
//Keys and Locks
|
||||
@ -8101,10 +8113,6 @@ public class ModItems {
|
||||
addRemap("gas_lpg", gas_full, Fluids.LPG.getID());
|
||||
}
|
||||
|
||||
public static void addRemap(String unloc, int removoingTheseWouldTakeForever, Item item, Enum sub) {
|
||||
addRemap(unloc, item, sub.ordinal());
|
||||
}
|
||||
|
||||
public static void addRemap(String unloc, Item item, Enum sub) {
|
||||
addRemap(unloc, item, sub.ordinal());
|
||||
}
|
||||
|
||||
34
src/main/java/com/hbm/items/block/ItemBlockRemap.java
Normal file
34
src/main/java/com/hbm/items/block/ItemBlockRemap.java
Normal file
@ -0,0 +1,34 @@
|
||||
package com.hbm.items.block;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.BlockRemap;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemBlockRemap extends ItemBlockBase {
|
||||
|
||||
public ItemBlockRemap(Block block) {
|
||||
super(block);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) {
|
||||
|
||||
if(!(entity instanceof EntityPlayer) || !(this.field_150939_a instanceof BlockRemap)) return;
|
||||
|
||||
EntityPlayer player = (EntityPlayer) entity;
|
||||
BlockRemap remap = (BlockRemap) this.field_150939_a;
|
||||
player.inventory.setInventorySlotContents(slot, new ItemStack(remap.remapBlock, stack.stackSize, remap.remapMeta));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add(EnumChatFormatting.RED + "Compatibility item, hold in inventory to convert!");
|
||||
}
|
||||
}
|
||||
@ -84,17 +84,18 @@ public class ItemBedrockOre extends ItemEnumMulti {
|
||||
*/
|
||||
|
||||
public static enum EnumBedrockOre {
|
||||
//Ore Byproduct 1, 2, 3
|
||||
IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite
|
||||
COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur
|
||||
BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium?
|
||||
ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess?
|
||||
NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite
|
||||
TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium
|
||||
TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten
|
||||
GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH), //occurs with copper, lead and rare bismuthide
|
||||
URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products
|
||||
THORIUM("Thorium", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM); //thorium occours with uraninite and decay products
|
||||
//Ore Byproduct 1, 2, 3
|
||||
IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite
|
||||
COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur
|
||||
BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium?
|
||||
ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess?
|
||||
NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite
|
||||
TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium
|
||||
TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten
|
||||
GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH), //occurs with copper, lead and rare bismuthide
|
||||
URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products
|
||||
THORIUM("Thorium", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products
|
||||
CHLOROCALCITE("Chlorocalcite", 0xCDE036, B_LITHIUM, B_SILICON, B_SILICON); //i guess?
|
||||
|
||||
public String oreName;
|
||||
public int color;
|
||||
|
||||
@ -3,6 +3,8 @@ package com.hbm.items.special;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.rail.IRailNTM;
|
||||
import com.hbm.blocks.rail.IRailNTM.MoveContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailCheckType;
|
||||
import com.hbm.entity.train.EntityRailCarBase;
|
||||
import com.hbm.entity.train.TrainCargoTram;
|
||||
import com.hbm.entity.train.TrainCargoTramTrailer;
|
||||
@ -76,12 +78,12 @@ public class ItemTrain extends ItemEnumMulti {
|
||||
if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) {
|
||||
if(!world.isRemote) {
|
||||
train.setPosition(x + fx, y + fy, z + fz);
|
||||
BlockPos anchor = train.getCurentAnchorPos();
|
||||
BlockPos anchor = train.getCurrentAnchorPos();
|
||||
train.rotationYaw = entity.rotationYaw;
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, 0);
|
||||
Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE));
|
||||
train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord);
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan());
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan());
|
||||
Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT));
|
||||
Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK));
|
||||
train.rotationYaw = train.generateYaw(frontPos, backPos);
|
||||
world.spawnEntityInWorld(train);
|
||||
}
|
||||
|
||||
32
src/main/java/com/hbm/items/tool/ItemPollutionDetector.java
Normal file
32
src/main/java/com/hbm/items/tool/ItemPollutionDetector.java
Normal file
@ -0,0 +1,32 @@
|
||||
package com.hbm.items.tool;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionData;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
import com.hbm.packet.PlayerInformPacket;
|
||||
import com.hbm.util.ChatBuilder;
|
||||
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemPollutionDetector extends Item {
|
||||
|
||||
@Override
|
||||
public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) {
|
||||
|
||||
if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 10 != 0) return;
|
||||
|
||||
PollutionData data = PollutionHandler.getPollutionData(world, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ));
|
||||
if(data == null) data = new PollutionData();
|
||||
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + data.pollution[PollutionType.SOOT.ordinal()]).color(EnumChatFormatting.RED).flush(), 100), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + data.pollution[PollutionType.POISON.ordinal()]).color(EnumChatFormatting.RED).flush(), 101), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + data.pollution[PollutionType.HEAVYMETAL.ordinal()]).color(EnumChatFormatting.RED).flush(), 102), (EntityPlayerMP) entity);
|
||||
PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + data.pollution[PollutionType.FALLOUT.ordinal()]).color(EnumChatFormatting.RED).flush(), 103), (EntityPlayerMP) entity);
|
||||
}
|
||||
}
|
||||
@ -2,6 +2,8 @@ package com.hbm.items.tool;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.lib.Library;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
@ -30,6 +32,8 @@ public class ItemWandD extends Item {
|
||||
vnt.setSFX(new ExplosionEffectStandard());
|
||||
vnt.explode();*/
|
||||
|
||||
PollutionHandler.incrementPollution(world, pos.blockX, pos.blockY, pos.blockZ, PollutionType.SOOT, 15);
|
||||
|
||||
/*TimeAnalyzer.startCount("setBlock");
|
||||
world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt);
|
||||
TimeAnalyzer.startEndCount("getBlock");
|
||||
|
||||
@ -3,7 +3,9 @@ package com.hbm.items.weapon;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.BombConfig;
|
||||
import com.hbm.entity.effect.EntityMist;
|
||||
import com.hbm.entity.effect.EntityNukeCloudSmall;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.entity.projectile.EntityArtilleryShell;
|
||||
@ -12,10 +14,12 @@ import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.BlockMutatorDebris;
|
||||
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.EntityProcessorCross;
|
||||
import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
|
||||
import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
@ -46,8 +50,7 @@ import net.minecraft.util.MovingObjectPosition.MovingObjectType;
|
||||
public class ItemAmmoArty extends Item {
|
||||
|
||||
public static Random rand = new Random();
|
||||
public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 9 /* <<< */ ];
|
||||
//public static ArtilleryShell[] shellTypes = new ArtilleryShell[ /* >>> */ 8 /* <<< */ ];
|
||||
public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 12 /* <<< */ ];
|
||||
/* item types */
|
||||
public final int NORMAL = 0;
|
||||
public final int CLASSIC = 1;
|
||||
@ -58,6 +61,9 @@ public class ItemAmmoArty extends Item {
|
||||
public final int MINI_NUKE_MULTI = 6;
|
||||
public final int PHOSPHORUS_MULTI = 7;
|
||||
public final int CARGO = 8;
|
||||
public final int CHLORINE = 9;
|
||||
public final int PHOSGENE = 10;
|
||||
public final int MUSTARD = 11;
|
||||
/* non-item shell types */
|
||||
|
||||
public ItemAmmoArty() {
|
||||
@ -78,6 +84,9 @@ public class ItemAmmoArty extends Item {
|
||||
list.add(new ItemStack(item, 1, MINI_NUKE_MULTI));
|
||||
list.add(new ItemStack(item, 1, NUKE));
|
||||
list.add(new ItemStack(item, 1, CARGO));
|
||||
list.add(new ItemStack(item, 1, CHLORINE));
|
||||
list.add(new ItemStack(item, 1, PHOSGENE));
|
||||
list.add(new ItemStack(item, 1, MUSTARD));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -195,7 +204,7 @@ public class ItemAmmoArty extends Item {
|
||||
ExplosionVNT xnt = new ExplosionVNT(shell.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size);
|
||||
if(breaksBlocks) {
|
||||
xnt.setBlockAllocator(new BlockAllocatorStandard(48));
|
||||
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
|
||||
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(ModBlocks.block_slag, 1)));
|
||||
}
|
||||
xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(rangeMod));
|
||||
xnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
@ -298,6 +307,60 @@ public class ItemAmmoArty extends Item {
|
||||
}
|
||||
}};
|
||||
|
||||
/* GAS */
|
||||
this.itemTypes[CHLORINE] = new ArtilleryShell("ammo_arty_chlorine", SpentCasing.COLOR_CASE_16INCH) {
|
||||
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) {
|
||||
shell.killAndClear();
|
||||
Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize();
|
||||
shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false);
|
||||
EntityMist mist = new EntityMist(shell.worldObj);
|
||||
mist.setType(Fluids.CHLORINE);
|
||||
mist.setPosition(mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord - 3, mop.hitVec.zCoord - vec.zCoord);
|
||||
mist.setArea(15, 7.5F);
|
||||
shell.worldObj.spawnEntityInWorld(mist);
|
||||
}
|
||||
};
|
||||
this.itemTypes[PHOSGENE] = new ArtilleryShell("ammo_arty_phosgene", SpentCasing.COLOR_CASE_16INCH_NUKE) {
|
||||
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) {
|
||||
shell.killAndClear();
|
||||
Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize();
|
||||
shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false);
|
||||
for(int i = 0; i < 3; i++) {
|
||||
EntityMist mist = new EntityMist(shell.worldObj);
|
||||
mist.setType(Fluids.PHOSGENE);
|
||||
double x = mop.hitVec.xCoord - vec.xCoord;
|
||||
double z = mop.hitVec.zCoord - vec.zCoord;
|
||||
if(i > 0) {
|
||||
x += rand.nextGaussian() * 15;
|
||||
z += rand.nextGaussian() * 15;
|
||||
}
|
||||
mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z);
|
||||
mist.setArea(15, 10);
|
||||
shell.worldObj.spawnEntityInWorld(mist);
|
||||
}
|
||||
}
|
||||
};
|
||||
this.itemTypes[MUSTARD] = new ArtilleryShell("ammo_arty_mustard_gas", SpentCasing.COLOR_CASE_16INCH_NUKE) {
|
||||
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) {
|
||||
shell.killAndClear();
|
||||
Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize();
|
||||
shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false);
|
||||
for(int i = 0; i < 5; i++) {
|
||||
EntityMist mist = new EntityMist(shell.worldObj);
|
||||
mist.setType(Fluids.MUSTARDGAS);
|
||||
double x = mop.hitVec.xCoord - vec.xCoord;
|
||||
double z = mop.hitVec.zCoord - vec.zCoord;
|
||||
if(i > 0) {
|
||||
x += rand.nextGaussian() * 25;
|
||||
z += rand.nextGaussian() * 25;
|
||||
}
|
||||
mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z);
|
||||
mist.setArea(20, 10);
|
||||
shell.worldObj.spawnEntityInWorld(mist);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* CLUSTER SHELLS */
|
||||
this.itemTypes[PHOSPHORUS_MULTI] = new ArtilleryShell("ammo_arty_phosphorus_multi", SpentCasing.COLOR_CASE_16INCH_PHOS) {
|
||||
public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { ItemAmmoArty.this.itemTypes[PHOSPHORUS].onImpact(shell, mop); }
|
||||
|
||||
@ -2,12 +2,14 @@ package com.hbm.items.weapon;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.entity.projectile.EntityArtilleryRocket;
|
||||
import com.hbm.explosion.ExplosionChaos;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.BlockMutatorDebris;
|
||||
import com.hbm.explosion.vanillant.standard.BlockProcessorStandard;
|
||||
import com.hbm.explosion.vanillant.standard.EntityProcessorCross;
|
||||
import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard;
|
||||
@ -143,7 +145,7 @@ public class ItemAmmoHIMARS extends Item {
|
||||
ExplosionVNT xnt = new ExplosionVNT(rocket.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size);
|
||||
if(breaksBlocks) {
|
||||
xnt.setBlockAllocator(new BlockAllocatorStandard(48));
|
||||
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop());
|
||||
xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(ModBlocks.block_slag, 1)));
|
||||
}
|
||||
xnt.setEntityProcessor(new EntityProcessorCross(7.5).withRangeMod(rangeMod));
|
||||
xnt.setPlayerProcessor(new PlayerProcessorStandard());
|
||||
|
||||
@ -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 (4613)";
|
||||
public static final String VERSION = "1.0.27 BETA (4621)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -777,6 +777,7 @@ public class ClientProxy extends ServerProxy {
|
||||
RenderingRegistry.registerBlockHandler(new RenderRTTY());
|
||||
RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension());
|
||||
RenderingRegistry.registerBlockHandler(new RenderSplitter());
|
||||
RenderingRegistry.registerBlockHandler(new RenderCapacitor());
|
||||
|
||||
RenderingRegistry.registerBlockHandler(new RenderFoundryBasin());
|
||||
RenderingRegistry.registerBlockHandler(new RenderFoundryMold());
|
||||
@ -786,6 +787,9 @@ public class ClientProxy extends ServerProxy {
|
||||
|
||||
RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail());
|
||||
RenderingRegistry.registerBlockHandler(new RenderStandardRampRail());
|
||||
|
||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite));
|
||||
RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4));
|
||||
|
||||
@ -189,6 +189,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", "ITI", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', IRON.plate(), 'C', ModItems.coil_copper });
|
||||
addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper });
|
||||
addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor });
|
||||
addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() });
|
||||
//addRecipeAuto(new ItemStack(ModItems.centrifuge_element, 1), new Object[] { " T ", "WTW", "RMR", 'R', ModItems.wire_red_copper, 'T', ModItems.tank_steel, 'M', ModItems.motor, 'W', ModItems.coil_tungsten });
|
||||
//addRecipeAuto(new ItemStack(ModItems.centrifuge_tower, 1), new Object[] { "LL", "EE", "EE", 'E', ModItems.centrifuge_element, 'L', KEY_BLUE });
|
||||
//addRecipeAuto(new ItemStack(ModItems.reactor_core, 1), new Object[] { "LNL", "N N", "LNL", 'N', getReflector(), 'L', PB.plate() });
|
||||
@ -294,6 +295,7 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', ModItems.circuit_copper });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', ModItems.circuit_red_copper, 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', ModItems.circuit_gold, 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston });
|
||||
@ -433,6 +435,8 @@ public class CraftingManager {
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick, 'T', ANY_TAR.any() });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass_pane), 16), new Object[] { " ", "GGG", "GGG", 'G', ModBlocks.reinforced_glass});
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_laminate_pane), 16), new Object[] { " ", "LLL", "LLL", 'L', ModBlocks.reinforced_laminate});
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_light), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.glowstone });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_lamp_off), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.redstone_lamp });
|
||||
addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone });
|
||||
@ -763,10 +767,10 @@ public class CraftingManager {
|
||||
addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() });
|
||||
addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() });
|
||||
addRecipeAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', IRON.plate(), 'P', IRON.ingot() });
|
||||
addShapelessAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ANY_TAR.any() });
|
||||
|
||||
@ -58,6 +58,7 @@ import com.hbm.entity.logic.*;
|
||||
import com.hbm.entity.mob.siege.*;
|
||||
import com.hbm.handler.*;
|
||||
import com.hbm.handler.imc.*;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.radiation.ChunkRadiationManager;
|
||||
import com.hbm.hazard.HazardRegistry;
|
||||
import com.hbm.inventory.*;
|
||||
@ -903,6 +904,10 @@ public class MainRegistry {
|
||||
ChunkRadiationManager radiationSystem = new ChunkRadiationManager();
|
||||
MinecraftForge.EVENT_BUS.register(radiationSystem);
|
||||
FMLCommonHandler.instance().bus().register(radiationSystem);
|
||||
|
||||
PollutionHandler pollution = new PollutionHandler();
|
||||
MinecraftForge.EVENT_BUS.register(pollution);
|
||||
FMLCommonHandler.instance().bus().register(pollution);
|
||||
|
||||
if(event.getSide() == Side.CLIENT) {
|
||||
HbmKeybinds.register();
|
||||
|
||||
@ -478,11 +478,7 @@ public class ModEventHandler {
|
||||
@SubscribeEvent
|
||||
public void onLivingUpdate(LivingUpdateEvent event) {
|
||||
|
||||
ItemStack[] prevArmor = null;
|
||||
|
||||
try {
|
||||
prevArmor = (ItemStack[]) ReflectionHelper.findField(EntityLivingBase.class, "field_82180_bT", "previousEquipment").get(event.entityLiving);
|
||||
} catch(Exception e) { }
|
||||
ItemStack[] prevArmor = event.entityLiving.previousEquipment;
|
||||
|
||||
if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null
|
||||
&& (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem())
|
||||
|
||||
@ -13,6 +13,10 @@ import org.lwjgl.opengl.GL11;
|
||||
import com.hbm.blocks.ILookOverlay;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockAshes;
|
||||
import com.hbm.blocks.rail.IRailNTM;
|
||||
import com.hbm.blocks.rail.IRailNTM.MoveContext;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailCheckType;
|
||||
import com.hbm.blocks.rail.IRailNTM.RailContext;
|
||||
import com.hbm.config.GeneralConfig;
|
||||
import com.hbm.entity.effect.EntityNukeTorex;
|
||||
import com.hbm.entity.mob.EntityHunterChopper;
|
||||
@ -66,6 +70,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace;
|
||||
import com.hbm.util.I18nUtil;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
import com.hbm.util.LoggingUtil;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
import com.hbm.wiaj.GuiWorldInAJar;
|
||||
import com.hbm.wiaj.cannery.CanneryBase;
|
||||
import com.hbm.wiaj.cannery.Jars;
|
||||
@ -104,6 +109,7 @@ import net.minecraft.client.renderer.RenderHelper;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.entity.RenderPlayer;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.inventory.Slot;
|
||||
@ -171,13 +177,22 @@ public class ModEventHandlerClient {
|
||||
World world = mc.theWorld;
|
||||
MovingObjectPosition mop = mc.objectMouseOver;
|
||||
|
||||
if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK ) {
|
||||
if(mop != null) {
|
||||
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) {
|
||||
((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ);
|
||||
if(mop.typeOfHit == mop.typeOfHit.BLOCK) {
|
||||
|
||||
} else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) {
|
||||
((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ);
|
||||
if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) {
|
||||
((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ);
|
||||
|
||||
} else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) {
|
||||
((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ);
|
||||
}
|
||||
} else if(mop.typeOfHit == mop.typeOfHit.ENTITY) {
|
||||
Entity entity = mop.entityHit;
|
||||
|
||||
if(entity instanceof ILookOverlay) {
|
||||
((ILookOverlay) entity).printHook(event, world, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -249,12 +264,12 @@ public class ModEventHandlerClient {
|
||||
boolean flip = distanceToCover < 0;
|
||||
|
||||
if(it == 1) {
|
||||
Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info);
|
||||
Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE));
|
||||
if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1);
|
||||
}
|
||||
|
||||
Vec3 prev = next;
|
||||
next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info);
|
||||
next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK));
|
||||
distanceToCover = info.overshoot;
|
||||
anchor = info.pos;
|
||||
if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0);
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package com.hbm.main;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GLContext;
|
||||
|
||||
import com.hbm.blocks.ICustomBlockHighlight;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.items.armor.IArmorDisableModel;
|
||||
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
|
||||
import com.hbm.packet.PermaSyncHandler;
|
||||
@ -10,7 +12,9 @@ import com.hbm.render.model.ModelMan;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.EventPriority;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
@ -23,6 +27,8 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
||||
import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors;
|
||||
import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
|
||||
public class ModEventHandlerRenderer {
|
||||
@ -318,4 +324,56 @@ public class ModEventHandlerRenderer {
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}*/
|
||||
|
||||
float renderSoot = 0;
|
||||
|
||||
@SubscribeEvent
|
||||
public void worldTick(WorldTickEvent event) {
|
||||
|
||||
if(event.phase == event.phase.START) {
|
||||
|
||||
float step = 0.05F;
|
||||
float soot = PermaSyncHandler.pollution[PollutionType.SOOT.ordinal()];
|
||||
|
||||
if(Math.abs(renderSoot - soot) < step) {
|
||||
renderSoot = soot;
|
||||
} else if(renderSoot < soot) {
|
||||
renderSoot += step;
|
||||
} else if(renderSoot > soot) {
|
||||
renderSoot -= step;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void thickenFog(FogDensity event) {
|
||||
float soot = renderSoot - 35;
|
||||
if(soot > 0) {
|
||||
//event.density = Math.min((soot - 5) * 0.01F, 0.5F);
|
||||
float farPlaneDistance = (float) (Minecraft.getMinecraft().gameSettings.renderDistanceChunks * 16);
|
||||
float fogDist = farPlaneDistance / (1 + soot * 0.05F);
|
||||
GL11.glFogf(GL11.GL_FOG_START, 0);
|
||||
GL11.glFogf(GL11.GL_FOG_END, fogDist);
|
||||
|
||||
if(GLContext.getCapabilities().GL_NV_fog_distance) {
|
||||
GL11.glFogi(34138, 34139);
|
||||
}
|
||||
//GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP);
|
||||
//GL11.glFogf(GL11.GL_FOG_DENSITY, 2F);
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent(priority = EventPriority.LOW)
|
||||
public void tintFog(FogColors event) {
|
||||
float soot = renderSoot - 35;
|
||||
float sootColor = 0.15F;
|
||||
float sootReq = 100F;
|
||||
if(soot > 0) {
|
||||
float interp = Math.min(soot / sootReq, 1F);
|
||||
event.red = event.red * (1 - interp) + sootColor * interp;
|
||||
event.green = event.green * (1 - interp) + sootColor * interp;
|
||||
event.blue = event.blue * (1 - interp) + sootColor * interp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1331,6 +1331,10 @@ public class ResourceManager {
|
||||
public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj"));
|
||||
public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj"));
|
||||
public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj"));
|
||||
public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj"));
|
||||
public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj"));
|
||||
public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj"));
|
||||
public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj"));
|
||||
|
||||
public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj"));
|
||||
public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj"));
|
||||
|
||||
@ -5,6 +5,9 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.ImpactWorldHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionData;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.potion.HbmPotion;
|
||||
import com.hbm.saveddata.TomSaveData;
|
||||
|
||||
@ -21,6 +24,7 @@ import net.minecraft.world.World;
|
||||
public class PermaSyncHandler {
|
||||
|
||||
public static HashSet<Integer> boykissers = new HashSet();
|
||||
public static float[] pollution = new float[PollutionType.values().length];
|
||||
|
||||
public static void writePacket(ByteBuf buf, World world, EntityPlayerMP player) {
|
||||
|
||||
@ -42,6 +46,14 @@ public class PermaSyncHandler {
|
||||
buf.writeShort((short) ids.size());
|
||||
for(Integer i : ids) buf.writeInt(i);
|
||||
/// SHITTY MEMES ///
|
||||
|
||||
/// POLLUTION ///
|
||||
PollutionData pollution = PollutionHandler.getPollutionData(world, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ));
|
||||
if(pollution == null) pollution = new PollutionData();
|
||||
for(int i = 0; i < PollutionType.values().length; i++) {
|
||||
buf.writeFloat(pollution.pollution[i]);
|
||||
}
|
||||
/// POLLUTION ///
|
||||
}
|
||||
|
||||
public static void readPacket(ByteBuf buf, World world, EntityPlayer player) {
|
||||
@ -58,5 +70,11 @@ public class PermaSyncHandler {
|
||||
int ids = buf.readShort();
|
||||
for(int i = 0; i < ids; i++) boykissers.add(buf.readInt());
|
||||
/// SHITTY MEMES ///
|
||||
|
||||
/// POLLUTION ///
|
||||
for(int i = 0; i < PollutionType.values().length; i++) {
|
||||
pollution[i] = buf.readFloat();
|
||||
}
|
||||
/// POLLUTION ///
|
||||
}
|
||||
}
|
||||
|
||||
89
src/main/java/com/hbm/render/block/RenderCapacitor.java
Normal file
89
src/main/java/com/hbm/render/block/RenderCapacitor.java
Normal file
@ -0,0 +1,89 @@
|
||||
package com.hbm.render.block;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.machine.MachineCapacitor;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
|
||||
public class RenderCapacitor implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
MachineCapacitor capacitor = (MachineCapacitor) block;
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, 0, false);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
MachineCapacitor capacitor = (MachineCapacitor) block;
|
||||
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
float flip = 0;
|
||||
float rotation = 0;
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
|
||||
if(meta == 0)
|
||||
flip = (float)Math.PI;
|
||||
|
||||
if(meta == 2)
|
||||
rotation = 90F / 180F * (float) Math.PI;
|
||||
|
||||
if(meta == 3)
|
||||
rotation = 270F / 180F * (float) Math.PI;
|
||||
|
||||
if(meta == 4)
|
||||
rotation = 180F / 180F * (float)Math.PI;
|
||||
|
||||
if(rotation != 0F || meta == 5)
|
||||
flip = (float)Math.PI * 0.5F;
|
||||
|
||||
tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F);
|
||||
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, rotation, flip, true);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, rotation, flip, true);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, rotation, flip, true);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, rotation, flip, true);
|
||||
ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, rotation, flip, true);
|
||||
|
||||
tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId() {
|
||||
return MachineCapacitor.renderID;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,70 @@
|
||||
package com.hbm.render.block;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.rail.RailStandardCurve;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
|
||||
public class RenderStandardCurveRail implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
GL11.glScaled(0.2, 0.2, 0.2);
|
||||
GL11.glTranslated(2.5, -0.0625, -1.5);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 12) return true;
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
float rotation = 0;
|
||||
|
||||
if(meta == 15)
|
||||
rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12)
|
||||
rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14)
|
||||
rotation = 270F / 180F * (float) Math.PI;
|
||||
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId() {
|
||||
return RailStandardCurve.renderID;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,80 @@
|
||||
package com.hbm.render.block;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.rail.RailStandardRamp;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
|
||||
public class RenderStandardRampRail implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
GL11.glTranslated(0, -0.0625, 0);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glScaled(0.3, 0.3, 0.3);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 12) return true;
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
float rotation = 0;
|
||||
|
||||
if(meta == 15)
|
||||
rotation = 90F / 180F * (float) Math.PI;
|
||||
if(meta == 12)
|
||||
rotation = 180F / 180F * (float) Math.PI;
|
||||
if(meta == 14)
|
||||
rotation = 270F / 180F * (float) Math.PI;
|
||||
|
||||
if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F);
|
||||
if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F);
|
||||
if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F);
|
||||
if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F);
|
||||
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
|
||||
if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F);
|
||||
if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F);
|
||||
if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F);
|
||||
if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId() {
|
||||
return RailStandardRamp.renderID;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,75 @@
|
||||
package com.hbm.render.block;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.rail.RailStandardStraight;
|
||||
import com.hbm.main.ResourceManager;
|
||||
import com.hbm.render.util.ObjUtil;
|
||||
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.client.model.obj.WavefrontObject;
|
||||
|
||||
public class RenderStandardStraightRail implements ISimpleBlockRenderingHandler {
|
||||
|
||||
@Override
|
||||
public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
GL11.glTranslated(0, -0.0625, 0);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
GL11.glScaled(0.3, 0.3, 0.3);
|
||||
tessellator.startDrawingQuads();
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, 0, false);
|
||||
tessellator.draw();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) {
|
||||
|
||||
int meta = world.getBlockMetadata(x, y, z);
|
||||
if(meta < 12) return true;
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
|
||||
tessellator.setColorOpaque_F(1, 1, 1);
|
||||
|
||||
float rotation = 0;
|
||||
|
||||
if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI;
|
||||
|
||||
if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F);
|
||||
if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F);
|
||||
if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F);
|
||||
if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F);
|
||||
|
||||
tessellator.addTranslation(x + 0.5F, y, z + 0.5F);
|
||||
ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, rotation, true);
|
||||
tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F);
|
||||
|
||||
if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F);
|
||||
if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F);
|
||||
if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F);
|
||||
if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldRender3DInInventory(int modelId) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRenderId() {
|
||||
return RailStandardStraight.renderID;
|
||||
}
|
||||
}
|
||||
@ -2,10 +2,15 @@ package com.hbm.render.entity.item;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderItem;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.item.EntityItem;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class RenderTrainCargoTramTrailer extends Render {
|
||||
@ -31,6 +36,76 @@ public class RenderTrainCargoTramTrailer extends Render {
|
||||
ResourceManager.train_cargo_tram_trailer.renderAll();
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
|
||||
int slots = entity.getDataWatcher().getWatchableObjectInt(10);
|
||||
|
||||
if(slots > 0) {
|
||||
|
||||
EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, new ItemStack(ModBlocks.crate));
|
||||
dummy.hoverStart = 0.0F;
|
||||
|
||||
RenderItem.renderInFrame = true;
|
||||
double scale = 2;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
|
||||
if(slots <= 5) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
} else if(slots <= 10) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.25D, 0.0F, 0.0F);
|
||||
} else if(slots <= 15) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.375D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.375D, 0.0F, 0.0F);
|
||||
} else if(slots <= 20) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F);
|
||||
} else if(slots <= 25) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F);
|
||||
} else if(slots <= 30) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.6D, 0.0F, 0.0F);
|
||||
} else if(slots <= 35) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
} else if(slots <= 40) {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F);
|
||||
} else {
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F);
|
||||
RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.8D, 0.0F, 0.0F);
|
||||
}
|
||||
|
||||
RenderItem.renderInFrame = false;
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
@ -20,8 +20,6 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class RendererObjTester extends TileEntitySpecialRenderer {
|
||||
|
||||
|
||||
@ -7,6 +7,8 @@ import java.util.List;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.container.ContainerCrucible;
|
||||
import com.hbm.inventory.gui.GUICrucible;
|
||||
import com.hbm.inventory.material.MaterialShapes;
|
||||
@ -169,6 +171,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50));
|
||||
|
||||
}
|
||||
|
||||
PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F);
|
||||
}
|
||||
|
||||
/* pour recipe stack */
|
||||
@ -207,6 +211,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro
|
||||
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50));
|
||||
|
||||
}
|
||||
|
||||
PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F);
|
||||
}
|
||||
|
||||
/* clean up stacks */
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.machine.MachineDiFurnace;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.container.ContainerDiFurnace;
|
||||
import com.hbm.inventory.gui.GUIDiFurnace;
|
||||
import com.hbm.inventory.recipes.BlastFurnaceRecipes;
|
||||
@ -211,6 +213,8 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr
|
||||
if(fuel < 0) {
|
||||
fuel = 0;
|
||||
}
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (extension ? 3 : 1));
|
||||
|
||||
} else {
|
||||
progress = 0;
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.module.ModuleBurnTime;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
@ -74,6 +76,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem
|
||||
|
||||
if(this.heatEnergy < getMaxHeat()) {
|
||||
burnTime--;
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3);
|
||||
}
|
||||
this.wasOn = true;
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.container.ContainerFurnaceCombo;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -119,6 +121,8 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 10 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 1, this.zCoord, "hbm:weapon.flamethrowerShoot", 0.25F, 0.5F);
|
||||
}
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3);
|
||||
} else {
|
||||
this.progress = 0;
|
||||
}
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.UpgradeManager;
|
||||
import com.hbm.inventory.container.ContainerFurnaceIron;
|
||||
import com.hbm.inventory.gui.GUIFurnaceIron;
|
||||
@ -104,6 +106,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI
|
||||
this.progress = 0;
|
||||
this.markDirty();
|
||||
}
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND);
|
||||
} else {
|
||||
this.progress = 0;
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.container.ContainerFurnaceSteel;
|
||||
import com.hbm.inventory.gui.GUIFurnaceSteel;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
@ -67,6 +69,7 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU
|
||||
progress[i] += burn;
|
||||
this.heat -= burn;
|
||||
this.wasOn = true;
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 2);
|
||||
}
|
||||
|
||||
lastItems[i] = slots[i];
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.inventory.container.ContainerOilburner;
|
||||
@ -70,6 +72,8 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements
|
||||
int heat = (int)(type.getHeatEnergy() / 1000);
|
||||
|
||||
this.heatEnergy += heat * toBurn;
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * burnRate * 0.5F);
|
||||
|
||||
shouldCool = false;
|
||||
}
|
||||
|
||||
@ -3,8 +3,6 @@ package com.hbm.tileentity.machine;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidSource;
|
||||
import com.hbm.inventory.RecipesCommon.AStack;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
|
||||
@ -5,6 +5,8 @@ import java.io.IOException;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.stream.JsonWriter;
|
||||
import com.hbm.blocks.machine.MachineCoal;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
import com.hbm.inventory.FluidContainerRegistry;
|
||||
@ -290,6 +292,8 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide
|
||||
if(burnTime > 0) {
|
||||
burnTime--;
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND);
|
||||
|
||||
if(tank.getFill() > 0) {
|
||||
tank.setFill(tank.getFill() - 1);
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package com.hbm.tileentity.machine;
|
||||
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerCombustionEngine;
|
||||
import com.hbm.inventory.fluid.FluidType;
|
||||
@ -84,6 +86,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp
|
||||
this.power += toBurn * (trait.getCombustionEnergy() / 10_000D) * eff;
|
||||
fill -= toBurn;
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * setting * 0.1F);
|
||||
|
||||
if(toBurn > 0) {
|
||||
wasOn = true;
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl
|
||||
|
||||
power = Library.chargeTEFromItems(slots, 0, power, maxPower);
|
||||
|
||||
this.updateConnections();
|
||||
if(worldObj.getTotalWorldTime() % 40 == 0) this.updateConnections();
|
||||
|
||||
this.consumption = 50;
|
||||
this.maxProgress = 100;
|
||||
|
||||
@ -55,7 +55,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
return true;
|
||||
break;
|
||||
case 2:
|
||||
if (stack.getItem() == ModItems.redcoil_capacitor)
|
||||
if (stack.getItem() == ModItems.redcoil_capacitor || stack.getItem() == ModItems.euphemium_capacitor)
|
||||
return true;
|
||||
break;
|
||||
case 3:
|
||||
@ -89,7 +89,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
@Override
|
||||
public boolean canExtractItem(int i, ItemStack stack, int j) {
|
||||
|
||||
if (i == 2 && stack.getItem() != null && stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) {
|
||||
if (i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) || stack.getItem() == ModItems.euphemium_capacitor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -115,8 +115,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
|
||||
public boolean canProcess() {
|
||||
if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], OreDictManager.U.ingot()) && slots[2] != null
|
||||
&& slots[2].getItem() == ModItems.redcoil_capacitor
|
||||
&& ItemCapacitor.getDura(slots[2]) > 0
|
||||
&& (slots[2].getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(slots[2]) > 0 || slots[2].getItem() == ModItems.euphemium_capacitor)
|
||||
&& (slots[1] == null || (slots[1] != null && slots[1].getItem() == VersatileConfig.getTransmutatorItem()
|
||||
&& slots[1].stackSize < slots[1].getMaxStackSize()))) {
|
||||
return true;
|
||||
@ -146,7 +145,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
} else {
|
||||
slots[1].stackSize++;
|
||||
}
|
||||
if (slots[2] != null) {
|
||||
if (slots[2] != null && slots[2].getItem() == ModItems.redcoil_capacitor) {
|
||||
ItemCapacitor.setDura(slots[2], ItemCapacitor.getDura(slots[2]) - 1);
|
||||
}
|
||||
|
||||
@ -195,6 +194,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AudioWrapper createAudioLoop() {
|
||||
return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F);
|
||||
}
|
||||
@ -205,6 +205,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChunkUnload() {
|
||||
|
||||
if(audio != null) {
|
||||
@ -213,6 +214,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
|
||||
super.invalidate();
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
package com.hbm.tileentity.machine.oil;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.inventory.FluidStack;
|
||||
import com.hbm.inventory.container.ContainerMachineCoker;
|
||||
import com.hbm.inventory.fluid.Fluids;
|
||||
@ -98,6 +100,8 @@ public class TileEntityMachineCoker extends TileEntityMachineBase implements IFl
|
||||
tanks[0].setFill(tanks[0].getFill() - fillReq);
|
||||
}
|
||||
}
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 20);
|
||||
}
|
||||
|
||||
for(DirPos pos : getConPos()) {
|
||||
|
||||
@ -2,6 +2,8 @@ package com.hbm.tileentity.machine.oil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
@ -157,6 +159,8 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 3 == 0)
|
||||
this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", 1.5F, 0.75F);
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen
|
||||
int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3);
|
||||
|
||||
this.processTime = processTimeBase - (processTimeBase / 4) * speed;
|
||||
this.usage = (usageBase + (usageBase * speed)) / (power + 1);
|
||||
this.usage = (usageBase + (usageBase * speed)) / (power + 1);
|
||||
|
||||
if(this.canProcess())
|
||||
this.process();
|
||||
|
||||
@ -7,6 +7,8 @@ import java.util.Random;
|
||||
import com.hbm.blocks.BlockDummyable;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.handler.MultiblockHandlerXR;
|
||||
import com.hbm.handler.pollution.PollutionHandler;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.interfaces.IFluidAcceptor;
|
||||
import com.hbm.interfaces.IFluidContainer;
|
||||
@ -319,6 +321,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements
|
||||
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5);
|
||||
|
||||
this.power -= 5;
|
||||
}
|
||||
|
||||
@ -4,7 +4,6 @@ import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.util.ContaminationUtil;
|
||||
import com.hbm.util.ContaminationUtil.ContaminationType;
|
||||
import com.hbm.util.ContaminationUtil.HazardType;
|
||||
@ -12,7 +11,6 @@ import com.hbm.util.ContaminationUtil.HazardType;
|
||||
import api.hbm.block.IPileNeutronReceiver;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.Vec3;
|
||||
|
||||
@ -21,6 +21,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
|
||||
private int stack = 0;
|
||||
public boolean output = false;
|
||||
private int capacity;
|
||||
public int redstone = 0;
|
||||
|
||||
@SideOnly(Side.CLIENT) public ItemStack type;
|
||||
|
||||
@ -43,6 +44,13 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
int newRed = this.getStockpile() * 15 / this.capacity;
|
||||
|
||||
if(newRed != this.redstone) {
|
||||
this.redstone = newRed;
|
||||
this.markDirty();
|
||||
}
|
||||
|
||||
if(slots[0] != null && slots[0].getItem() == ModItems.fluid_barrel_infinite) {
|
||||
this.stack = this.getCapacity();
|
||||
}
|
||||
@ -132,6 +140,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
|
||||
this.stack = nbt.getInteger("stack");
|
||||
this.output = nbt.getBoolean("output");
|
||||
this.capacity = nbt.getInteger("capacity");
|
||||
this.redstone = nbt.getByte("redstone");
|
||||
|
||||
if(this.capacity <= 0) {
|
||||
this.capacity = 10_000;
|
||||
@ -144,6 +153,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
|
||||
nbt.setInteger("stack", stack);
|
||||
nbt.setBoolean("output", output);
|
||||
nbt.setInteger("capacity", capacity);
|
||||
nbt.setByte("redstone", (byte) redstone);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -27,6 +27,7 @@ public class BedrockOre {
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.IRON, 1), WorldConfig.bedrockIronSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.COPPER, 1), WorldConfig.bedrockCopperSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.BORAX, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockBoraxSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.CHLOROCALCITE, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockChlorocalciteSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.ASBESTOS, 2), WorldConfig.bedrockAsbestosSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiobiumSpawn);
|
||||
registerBedrockOre(new BedrockOreDefinition(EnumBedrockOre.TITANIUM, 2, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockTitaniumSpawn);
|
||||
|
||||
@ -4,11 +4,9 @@ import java.util.Random;
|
||||
|
||||
import com.hbm.blocks.BlockEnums.EnumBiomeType;
|
||||
import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.blocks.generic.BlockStalagmite;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraft.world.biome.BiomeGenBase.TempCategory;
|
||||
|
||||
@ -18,3 +18,6 @@ public net.minecraft.client.settings.KeyBinding field_151474_i # pr
|
||||
|
||||
# GuiMainMenu
|
||||
public net.minecraft.client.gui.GuiMainMenu field_73975_c # splashText
|
||||
|
||||
# EntityLivingBase
|
||||
public net.minecraft.entity.EntityLivingBase field_82180_bT # previousEquipment
|
||||
|
||||
@ -942,11 +942,14 @@ item.ammo_9mm_du.name=9mm Patrone (DU)
|
||||
item.ammo_9mm_rocket.name=9mm Rakete
|
||||
item.ammo_arty.name=16" Artilleriegranate
|
||||
item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung)
|
||||
item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas)
|
||||
item.ammo_arty_classic.name=16" Artilleriegranate (Das Factorio-Spezial)
|
||||
item.ammo_arty_he.name=16" Artilleriegranate (HE)
|
||||
item.ammo_arty_mini_nuke.name=16" Mikroatomgranate
|
||||
item.ammo_arty_mini_nuke_multi.name=16" Mehrfach-Mikroatomgranate
|
||||
item.ammo_arty_mustard_gas.name=16" Artilleriegranate (Senfgas)
|
||||
item.ammo_arty_nuke.name=16" Atomare Artilleriegranate
|
||||
item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen)
|
||||
item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate
|
||||
item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate
|
||||
item.ammo_cell.name=Energiezelle
|
||||
@ -2242,6 +2245,7 @@ item.mold_base.name=Blanke Gussform
|
||||
item.mold.name=Gussform
|
||||
item.morning_glory.name=Zaunwinde
|
||||
item.motor.name=Motor
|
||||
item.motor_bismuth.name=Bismuth-Motor
|
||||
item.motor_desh.name=Desh-Motor
|
||||
item.mp_c_1.name=Stufe 1 Zielsucher-Schaltkreis
|
||||
item.mp_c_2.name=Stufe 2 Zielsucher-Schaltkreis
|
||||
@ -2470,6 +2474,7 @@ item.oil_tar.wax.name=Chloriertes Petroleumwachs
|
||||
item.oil_tar.wood.name=Holzteer
|
||||
item.ore.asbestos=Asbest
|
||||
item.ore.borax=Borax
|
||||
item.ore.chlorocalcite=Chlorokalzit
|
||||
item.ore.copper=Kupfer
|
||||
item.ore.gold=Gold
|
||||
item.ore.iron=Eisen
|
||||
@ -2642,6 +2647,7 @@ item.powder_caesium.name=Caesiumstaub
|
||||
item.powder_calcium.name=Kalziumstaub
|
||||
item.powder_cerium.name=Cerstaub
|
||||
item.powder_cerium_tiny.name=Kleiner Haufen Cerstaub
|
||||
item.powder_chlorocalcite.name=Chlorokalzit
|
||||
item.powder_chlorophyte.name=Grünalgenstaub
|
||||
item.powder_cloud.name=Wolkenrückstände
|
||||
item.powder_co60.name=Kobalt-60-Staub
|
||||
@ -3429,6 +3435,7 @@ tile.block_beryllium.name=Berylliumblock
|
||||
tile.block_bismuth.name=Bismutblock
|
||||
tile.block_boron.name=Borblock
|
||||
tile.block_c4.name=C4-Block
|
||||
tile.block_cadmium.name=Cadmiumblock
|
||||
tile.block_cap_fritz.name=Fritz-Kola Kronkorkenblock
|
||||
tile.block_cap_korl.name=Korl Kronkorkenblock
|
||||
tile.block_cap_nuka.name=Nuka Kronkorkenblock
|
||||
@ -3437,6 +3444,7 @@ tile.block_cap_rad.name=S~Cola RAD Kronkorkenblock
|
||||
tile.block_cap_sparkle.name=S~Cola Kronkorkenblock
|
||||
tile.block_cap_star.name=Sunset Sarsaparilla Kronkorkenblock
|
||||
tile.block_cap_sunset.name=Sunset Sarsaparilla Sternkronkorkenblock
|
||||
tile.block_cdalloy.name=Cadmiumstahlblock
|
||||
tile.block_cobalt.name=Kobaltblock
|
||||
tile.block_coke.coal.name=Kohlekoksblock
|
||||
tile.block_coke.lignite.name=Braunkohlekoksblock
|
||||
@ -3504,6 +3512,7 @@ tile.block_starmetal.name=§9Sternenmetallblock§r
|
||||
tile.block_steel.name=Stahlblock
|
||||
tile.block_sulfur.name=Schwefelblock
|
||||
tile.block_tantalium.name=Tantalblock
|
||||
tile.block_tcalloy.name=Technetiumstahlblock
|
||||
tile.block_thorium.name=Thorium-232-Block
|
||||
tile.block_thorium_fuel.name=Thoriumkernbrennstoffblock
|
||||
tile.block_titanium.name=Titanblock
|
||||
|
||||
@ -1522,11 +1522,14 @@ item.ammo_9mm_du.name=9mm Round (DU)
|
||||
item.ammo_9mm_rocket.name=9mm Rocket
|
||||
item.ammo_arty.name=16" Artillery Shell
|
||||
item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell
|
||||
item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell
|
||||
item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special)
|
||||
item.ammo_arty_he.name=16" High Explosive Artillery Shell
|
||||
item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell
|
||||
item.ammo_arty_mini_nuke_multi.name=16" Multi Micro Nuclear Artillery Shell
|
||||
item.ammo_arty_mustard_gas.name=16" Mustard Gas Artillery Shell
|
||||
item.ammo_arty_nuke.name=16" Nuclear Artillery Shell
|
||||
item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell
|
||||
item.ammo_arty_phosphorus.name=16" Phosphorus Shell
|
||||
item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell
|
||||
item.ammo_cell.name=Energy Cell
|
||||
@ -2305,6 +2308,8 @@ item.energy_core.name=Makeshift Energy Core
|
||||
item.entanglement_kit.name=Entanglement Kit
|
||||
item.entanglement_kit.desc=Teleporter crafting item.$Enables dimension-shifting via a$beryllium-enhanced resource scanner.
|
||||
item.euphemium_boots.name=Euphemium Boots
|
||||
item.euphemium_capacitor.name=Euphemium Capacitor
|
||||
item.euphemium_capacitor.desc=Permits passive dispersion of accumulated positive energy.
|
||||
item.euphemium_helmet.name=Euphemium Helmet
|
||||
item.euphemium_kit.name=Euphemium Kit
|
||||
item.euphemium_legs.name=Euphemium Leggings
|
||||
@ -2913,6 +2918,7 @@ item.mold_base.name=Blank Foundry Mold
|
||||
item.mold.name=Foundry Mold
|
||||
item.morning_glory.name=Morning Glory
|
||||
item.motor.name=Motor
|
||||
item.motor_bismuth.name=Bismuth Motor
|
||||
item.motor_desh.name=Desh Motor
|
||||
item.mp_c_1.name=Tier 1 Missile Targeting Circuit
|
||||
item.mp_c_2.name=Tier 2 Missile Targeting Circuit
|
||||
@ -3149,6 +3155,7 @@ item.oil_tar.wax.name=Chlorinated Petroleum Wax
|
||||
item.oil_tar.wood.name=Wood Tar
|
||||
item.ore.asbestos=Asbestos
|
||||
item.ore.borax=Borax
|
||||
item.ore.chlorocalcite=Chlorocalcite
|
||||
item.ore.copper=Copper
|
||||
item.ore.gold=Gold
|
||||
item.ore.iron=Iron
|
||||
@ -3367,6 +3374,7 @@ item.powder_caesium.name=Caesium Powder
|
||||
item.powder_calcium.name=Calcium Powder
|
||||
item.powder_cerium.name=Cerium Powder
|
||||
item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder
|
||||
item.powder_chlorocalcite.name=Chlorocalcite
|
||||
item.powder_chlorophyte.name=Chlorophyte Powder
|
||||
item.powder_cloud.name=Cloud Residue
|
||||
item.powder_co60.name=Cobalt-60 Powder
|
||||
@ -4237,6 +4245,7 @@ tile.block_beryllium.name=Block of Beryllium
|
||||
tile.block_bismuth.name=Block of Bismuth
|
||||
tile.block_boron.name=Block of Boron
|
||||
tile.block_c4.name=Block of C-4
|
||||
tile.block_cadmium.name=Block of Cadmium
|
||||
tile.block_cap_fritz.name=Block of Fritz Cola Bottle Caps
|
||||
tile.block_cap_korl.name=Block of Korl Bottle Caps
|
||||
tile.block_cap_nuka.name=Block of Nuka Cola Bottle Caps
|
||||
@ -4245,6 +4254,7 @@ tile.block_cap_rad.name=Block of S~Cola RAD Bottle Caps
|
||||
tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps
|
||||
tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps
|
||||
tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps
|
||||
tile.block_cdalloy.name=Block of Cadmium Steel
|
||||
tile.block_cobalt.name=Block of Cobalt
|
||||
tile.block_coke.coal.name=Block of Coal Coke
|
||||
tile.block_coke.lignite.name=Block of Lignite Coke
|
||||
@ -4316,6 +4326,7 @@ tile.block_starmetal.name=§9Block of Starmetal§r
|
||||
tile.block_steel.name=Block of Steel
|
||||
tile.block_sulfur.name=Block of Sulfur
|
||||
tile.block_tantalium.name=Block of Tantalium
|
||||
tile.block_tcalloy.name=Block of Technetium Steel
|
||||
tile.block_thorium.name=Block of Thorium-232
|
||||
tile.block_thorium_fuel.name=Block of Thorium Fuel
|
||||
tile.block_titanium.name=Block of Titanium
|
||||
@ -5010,12 +5021,15 @@ tile.reinforced_brick.name=Reinforced Stone
|
||||
tile.reinforced_brick_stairs.name=Reinforced Stone Stairs
|
||||
tile.reinforced_ducrete.name=Reinforced Ducrete
|
||||
tile.reinforced_glass.name=Reinforced Glass
|
||||
tile.reinforced_glass_pane.name=Reinforced Glass Pane
|
||||
tile.reinforced_lamp_off.name=Reinforced Lamp
|
||||
tile.reinforced_lamp_on.name=Reinforced Lamp
|
||||
tile.reinforced_light.name=Reinforced Glowstone
|
||||
tile.reinforced_sand.name=Reinforced Sandstone
|
||||
tile.reinforced_stone.name=Dense Stone
|
||||
tile.reinforced_stone_stairs.name=Dense Stone Stairs
|
||||
tile.reinforced_laminate.name=Reinforced Laminate
|
||||
tile.reinforced_laminate_pane.name=Reinforced Laminate Pane
|
||||
tile.rejuvinator.name=Rejuvination Device
|
||||
tile.residue.name=Cloud Residue
|
||||
tile.safe.name=Safe
|
||||
@ -5256,4 +5270,4 @@ weapon.elecGun.glass_cannon.ir=Infrared
|
||||
weapon.elecGun.glass_cannon.visible=Visible Light
|
||||
weapon.elecGun.glass_cannon.uv=Ultraviolet Light
|
||||
weapon.elecGun.glass_cannon.xray=X-rays
|
||||
weapon.elecGun.glass_cannon.gamma=Gamma rays
|
||||
weapon.elecGun.glass_cannon.gamma=Gamma rays
|
||||
|
||||
@ -2814,6 +2814,9 @@ tile.block_smore.name=Блок с'мора
|
||||
tile.block_niobium.name=Блок ниобия
|
||||
tile.block_bakelite.name=Блок бакелита
|
||||
tile.block_rubber.name=Блок резины
|
||||
tile.block_cadmium.name=Кадмиевый блок
|
||||
tile.block_cdalloy.name=Блок кадмиевой стали
|
||||
tile.block_tcalloy.name=Блок технециевой стали
|
||||
|
||||
tile.block_ra226.name=Блок радия-226
|
||||
tile.block_u233.name=Блок урана-233
|
||||
@ -2915,6 +2918,7 @@ tile.ore_bedrock.name=Бедроковая руда
|
||||
|
||||
item.ore.asbestos=Асбестовая
|
||||
item.ore.borax=Буровая
|
||||
item.ore.chlorocalcite=Хлоркальцитовая
|
||||
item.ore.copper=Медная
|
||||
item.ore.gold=Золотая
|
||||
item.ore.iron=Железная
|
||||
@ -3015,6 +3019,9 @@ tile.plant_tall.weed.name=Конопля
|
||||
tile.stone_cracked.name=Треснутый камень
|
||||
tile.reinforced_brick.name=Усиленный камень
|
||||
tile.reinforced_glass.name=Усиленное стекло
|
||||
tile.reinforced_glass_pane.name=Усиленная стеклянная панель
|
||||
tile.reinforced_laminate.name=Усиленный ламинат
|
||||
tile.reinforced_laminate_pane.name=Усиленная ламинатная панель
|
||||
tile.reinforced_sand.name=Усиленный песчаник
|
||||
tile.reinforced_light.name=Усиленный светящийся камень
|
||||
tile.reinforced_lamp_off.name=Усиленная лампа
|
||||
@ -3256,6 +3263,7 @@ item.fallout.name=Куча радиоактивных осадков
|
||||
item.powder_zirconium.name=Циркониевый порошок
|
||||
item.powder_boron.name=Борный порошок
|
||||
item.powder_borax.name=Бура
|
||||
item.powder_chlorocalcite.name=Хлоркальцит
|
||||
item.powder_boron_tiny.name=Кучка борного порошка
|
||||
item.powder_at209.name=Порошок астата-209
|
||||
item.powder_au198.name=Порошок золота-198
|
||||
@ -3395,6 +3403,7 @@ item.tank_steel.name=Стальной бак
|
||||
tile.barrel_tcalloy.name=Бочка из технециевой стали
|
||||
item.motor.name=Мотор
|
||||
item.motor_desh.name=Деш-мотор
|
||||
item.motor_bismuth.name=Висмутовый мотор
|
||||
item.centrifuge_element.name=Элемент центрифуги
|
||||
item.centrifuge_tower.name=Башня центрифуги
|
||||
item.reactor_core.name=Активная зона реактора-размножителя
|
||||
|
||||
128
src/main/resources/assets/hbm/models/blocks/capacitor.obj
Normal file
128
src/main/resources/assets/hbm/models/blocks/capacitor.obj
Normal file
@ -0,0 +1,128 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'capacitor.blend'
|
||||
# www.blender.org
|
||||
o InnerSide
|
||||
v -0.437500 -0.250000 0.437500
|
||||
v -0.437500 -0.250000 -0.437500
|
||||
v 0.437500 -0.250000 0.437500
|
||||
v 0.437500 -0.250000 -0.437500
|
||||
v -0.437500 0.437500 0.437500
|
||||
v -0.437500 0.437500 -0.437500
|
||||
v 0.437500 0.437500 -0.437500
|
||||
v 0.437500 0.437500 0.437500
|
||||
vt 0.937500 0.250000
|
||||
vt 0.062500 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.062500 0.937500
|
||||
vt 0.937500 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 0.250000
|
||||
vt 0.062500 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.062500 0.937500
|
||||
vt 0.937500 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.937500 0.937500
|
||||
vt 0.062500 0.250000
|
||||
vt 0.937500 0.937500
|
||||
vt 0.062500 0.250000
|
||||
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
|
||||
s off
|
||||
f 3/1/1 5/2/1 1/3/1
|
||||
f 2/4/2 7/5/2 4/6/2
|
||||
f 4/7/3 8/8/3 3/9/3
|
||||
f 1/10/4 6/11/4 2/12/4
|
||||
f 3/1/1 8/13/1 5/2/1
|
||||
f 2/4/2 6/14/2 7/5/2
|
||||
f 4/7/3 7/15/3 8/8/3
|
||||
f 1/10/4 5/16/4 6/11/4
|
||||
o InnerTop
|
||||
v -0.437500 0.437500 0.437500
|
||||
v -0.437500 0.437500 -0.437500
|
||||
v 0.437500 0.437500 -0.437500
|
||||
v 0.437500 0.437500 0.437500
|
||||
vt 0.937500 0.937500
|
||||
vt 0.062500 0.062500
|
||||
vt 0.937500 0.062500
|
||||
vt 0.062500 0.937500
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s off
|
||||
f 10/17/5 12/18/5 11/19/5
|
||||
f 10/17/5 9/20/5 12/18/5
|
||||
o Side
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
s off
|
||||
f 14/21/6 15/22/6 13/23/6
|
||||
f 16/24/7 19/25/7 15/26/7
|
||||
f 20/27/8 17/28/8 19/29/8
|
||||
f 18/30/9 13/31/9 17/32/9
|
||||
f 14/21/6 16/33/6 15/22/6
|
||||
f 16/24/7 20/34/7 19/25/7
|
||||
f 20/27/8 18/35/8 17/28/8
|
||||
f 18/30/9 14/36/9 13/31/9
|
||||
o Top
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s off
|
||||
f 22/37/10 23/38/10 24/39/10
|
||||
f 22/37/10 21/40/10 23/38/10
|
||||
o Bottom
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v -0.500000 -0.250000 0.500000
|
||||
v -0.500000 -0.250000 -0.500000
|
||||
v 0.500000 -0.250000 0.500000
|
||||
v 0.500000 -0.250000 -0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s off
|
||||
f 28/41/11 25/42/11 26/43/11
|
||||
f 30/44/12 31/45/12 32/46/12
|
||||
f 28/41/11 27/47/11 25/42/11
|
||||
f 30/44/12 29/48/12 31/45/12
|
||||
757
src/main/resources/assets/hbm/models/blocks/rail_standard.obj
Normal file
757
src/main/resources/assets/hbm/models/blocks/rail_standard.obj
Normal file
@ -0,0 +1,757 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'rail_standard_straight.blend'
|
||||
# www.blender.org
|
||||
o Plane.001
|
||||
v 1.000000 0.062500 -0.187500
|
||||
v 1.000000 0.062500 0.187500
|
||||
v -1.000000 0.062500 0.187500
|
||||
v -1.000000 0.062500 -0.187500
|
||||
v -1.000000 0.000000 0.187500
|
||||
v 1.000000 0.000000 0.187500
|
||||
v -1.000000 0.000000 -0.187500
|
||||
v 1.000000 0.000000 -0.187500
|
||||
v -1.000000 0.000000 -0.812500
|
||||
v 1.000000 0.000000 -0.812500
|
||||
v -1.000000 0.000000 -1.187500
|
||||
v 1.000000 0.000000 -1.187500
|
||||
v -1.000000 0.000000 -1.812500
|
||||
v 1.000000 0.000000 -1.812500
|
||||
v -1.000000 0.000000 -2.187500
|
||||
v 1.000000 0.000000 -2.187500
|
||||
v -1.000000 0.000000 2.187500
|
||||
v 1.000000 0.000000 2.187500
|
||||
v -1.000000 0.000000 1.812500
|
||||
v 1.000000 0.000000 1.812500
|
||||
v -1.000000 0.000000 1.187500
|
||||
v 1.000000 0.000000 1.187500
|
||||
v -1.000000 0.000000 0.812500
|
||||
v 1.000000 0.000000 0.812500
|
||||
v -1.000000 0.062500 -1.187500
|
||||
v -1.000000 0.062500 -0.812500
|
||||
v 1.000000 0.062500 -0.812500
|
||||
v 1.000000 0.062500 -1.187500
|
||||
v -1.000000 0.062500 -2.187500
|
||||
v -1.000000 0.062500 -1.812500
|
||||
v 1.000000 0.062500 -1.812500
|
||||
v 1.000000 0.062500 -2.187500
|
||||
v -1.000000 0.062500 1.812500
|
||||
v -1.000000 0.062500 2.187500
|
||||
v 1.000000 0.062500 2.187500
|
||||
v 1.000000 0.062500 1.812500
|
||||
v -1.000000 0.062500 0.812500
|
||||
v -1.000000 0.062500 1.187500
|
||||
v 1.000000 0.062500 1.187500
|
||||
v 1.000000 0.062500 0.812500
|
||||
v -0.812500 0.062500 2.500000
|
||||
v 0.812500 0.062500 2.500000
|
||||
v -0.812500 0.062500 -2.500000
|
||||
v 0.812500 0.062500 -2.500000
|
||||
v -0.812500 0.187500 2.500000
|
||||
v 0.812500 0.187500 2.500000
|
||||
v -0.812500 0.187500 -2.500000
|
||||
v 0.812500 0.187500 -2.500000
|
||||
v 0.750000 0.062500 2.500000
|
||||
v 0.750000 0.062500 -2.500000
|
||||
v 0.750000 0.187500 2.500000
|
||||
v 0.750000 0.187500 -2.500000
|
||||
v -0.750000 0.062500 -2.500000
|
||||
v -0.750000 0.062500 2.500000
|
||||
v -0.750000 0.187500 -2.500000
|
||||
v -0.750000 0.187500 2.500000
|
||||
v 0.625000 0.062500 2.062500
|
||||
v 0.937500 0.062500 2.062500
|
||||
v 0.625000 0.062500 1.937500
|
||||
v 0.937500 0.062500 1.937500
|
||||
v 0.625000 0.125000 2.062500
|
||||
v 0.937500 0.125000 2.062500
|
||||
v 0.625000 0.125000 1.937500
|
||||
v 0.937500 0.125000 1.937500
|
||||
v -0.937500 0.062500 2.062500
|
||||
v -0.625000 0.062500 2.062500
|
||||
v -0.937500 0.062500 1.937500
|
||||
v -0.625000 0.062500 1.937500
|
||||
v -0.937500 0.125000 2.062500
|
||||
v -0.625000 0.125000 2.062500
|
||||
v -0.937500 0.125000 1.937500
|
||||
v -0.625000 0.125000 1.937500
|
||||
v 0.625000 0.062500 1.062500
|
||||
v 0.937500 0.062500 1.062500
|
||||
v 0.625000 0.062500 0.937500
|
||||
v 0.937500 0.062500 0.937500
|
||||
v 0.625000 0.125000 1.062500
|
||||
v 0.937500 0.125000 1.062500
|
||||
v 0.625000 0.125000 0.937500
|
||||
v 0.937500 0.125000 0.937500
|
||||
v -0.937500 0.062500 1.062500
|
||||
v -0.625000 0.062500 1.062500
|
||||
v -0.937500 0.062500 0.937500
|
||||
v -0.625000 0.062500 0.937500
|
||||
v -0.937500 0.125000 1.062500
|
||||
v -0.625000 0.125000 1.062500
|
||||
v -0.937500 0.125000 0.937500
|
||||
v -0.625000 0.125000 0.937500
|
||||
v 0.625000 0.062500 0.062500
|
||||
v 0.937500 0.062500 0.062500
|
||||
v 0.625000 0.062500 -0.062500
|
||||
v 0.937500 0.062500 -0.062500
|
||||
v 0.625000 0.125000 0.062500
|
||||
v 0.937500 0.125000 0.062500
|
||||
v 0.625000 0.125000 -0.062500
|
||||
v 0.937500 0.125000 -0.062500
|
||||
v -0.937500 0.062500 0.062500
|
||||
v -0.625000 0.062500 0.062500
|
||||
v -0.937500 0.062500 -0.062500
|
||||
v -0.625000 0.062500 -0.062500
|
||||
v -0.937500 0.125000 0.062500
|
||||
v -0.625000 0.125000 0.062500
|
||||
v -0.937500 0.125000 -0.062500
|
||||
v -0.625000 0.125000 -0.062500
|
||||
v 0.625000 0.062500 -0.937500
|
||||
v 0.937500 0.062500 -0.937500
|
||||
v 0.625000 0.062500 -1.062500
|
||||
v 0.937500 0.062500 -1.062500
|
||||
v 0.625000 0.125000 -0.937500
|
||||
v 0.937500 0.125000 -0.937500
|
||||
v 0.625000 0.125000 -1.062500
|
||||
v 0.937500 0.125000 -1.062500
|
||||
v -0.937500 0.062500 -0.937500
|
||||
v -0.625000 0.062500 -0.937500
|
||||
v -0.937500 0.062500 -1.062500
|
||||
v -0.625000 0.062500 -1.062500
|
||||
v -0.937500 0.125000 -0.937500
|
||||
v -0.625000 0.125000 -0.937500
|
||||
v -0.937500 0.125000 -1.062500
|
||||
v -0.625000 0.125000 -1.062500
|
||||
v 0.625000 0.062500 -1.937500
|
||||
v 0.937500 0.062500 -1.937500
|
||||
v 0.625000 0.062500 -2.062500
|
||||
v 0.937500 0.062500 -2.062500
|
||||
v 0.625000 0.125000 -1.937500
|
||||
v 0.937500 0.125000 -1.937500
|
||||
v 0.625000 0.125000 -2.062500
|
||||
v 0.937500 0.125000 -2.062500
|
||||
v -0.937500 0.062500 -1.937500
|
||||
v -0.625000 0.062500 -1.937500
|
||||
v -0.937500 0.062500 -2.062500
|
||||
v -0.625000 0.062500 -2.062500
|
||||
v -0.937500 0.125000 -1.937500
|
||||
v -0.625000 0.125000 -1.937500
|
||||
v -0.937500 0.125000 -2.062500
|
||||
v -0.625000 0.125000 -2.062500
|
||||
v -0.812500 0.062500 -1.500000
|
||||
v -0.812500 0.062500 -0.500000
|
||||
v -0.812500 0.062500 0.500000
|
||||
v -0.812500 0.062500 1.500000
|
||||
v 0.812500 0.062500 1.500000
|
||||
v 0.812500 0.062500 0.500000
|
||||
v 0.812500 0.062500 -0.500000
|
||||
v 0.812500 0.062500 -1.500000
|
||||
v -0.812500 0.187500 -1.500000
|
||||
v -0.812500 0.187500 -0.500000
|
||||
v -0.812500 0.187500 0.500000
|
||||
v -0.812500 0.187500 1.500000
|
||||
v 0.812500 0.187500 1.500000
|
||||
v 0.812500 0.187500 0.500000
|
||||
v 0.812500 0.187500 -0.500000
|
||||
v 0.812500 0.187500 -1.500000
|
||||
v 0.750000 0.062500 1.500000
|
||||
v 0.750000 0.062500 0.500000
|
||||
v 0.750000 0.062500 -0.500000
|
||||
v 0.750000 0.062500 -1.500000
|
||||
v 0.750000 0.187500 1.500000
|
||||
v 0.750000 0.187500 0.500000
|
||||
v 0.750000 0.187500 -0.500000
|
||||
v 0.750000 0.187500 -1.500000
|
||||
v -0.750000 0.062500 -1.500000
|
||||
v -0.750000 0.062500 -0.500000
|
||||
v -0.750000 0.062500 0.500000
|
||||
v -0.750000 0.062500 1.500000
|
||||
v -0.750000 0.187500 -1.500000
|
||||
v -0.750000 0.187500 -0.500000
|
||||
v -0.750000 0.187500 0.500000
|
||||
v -0.750000 0.187500 1.500000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.500000 0.718750
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1
|
||||
f 7/4/2 6/5/2 5/6/2
|
||||
f 11/7/2 10/8/2 9/9/2
|
||||
f 15/10/2 14/11/2 13/12/2
|
||||
f 19/13/2 18/14/2 17/15/2
|
||||
f 23/16/2 22/17/2 21/18/2
|
||||
f 27/19/1 25/20/1 26/21/1
|
||||
f 31/22/1 29/23/1 30/24/1
|
||||
f 35/25/1 33/26/1 34/27/1
|
||||
f 39/28/1 37/29/1 38/30/1
|
||||
f 17/31/3 33/32/3 19/33/3
|
||||
f 10/34/4 26/35/4 9/36/4
|
||||
f 18/37/4 34/38/4 17/39/4
|
||||
f 12/40/5 27/41/5 10/8/5
|
||||
f 20/42/5 35/43/5 18/14/5
|
||||
f 11/7/6 28/44/6 12/45/6
|
||||
f 5/46/3 4/47/3 7/48/3
|
||||
f 19/13/6 36/49/6 20/50/6
|
||||
f 13/51/3 29/52/3 15/53/3
|
||||
f 6/54/4 3/55/4 5/56/4
|
||||
f 21/57/3 37/58/3 23/59/3
|
||||
f 14/60/4 30/61/4 13/62/4
|
||||
f 8/63/5 2/64/5 6/5/5
|
||||
f 22/65/4 38/66/4 21/67/4
|
||||
f 16/68/5 31/69/5 14/11/5
|
||||
f 7/4/6 1/70/6 8/71/6
|
||||
f 24/72/5 39/73/5 22/17/5
|
||||
f 15/10/6 32/74/6 16/75/6
|
||||
f 9/76/3 25/77/3 11/78/3
|
||||
f 23/16/6 40/79/6 24/80/6
|
||||
f 149/81/5 42/82/5 141/83/5
|
||||
f 145/84/3 43/85/3 137/86/3
|
||||
f 49/87/3 157/88/3 153/89/3
|
||||
f 46/90/4 49/91/4 42/92/4
|
||||
f 48/93/1 160/94/1 152/95/1
|
||||
f 42/82/2 153/96/2 141/83/2
|
||||
f 44/97/6 52/98/6 48/99/6
|
||||
f 53/100/5 165/101/5 161/102/5
|
||||
f 45/103/1 168/104/1 148/105/1
|
||||
f 43/106/2 161/102/2 137/107/2
|
||||
f 47/108/6 53/109/6 43/110/6
|
||||
f 41/111/4 56/112/4 45/113/4
|
||||
f 61/114/3 59/115/3 57/116/3
|
||||
f 63/117/6 60/118/6 59/119/6
|
||||
f 62/120/4 57/121/4 58/122/4
|
||||
f 64/123/5 58/124/5 60/125/5
|
||||
f 61/114/1 64/123/1 63/117/1
|
||||
f 69/126/3 67/127/3 65/128/3
|
||||
f 71/129/6 68/130/6 67/131/6
|
||||
f 70/132/4 65/133/4 66/134/4
|
||||
f 72/135/5 66/136/5 68/137/5
|
||||
f 69/126/1 72/135/1 71/129/1
|
||||
f 77/138/3 75/139/3 73/140/3
|
||||
f 79/141/6 76/142/6 75/143/6
|
||||
f 78/144/4 73/145/4 74/146/4
|
||||
f 80/147/5 74/148/5 76/149/5
|
||||
f 77/138/1 80/147/1 79/141/1
|
||||
f 85/150/3 83/151/3 81/152/3
|
||||
f 87/153/6 84/154/6 83/155/6
|
||||
f 86/156/4 81/157/4 82/158/4
|
||||
f 88/159/5 82/160/5 84/161/5
|
||||
f 85/150/1 88/159/1 87/153/1
|
||||
f 93/162/3 91/163/3 89/164/3
|
||||
f 95/165/6 92/166/6 91/167/6
|
||||
f 94/168/4 89/169/4 90/170/4
|
||||
f 96/171/5 90/172/5 92/173/5
|
||||
f 93/162/1 96/171/1 95/165/1
|
||||
f 101/174/3 99/175/3 97/176/3
|
||||
f 103/177/6 100/178/6 99/179/6
|
||||
f 102/180/4 97/181/4 98/182/4
|
||||
f 104/183/5 98/184/5 100/185/5
|
||||
f 101/174/1 104/183/1 103/177/1
|
||||
f 109/186/3 107/187/3 105/188/3
|
||||
f 111/189/6 108/190/6 107/191/6
|
||||
f 110/192/4 105/193/4 106/194/4
|
||||
f 112/195/5 106/196/5 108/197/5
|
||||
f 109/186/1 112/195/1 111/189/1
|
||||
f 117/198/3 115/199/3 113/200/3
|
||||
f 119/201/6 116/202/6 115/203/6
|
||||
f 118/204/4 113/205/4 114/206/4
|
||||
f 120/207/5 114/208/5 116/209/5
|
||||
f 117/198/1 120/207/1 119/201/1
|
||||
f 125/210/3 123/211/3 121/212/3
|
||||
f 127/213/6 124/214/6 123/215/6
|
||||
f 126/216/4 121/217/4 122/218/4
|
||||
f 128/219/5 122/220/5 124/221/5
|
||||
f 125/210/1 128/219/1 127/213/1
|
||||
f 133/222/3 131/223/3 129/224/3
|
||||
f 135/225/6 132/226/6 131/227/6
|
||||
f 134/228/4 129/229/4 130/230/4
|
||||
f 136/231/5 130/232/5 132/233/5
|
||||
f 133/222/1 136/231/1 135/225/1
|
||||
f 140/234/2 54/235/2 41/236/2
|
||||
f 139/237/2 164/238/2 140/239/2
|
||||
f 138/240/2 163/241/2 139/242/2
|
||||
f 137/243/2 162/244/2 138/245/2
|
||||
f 145/84/1 55/246/1 47/247/1
|
||||
f 146/248/1 165/249/1 145/250/1
|
||||
f 147/251/1 166/252/1 146/253/1
|
||||
f 148/254/1 167/255/1 147/256/1
|
||||
f 164/257/5 56/258/5 54/235/5
|
||||
f 163/259/5 168/260/5 164/238/5
|
||||
f 162/261/5 167/262/5 163/241/5
|
||||
f 161/263/5 166/264/5 162/244/5
|
||||
f 144/265/2 50/266/2 44/267/2
|
||||
f 143/268/2 156/269/2 144/270/2
|
||||
f 142/271/2 155/272/2 143/273/2
|
||||
f 141/274/2 154/275/2 142/276/2
|
||||
f 149/81/1 51/277/1 46/278/1
|
||||
f 150/279/1 157/280/1 149/281/1
|
||||
f 151/282/1 158/283/1 150/284/1
|
||||
f 152/285/1 159/286/1 151/287/1
|
||||
f 156/288/3 52/289/3 50/290/3
|
||||
f 155/291/3 160/292/3 156/293/3
|
||||
f 154/294/3 159/295/3 155/296/3
|
||||
f 153/297/3 158/298/3 154/299/3
|
||||
f 45/103/3 140/300/3 41/301/3
|
||||
f 148/254/3 139/302/3 140/303/3
|
||||
f 147/251/3 138/304/3 139/305/3
|
||||
f 146/248/3 137/306/3 138/307/3
|
||||
f 48/93/5 144/265/5 44/267/5
|
||||
f 152/285/5 143/268/5 144/270/5
|
||||
f 151/282/5 142/271/5 143/273/5
|
||||
f 150/279/5 141/274/5 142/276/5
|
||||
f 2/1/1 1/70/1 4/2/1
|
||||
f 7/4/2 8/71/2 6/5/2
|
||||
f 11/7/2 12/45/2 10/8/2
|
||||
f 15/10/2 16/75/2 14/11/2
|
||||
f 19/13/2 20/50/2 18/14/2
|
||||
f 23/16/2 24/80/2 22/17/2
|
||||
f 27/19/1 28/44/1 25/20/1
|
||||
f 31/22/1 32/74/1 29/23/1
|
||||
f 35/25/1 36/49/1 33/26/1
|
||||
f 39/28/1 40/79/1 37/29/1
|
||||
f 17/31/3 34/308/3 33/32/3
|
||||
f 10/34/4 27/309/4 26/35/4
|
||||
f 18/37/4 35/310/4 34/38/4
|
||||
f 12/40/5 28/311/5 27/41/5
|
||||
f 20/42/5 36/312/5 35/43/5
|
||||
f 11/7/6 25/20/6 28/44/6
|
||||
f 5/46/3 3/313/3 4/47/3
|
||||
f 19/13/6 33/26/6 36/49/6
|
||||
f 13/51/3 30/314/3 29/52/3
|
||||
f 6/54/4 2/315/4 3/55/4
|
||||
f 21/57/3 38/316/3 37/58/3
|
||||
f 14/60/4 31/317/4 30/61/4
|
||||
f 8/63/5 1/318/5 2/64/5
|
||||
f 22/65/4 39/319/4 38/66/4
|
||||
f 16/68/5 32/320/5 31/69/5
|
||||
f 7/4/6 4/2/6 1/70/6
|
||||
f 24/72/5 40/321/5 39/73/5
|
||||
f 15/10/6 29/23/6 32/74/6
|
||||
f 9/76/3 26/322/3 25/77/3
|
||||
f 23/16/6 37/29/6 40/79/6
|
||||
f 149/81/5 46/278/5 42/82/5
|
||||
f 145/84/3 47/247/3 43/85/3
|
||||
f 49/87/3 51/277/3 157/88/3
|
||||
f 46/90/4 51/323/4 49/91/4
|
||||
f 48/93/1 52/289/1 160/94/1
|
||||
f 42/82/2 49/324/2 153/96/2
|
||||
f 44/97/6 50/325/6 52/98/6
|
||||
f 53/100/5 55/246/5 165/101/5
|
||||
f 45/103/1 56/258/1 168/104/1
|
||||
f 43/106/2 53/100/2 161/102/2
|
||||
f 47/108/6 55/326/6 53/109/6
|
||||
f 41/111/4 54/327/4 56/112/4
|
||||
f 61/114/3 63/117/3 59/115/3
|
||||
f 63/117/6 64/123/6 60/118/6
|
||||
f 62/120/4 61/114/4 57/121/4
|
||||
f 64/123/5 62/120/5 58/124/5
|
||||
f 61/114/1 62/120/1 64/123/1
|
||||
f 69/126/3 71/129/3 67/127/3
|
||||
f 71/129/6 72/135/6 68/130/6
|
||||
f 70/132/4 69/126/4 65/133/4
|
||||
f 72/135/5 70/132/5 66/136/5
|
||||
f 69/126/1 70/132/1 72/135/1
|
||||
f 77/138/3 79/141/3 75/139/3
|
||||
f 79/141/6 80/147/6 76/142/6
|
||||
f 78/144/4 77/138/4 73/145/4
|
||||
f 80/147/5 78/144/5 74/148/5
|
||||
f 77/138/1 78/144/1 80/147/1
|
||||
f 85/150/3 87/153/3 83/151/3
|
||||
f 87/153/6 88/159/6 84/154/6
|
||||
f 86/156/4 85/150/4 81/157/4
|
||||
f 88/159/5 86/156/5 82/160/5
|
||||
f 85/150/1 86/156/1 88/159/1
|
||||
f 93/162/3 95/165/3 91/163/3
|
||||
f 95/165/6 96/171/6 92/166/6
|
||||
f 94/168/4 93/162/4 89/169/4
|
||||
f 96/171/5 94/168/5 90/172/5
|
||||
f 93/162/1 94/168/1 96/171/1
|
||||
f 101/174/3 103/177/3 99/175/3
|
||||
f 103/177/6 104/183/6 100/178/6
|
||||
f 102/180/4 101/174/4 97/181/4
|
||||
f 104/183/5 102/180/5 98/184/5
|
||||
f 101/174/1 102/180/1 104/183/1
|
||||
f 109/186/3 111/189/3 107/187/3
|
||||
f 111/189/6 112/195/6 108/190/6
|
||||
f 110/192/4 109/186/4 105/193/4
|
||||
f 112/195/5 110/192/5 106/196/5
|
||||
f 109/186/1 110/192/1 112/195/1
|
||||
f 117/198/3 119/201/3 115/199/3
|
||||
f 119/201/6 120/207/6 116/202/6
|
||||
f 118/204/4 117/198/4 113/205/4
|
||||
f 120/207/5 118/204/5 114/208/5
|
||||
f 117/198/1 118/204/1 120/207/1
|
||||
f 125/210/3 127/213/3 123/211/3
|
||||
f 127/213/6 128/219/6 124/214/6
|
||||
f 126/216/4 125/210/4 121/217/4
|
||||
f 128/219/5 126/216/5 122/220/5
|
||||
f 125/210/1 126/216/1 128/219/1
|
||||
f 133/222/3 135/225/3 131/223/3
|
||||
f 135/225/6 136/231/6 132/226/6
|
||||
f 134/228/4 133/222/4 129/229/4
|
||||
f 136/231/5 134/228/5 130/232/5
|
||||
f 133/222/1 134/228/1 136/231/1
|
||||
f 140/234/2 164/257/2 54/235/2
|
||||
f 139/237/2 163/259/2 164/238/2
|
||||
f 138/240/2 162/261/2 163/241/2
|
||||
f 137/243/2 161/263/2 162/244/2
|
||||
f 145/84/1 165/101/1 55/246/1
|
||||
f 146/248/1 166/264/1 165/249/1
|
||||
f 147/251/1 167/262/1 166/252/1
|
||||
f 148/254/1 168/260/1 167/255/1
|
||||
f 164/257/5 168/104/5 56/258/5
|
||||
f 163/259/5 167/255/5 168/260/5
|
||||
f 162/261/5 166/252/5 167/262/5
|
||||
f 161/263/5 165/249/5 166/264/5
|
||||
f 144/265/2 156/328/2 50/266/2
|
||||
f 143/268/2 155/329/2 156/269/2
|
||||
f 142/271/2 154/330/2 155/272/2
|
||||
f 141/274/2 153/331/2 154/275/2
|
||||
f 149/81/1 157/88/1 51/277/1
|
||||
f 150/279/1 158/298/1 157/280/1
|
||||
f 151/282/1 159/295/1 158/283/1
|
||||
f 152/285/1 160/292/1 159/286/1
|
||||
f 156/288/3 160/94/3 52/289/3
|
||||
f 155/291/3 159/286/3 160/292/3
|
||||
f 154/294/3 158/283/3 159/295/3
|
||||
f 153/297/3 157/280/3 158/298/3
|
||||
f 45/103/3 148/105/3 140/300/3
|
||||
f 148/254/3 147/256/3 139/302/3
|
||||
f 147/251/3 146/253/3 138/304/3
|
||||
f 146/248/3 145/250/3 137/306/3
|
||||
f 48/93/5 152/95/5 144/265/5
|
||||
f 152/285/5 151/287/5 143/268/5
|
||||
f 151/282/5 150/284/5 142/271/5
|
||||
f 150/279/5 149/281/5 141/274/5
|
||||
@ -0,0 +1,982 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve.blend'
|
||||
# www.blender.org
|
||||
o Plane.001
|
||||
v -1.312500 0.062500 0.500000
|
||||
v -1.141243 0.062500 -2.858757
|
||||
v -1.312500 0.187500 0.500000
|
||||
v -1.141243 0.187500 -2.858757
|
||||
v -1.097049 0.062500 -2.902951
|
||||
v -1.097049 0.187500 -2.902951
|
||||
v -1.250000 0.062500 0.500000
|
||||
v -1.250000 0.187500 0.500000
|
||||
v -4.500000 0.062500 -2.687500
|
||||
v -4.500000 0.062500 -4.312500
|
||||
v -4.500000 0.187500 -2.687500
|
||||
v -4.500000 0.187500 -4.312500
|
||||
v -4.500000 0.062500 -4.250000
|
||||
v -4.500000 0.187500 -4.250000
|
||||
v -4.500000 0.062500 -2.750000
|
||||
v -4.500000 0.187500 -2.750000
|
||||
v -2.246097 0.062500 -1.753903
|
||||
v -0.550519 0.187500 -2.138958
|
||||
v -2.246097 0.187500 -1.753903
|
||||
v -0.498553 0.187500 -2.173681
|
||||
v -0.498553 0.062500 -2.173681
|
||||
v -0.550519 0.062500 -2.138958
|
||||
v -2.201903 0.062500 -1.798097
|
||||
v -2.201903 0.187500 -1.798097
|
||||
v -3.675014 0.062500 -2.578888
|
||||
v -3.675014 0.187500 -2.578888
|
||||
v -3.658838 0.062500 -2.639259
|
||||
v -3.658838 0.187500 -2.639259
|
||||
v -2.906250 0.062500 -2.260456
|
||||
v -2.906250 0.187500 -2.260456
|
||||
v -2.875000 0.062500 -2.314582
|
||||
v -2.875000 0.187500 -2.314582
|
||||
v -1.739544 0.062500 -1.093750
|
||||
v -1.739544 0.187500 -1.093750
|
||||
v -1.685418 0.062500 -1.125000
|
||||
v -1.685418 0.187500 -1.125000
|
||||
v -1.421111 0.062500 -0.324986
|
||||
v -1.421111 0.187500 -0.324986
|
||||
v -1.360741 0.062500 -0.341162
|
||||
v -1.360741 0.187500 -0.341162
|
||||
v -3.561128 0.187500 -4.220029
|
||||
v -3.561128 0.062500 -4.220029
|
||||
v -3.573321 0.187500 -4.158730
|
||||
v -3.573321 0.062500 -4.158730
|
||||
v -2.658336 0.187500 -3.946170
|
||||
v -2.658336 0.062500 -3.946170
|
||||
v -2.682254 0.187500 -3.888428
|
||||
v -2.682254 0.062500 -3.888428
|
||||
v -1.826319 0.187500 -3.501447
|
||||
v -1.826319 0.062500 -3.501447
|
||||
v -1.861041 0.187500 -3.449481
|
||||
v -1.861041 0.062500 -3.449481
|
||||
v -0.111573 0.062500 -1.317746
|
||||
v -0.053831 0.062500 -1.341664
|
||||
v -0.053831 0.187500 -1.341664
|
||||
v -0.111573 0.187500 -1.317746
|
||||
v 0.158730 0.062500 -0.426678
|
||||
v 0.220028 0.062500 -0.438872
|
||||
v 0.220028 0.187500 -0.438872
|
||||
v 0.158730 0.187500 -0.426678
|
||||
v 0.250000 0.062500 0.500000
|
||||
v 0.312499 0.062500 0.500000
|
||||
v 0.312499 0.187500 0.500000
|
||||
v 0.250000 0.187500 0.500000
|
||||
v -1.501192 0.000000 0.294317
|
||||
v 0.481698 0.000000 0.033265
|
||||
v -1.550139 0.000000 -0.077475
|
||||
v 0.432751 0.000000 -0.338527
|
||||
v -1.550139 0.062500 -0.077475
|
||||
v -1.501192 0.062500 0.294317
|
||||
v 0.481698 0.062500 0.033265
|
||||
v 0.432751 0.062500 -0.338527
|
||||
v -1.656608 0.000000 -0.474823
|
||||
v 0.191151 0.000000 -1.240190
|
||||
v -1.800115 0.000000 -0.821278
|
||||
v 0.047645 0.000000 -1.586645
|
||||
v -1.800115 0.062500 -0.821278
|
||||
v -1.656608 0.062500 -0.474823
|
||||
v 0.191151 0.062500 -1.240190
|
||||
v 0.047645 0.062500 -1.586645
|
||||
v -2.005797 0.000000 -1.177531
|
||||
v -0.419090 0.000000 -2.395053
|
||||
v -2.234083 0.000000 -1.475038
|
||||
v -0.647376 0.000000 -2.692561
|
||||
v -2.234083 0.062500 -1.475038
|
||||
v -2.005797 0.062500 -1.177531
|
||||
v -0.419090 0.062500 -2.395053
|
||||
v -0.647376 0.062500 -2.692561
|
||||
v -2.524962 0.000000 -1.765917
|
||||
v -1.307439 0.000000 -3.352624
|
||||
v -2.822469 0.000000 -1.994203
|
||||
v -1.604947 0.000000 -3.580910
|
||||
v -2.822469 0.062500 -1.994203
|
||||
v -2.524962 0.062500 -1.765917
|
||||
v -1.307439 0.062500 -3.352624
|
||||
v -1.604947 0.062500 -3.580910
|
||||
v -3.178722 0.000000 -2.199886
|
||||
v -2.413356 0.000000 -4.047645
|
||||
v -3.525177 0.000000 -2.343392
|
||||
v -2.759810 0.000000 -4.191151
|
||||
v -3.525177 0.062500 -2.343392
|
||||
v -3.178722 0.062500 -2.199886
|
||||
v -2.413356 0.062500 -4.047645
|
||||
v -2.759810 0.062500 -4.191151
|
||||
v -3.922526 0.000000 -2.449861
|
||||
v -3.661473 0.000000 -4.432751
|
||||
v -4.294317 0.000000 -2.498808
|
||||
v -4.033265 0.000000 -4.481698
|
||||
v -4.294317 0.062500 -2.498808
|
||||
v -3.922526 0.062500 -2.449861
|
||||
v -3.661473 0.062500 -4.432751
|
||||
v -4.033265 0.062500 -4.481698
|
||||
v 0.387101 0.125000 -0.206438
|
||||
v 0.077275 0.125000 -0.165649
|
||||
v 0.403417 0.125000 -0.082508
|
||||
v 0.093590 0.125000 -0.041718
|
||||
v 0.387101 0.062500 -0.206438
|
||||
v 0.077275 0.062500 -0.165649
|
||||
v 0.403417 0.062500 -0.082508
|
||||
v 0.093590 0.062500 -0.041718
|
||||
v -1.455542 0.062500 0.162229
|
||||
v -1.145715 0.062500 0.121439
|
||||
v -1.471858 0.062500 0.038298
|
||||
v -1.162031 0.062500 -0.002491
|
||||
v -1.455542 0.125000 0.162229
|
||||
v -1.145715 0.125000 0.121439
|
||||
v -1.471858 0.125000 0.038298
|
||||
v -1.162031 0.125000 -0.002491
|
||||
v 0.037737 0.125000 -1.447242
|
||||
v -0.250975 0.125000 -1.327653
|
||||
v 0.085573 0.125000 -1.331757
|
||||
v -0.203139 0.125000 -1.212168
|
||||
v 0.037737 0.062500 -1.447242
|
||||
v -0.250975 0.062500 -1.327653
|
||||
v 0.085573 0.062500 -1.331757
|
||||
v -0.203139 0.062500 -1.212168
|
||||
v -1.646701 0.062500 -0.614226
|
||||
v -1.357989 0.062500 -0.733814
|
||||
v -1.694537 0.062500 -0.729711
|
||||
v -1.405824 0.062500 -0.849299
|
||||
v -1.646701 0.125000 -0.614226
|
||||
v -1.357989 0.125000 -0.733814
|
||||
v -1.694537 0.125000 -0.729711
|
||||
v -1.405824 0.125000 -0.849299
|
||||
v -0.620866 0.125000 -2.555344
|
||||
v -0.868788 0.125000 -2.365106
|
||||
v -0.544770 0.125000 -2.456175
|
||||
v -0.792693 0.125000 -2.265937
|
||||
v -0.620866 0.062500 -2.555344
|
||||
v -0.868788 0.062500 -2.365106
|
||||
v -0.544770 0.062500 -2.456175
|
||||
v -0.792693 0.062500 -2.265937
|
||||
v -2.032308 0.062500 -1.314747
|
||||
v -1.784385 0.062500 -1.504985
|
||||
v -2.108403 0.062500 -1.413917
|
||||
v -1.860480 0.062500 -1.604154
|
||||
v -2.032308 0.125000 -1.314747
|
||||
v -1.784385 0.125000 -1.504985
|
||||
v -2.108403 0.125000 -1.413917
|
||||
v -1.860480 0.125000 -1.604154
|
||||
v -1.543825 0.125000 -3.455230
|
||||
v -1.734063 0.125000 -3.207307
|
||||
v -1.444656 0.125000 -3.379134
|
||||
v -1.634893 0.125000 -3.131212
|
||||
v -1.543825 0.062500 -3.455230
|
||||
v -1.734063 0.062500 -3.207307
|
||||
v -1.444656 0.062500 -3.379134
|
||||
v -1.634893 0.062500 -3.131212
|
||||
v -2.586083 0.062500 -1.891597
|
||||
v -2.395845 0.062500 -2.139520
|
||||
v -2.685253 0.062500 -1.967692
|
||||
v -2.495015 0.062500 -2.215615
|
||||
v -2.586083 0.125000 -1.891597
|
||||
v -2.395845 0.125000 -2.139520
|
||||
v -2.685253 0.125000 -1.967692
|
||||
v -2.495015 0.125000 -2.215615
|
||||
v -2.668243 0.125000 -4.085573
|
||||
v -2.787832 0.125000 -3.796861
|
||||
v -2.552758 0.125000 -4.037737
|
||||
v -2.672346 0.125000 -3.749025
|
||||
v -2.668243 0.062500 -4.085573
|
||||
v -2.787832 0.062500 -3.796861
|
||||
v -2.552758 0.062500 -4.037737
|
||||
v -2.672346 0.062500 -3.749025
|
||||
v -3.270289 0.062500 -2.305463
|
||||
v -3.150701 0.062500 -2.594176
|
||||
v -3.385775 0.062500 -2.353299
|
||||
v -3.266186 0.062500 -2.642011
|
||||
v -3.270289 0.125000 -2.305463
|
||||
v -3.150701 0.125000 -2.594176
|
||||
v -3.385775 0.125000 -2.353299
|
||||
v -3.266186 0.125000 -2.642011
|
||||
v -3.917492 0.125000 -4.403417
|
||||
v -3.958282 0.125000 -4.093591
|
||||
v -3.793562 0.125000 -4.387100
|
||||
v -3.834351 0.125000 -4.077275
|
||||
v -3.917492 0.062500 -4.403417
|
||||
v -3.958282 0.062500 -4.093591
|
||||
v -3.793562 0.062500 -4.387100
|
||||
v -3.834351 0.062500 -4.077275
|
||||
v -4.038298 0.062500 -2.528142
|
||||
v -3.997509 0.062500 -2.837969
|
||||
v -4.162229 0.062500 -2.544458
|
||||
v -4.121440 0.062500 -2.854284
|
||||
v -4.038298 0.125000 -2.528142
|
||||
v -3.997509 0.125000 -2.837969
|
||||
v -4.162229 0.125000 -2.544458
|
||||
v -4.121440 0.125000 -2.854284
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.187500 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.437500 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.062500
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt -0.000000 0.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vn 0.7730 0.0000 -0.6344
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.6344 0.0000 -0.7730
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn -0.1305 0.0000 0.9914
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.1305 0.0000 -0.9914
|
||||
vn 0.3827 0.0000 -0.9239
|
||||
vn -0.3827 0.0000 0.9239
|
||||
vn 0.6088 0.0000 -0.7934
|
||||
vn -0.6088 0.0000 0.7934
|
||||
vn 0.7934 0.0000 -0.6088
|
||||
vn -0.7934 0.0000 0.6088
|
||||
vn 0.9914 0.0000 -0.1305
|
||||
vn 0.9239 0.0000 -0.3827
|
||||
vn -0.9239 0.0000 0.3827
|
||||
vn -0.9914 0.0000 0.1305
|
||||
vn -0.0980 0.0000 0.9952
|
||||
vn 0.0980 0.0000 -0.9952
|
||||
vn 0.2903 0.0000 -0.9569
|
||||
vn -0.2903 0.0000 0.9569
|
||||
vn -0.4714 0.0000 0.8819
|
||||
vn 0.4714 0.0000 -0.8819
|
||||
vn -0.6344 0.0000 0.7730
|
||||
vn -0.7730 0.0000 0.6344
|
||||
vn 0.9569 0.0000 -0.2903
|
||||
vn 0.8819 0.0000 -0.4714
|
||||
vn -0.8819 0.0000 0.4714
|
||||
vn -0.9952 0.0000 0.0980
|
||||
vn -0.9569 0.0000 0.2903
|
||||
vn 0.9952 0.0000 -0.0980
|
||||
vn 0.1305 0.0000 0.9914
|
||||
vn -0.1305 0.0000 -0.9914
|
||||
vn 0.3827 0.0000 0.9239
|
||||
vn -0.3827 0.0000 -0.9239
|
||||
vn 0.6088 0.0000 0.7934
|
||||
vn -0.6088 0.0000 -0.7934
|
||||
vn 0.7934 0.0000 0.6088
|
||||
vn -0.7934 0.0000 -0.6088
|
||||
vn 0.9239 0.0000 0.3827
|
||||
vn -0.9239 0.0000 -0.3827
|
||||
vn 0.9914 0.0000 0.1305
|
||||
vn -0.9914 0.0000 -0.1305
|
||||
s off
|
||||
f 20/1/1 5/2/1 6/3/1
|
||||
f 7/4/2 3/5/2 1/6/2
|
||||
f 10/7/3 14/8/3 12/9/3
|
||||
f 11/10/3 15/11/3 9/12/3
|
||||
f 6/13/4 50/14/4 49/15/4
|
||||
f 35/16/5 17/17/5 23/18/5
|
||||
f 31/19/5 25/20/5 27/21/5
|
||||
f 25/22/6 11/23/6 9/24/6
|
||||
f 11/23/7 28/25/7 16/26/7
|
||||
f 27/27/5 9/28/5 15/29/5
|
||||
f 28/25/8 15/29/8 16/26/8
|
||||
f 23/30/5 29/31/5 31/32/5
|
||||
f 32/33/9 27/21/9 28/34/9
|
||||
f 30/35/7 28/34/7 26/36/7
|
||||
f 29/37/10 26/36/10 25/38/10
|
||||
f 23/30/11 32/39/11 24/40/11
|
||||
f 24/40/7 30/41/7 19/42/7
|
||||
f 30/41/12 17/43/12 19/42/12
|
||||
f 39/44/5 33/45/5 35/46/5
|
||||
f 36/47/13 23/18/13 24/48/13
|
||||
f 33/49/14 19/50/14 17/51/14
|
||||
f 19/50/7 36/47/7 24/48/7
|
||||
f 7/52/15 40/53/15 8/54/15
|
||||
f 40/55/16 35/46/16 36/56/16
|
||||
f 34/57/7 40/55/7 36/56/7
|
||||
f 37/58/17 34/57/17 33/59/17
|
||||
f 8/54/7 38/60/7 3/61/7
|
||||
f 38/60/18 1/62/18 3/61/18
|
||||
f 1/63/5 39/64/5 7/52/5
|
||||
f 43/65/7 45/66/7 41/67/7
|
||||
f 14/68/7 41/69/7 12/70/7
|
||||
f 42/71/5 13/72/5 10/73/5
|
||||
f 44/74/19 14/68/19 13/75/19
|
||||
f 41/69/20 10/73/20 12/70/20
|
||||
f 50/76/5 48/77/5 46/78/5
|
||||
f 45/66/21 42/79/21 41/67/21
|
||||
f 46/80/5 44/81/5 42/79/5
|
||||
f 48/82/22 43/65/22 44/83/22
|
||||
f 51/84/7 6/13/7 49/15/7
|
||||
f 52/85/23 47/86/23 48/87/23
|
||||
f 47/86/7 49/88/7 45/89/7
|
||||
f 49/88/24 46/78/24 45/89/24
|
||||
f 5/90/5 52/91/5 50/14/5
|
||||
f 2/92/25 51/84/25 52/93/25
|
||||
f 54/94/5 22/95/5 21/96/5
|
||||
f 4/97/7 20/1/7 6/3/7
|
||||
f 21/98/5 2/99/5 5/2/5
|
||||
f 22/100/26 4/97/26 2/101/26
|
||||
f 59/102/27 54/103/27 55/104/27
|
||||
f 55/105/28 21/96/28 20/106/28
|
||||
f 18/107/7 55/105/7 20/106/7
|
||||
f 53/108/29 18/107/29 22/109/29
|
||||
f 61/110/30 60/111/30 57/112/30
|
||||
f 56/113/7 59/102/7 55/104/7
|
||||
f 57/114/31 56/113/31 53/115/31
|
||||
f 58/116/5 53/117/5 54/103/5
|
||||
f 64/118/2 62/119/2 63/120/2
|
||||
f 62/121/5 57/122/5 58/123/5
|
||||
f 63/124/32 58/123/32 59/125/32
|
||||
f 60/111/7 63/124/7 59/125/7
|
||||
f 67/126/5 66/127/5 65/128/5
|
||||
f 71/129/7 69/130/7 70/131/7
|
||||
f 65/132/18 69/133/18 67/134/18
|
||||
f 66/135/33 70/136/33 65/137/33
|
||||
f 68/138/15 71/139/15 66/127/15
|
||||
f 67/126/34 72/140/34 68/141/34
|
||||
f 75/142/5 74/143/5 73/144/5
|
||||
f 79/145/7 77/146/7 78/147/7
|
||||
f 73/148/17 77/149/17 75/150/17
|
||||
f 74/151/35 78/152/35 73/153/35
|
||||
f 76/154/16 79/155/16 74/143/16
|
||||
f 75/142/36 80/156/36 76/157/36
|
||||
f 81/158/5 84/159/5 82/160/5
|
||||
f 87/161/7 85/162/7 86/163/7
|
||||
f 81/164/14 85/165/14 83/166/14
|
||||
f 82/167/37 86/168/37 81/169/37
|
||||
f 84/170/13 87/171/13 82/160/13
|
||||
f 83/172/38 88/173/38 84/159/38
|
||||
f 91/174/5 90/175/5 89/176/5
|
||||
f 95/177/7 93/178/7 94/179/7
|
||||
f 89/180/12 93/181/12 91/182/12
|
||||
f 90/183/39 94/184/39 89/185/39
|
||||
f 92/186/11 95/187/11 90/175/11
|
||||
f 91/174/40 96/188/40 92/189/40
|
||||
f 97/190/5 100/191/5 98/192/5
|
||||
f 102/193/7 104/194/7 101/195/7
|
||||
f 97/196/10 101/197/10 99/198/10
|
||||
f 98/199/41 102/200/41 97/201/41
|
||||
f 100/202/9 103/203/9 98/192/9
|
||||
f 99/204/42 104/194/42 100/191/42
|
||||
f 107/205/5 106/206/5 105/207/5
|
||||
f 111/208/7 109/209/7 110/210/7
|
||||
f 105/211/6 109/212/6 107/213/6
|
||||
f 106/214/43 110/215/43 105/216/43
|
||||
f 108/217/8 111/218/8 106/206/8
|
||||
f 107/205/44 112/219/44 108/220/44
|
||||
f 125/221/18 123/222/18 121/223/18
|
||||
f 114/224/7 115/225/7 113/226/7
|
||||
f 113/226/15 119/227/15 117/228/15
|
||||
f 115/225/33 120/229/33 119/230/33
|
||||
f 114/224/34 117/231/34 118/232/34
|
||||
f 116/233/18 118/234/18 120/235/18
|
||||
f 127/236/34 124/237/34 123/238/34
|
||||
f 126/239/33 121/240/33 122/241/33
|
||||
f 128/242/15 122/243/15 124/244/15
|
||||
f 125/221/7 128/242/7 127/236/7
|
||||
f 141/245/17 139/246/17 137/247/17
|
||||
f 130/248/7 131/249/7 129/250/7
|
||||
f 129/250/16 135/251/16 133/252/16
|
||||
f 131/249/35 136/253/35 135/254/35
|
||||
f 130/248/36 133/255/36 134/256/36
|
||||
f 132/257/17 134/258/17 136/259/17
|
||||
f 143/260/36 140/261/36 139/262/36
|
||||
f 142/263/35 137/264/35 138/265/35
|
||||
f 144/266/16 138/267/16 140/268/16
|
||||
f 141/245/7 144/266/7 143/260/7
|
||||
f 157/269/14 155/270/14 153/271/14
|
||||
f 148/272/7 145/273/7 146/274/7
|
||||
f 145/273/13 151/275/13 149/276/13
|
||||
f 147/277/37 152/278/37 151/279/37
|
||||
f 146/274/38 149/280/38 150/281/38
|
||||
f 148/272/14 150/282/14 152/283/14
|
||||
f 159/284/38 156/285/38 155/286/38
|
||||
f 158/287/37 153/288/37 154/289/37
|
||||
f 160/290/13 154/291/13 156/292/13
|
||||
f 157/269/7 160/290/7 159/284/7
|
||||
f 173/293/12 171/294/12 169/295/12
|
||||
f 162/296/7 163/297/7 161/298/7
|
||||
f 161/298/11 167/299/11 165/300/11
|
||||
f 163/297/39 168/301/39 167/302/39
|
||||
f 162/296/40 165/303/40 166/304/40
|
||||
f 164/305/12 166/306/12 168/307/12
|
||||
f 175/308/40 172/309/40 171/310/40
|
||||
f 174/311/39 169/312/39 170/313/39
|
||||
f 176/314/11 170/315/11 172/316/11
|
||||
f 173/293/7 176/314/7 175/308/7
|
||||
f 189/317/10 187/318/10 185/319/10
|
||||
f 178/320/7 179/321/7 177/322/7
|
||||
f 177/322/9 183/323/9 181/324/9
|
||||
f 179/321/41 184/325/41 183/326/41
|
||||
f 178/320/42 181/327/42 182/328/42
|
||||
f 180/329/10 182/330/10 184/331/10
|
||||
f 191/332/42 188/333/42 187/334/42
|
||||
f 190/335/41 185/336/41 186/337/41
|
||||
f 192/338/9 186/339/9 188/340/9
|
||||
f 191/332/7 190/335/7 192/338/7
|
||||
f 205/341/6 203/342/6 201/343/6
|
||||
f 194/344/7 195/345/7 193/346/7
|
||||
f 193/346/8 199/347/8 197/348/8
|
||||
f 195/345/43 200/349/43 199/350/43
|
||||
f 194/344/44 197/351/44 198/352/44
|
||||
f 196/353/6 198/354/6 200/355/6
|
||||
f 207/356/44 204/357/44 203/358/44
|
||||
f 206/359/43 201/360/43 202/361/43
|
||||
f 208/362/8 202/363/8 204/364/8
|
||||
f 207/356/7 206/359/7 208/362/7
|
||||
f 20/1/1 21/98/1 5/2/1
|
||||
f 7/4/2 8/365/2 3/5/2
|
||||
f 10/7/3 13/366/3 14/8/3
|
||||
f 11/10/3 16/367/3 15/11/3
|
||||
f 6/13/4 5/90/4 50/14/4
|
||||
f 35/16/5 33/368/5 17/17/5
|
||||
f 31/19/5 29/369/5 25/20/5
|
||||
f 25/22/6 26/370/6 11/23/6
|
||||
f 11/23/7 26/370/7 28/25/7
|
||||
f 27/27/5 25/371/5 9/28/5
|
||||
f 28/25/8 27/27/8 15/29/8
|
||||
f 23/30/5 17/372/5 29/31/5
|
||||
f 32/33/9 31/19/9 27/21/9
|
||||
f 30/35/7 32/33/7 28/34/7
|
||||
f 29/37/10 30/35/10 26/36/10
|
||||
f 23/30/11 31/32/11 32/39/11
|
||||
f 24/40/7 32/39/7 30/41/7
|
||||
f 30/41/12 29/373/12 17/43/12
|
||||
f 39/44/5 37/374/5 33/45/5
|
||||
f 36/47/13 35/16/13 23/18/13
|
||||
f 33/49/14 34/375/14 19/50/14
|
||||
f 19/50/7 34/375/7 36/47/7
|
||||
f 7/52/15 39/64/15 40/53/15
|
||||
f 40/55/16 39/44/16 35/46/16
|
||||
f 34/57/7 38/376/7 40/55/7
|
||||
f 37/58/17 38/376/17 34/57/17
|
||||
f 8/54/7 40/53/7 38/60/7
|
||||
f 38/60/18 37/377/18 1/62/18
|
||||
f 1/63/5 37/378/5 39/64/5
|
||||
f 43/65/7 47/379/7 45/66/7
|
||||
f 14/68/7 43/380/7 41/69/7
|
||||
f 42/71/5 44/381/5 13/72/5
|
||||
f 44/74/19 43/380/19 14/68/19
|
||||
f 41/69/20 42/71/20 10/73/20
|
||||
f 50/76/5 52/382/5 48/77/5
|
||||
f 45/66/21 46/80/21 42/79/21
|
||||
f 46/80/5 48/383/5 44/81/5
|
||||
f 48/82/22 47/379/22 43/65/22
|
||||
f 51/84/7 4/384/7 6/13/7
|
||||
f 52/85/23 51/385/23 47/86/23
|
||||
f 47/86/7 51/385/7 49/88/7
|
||||
f 49/88/24 50/76/24 46/78/24
|
||||
f 5/90/5 2/386/5 52/91/5
|
||||
f 2/92/25 4/384/25 51/84/25
|
||||
f 54/94/5 53/387/5 22/95/5
|
||||
f 4/97/7 18/388/7 20/1/7
|
||||
f 21/98/5 22/389/5 2/99/5
|
||||
f 22/100/26 18/388/26 4/97/26
|
||||
f 59/102/27 58/116/27 54/103/27
|
||||
f 55/105/28 54/94/28 21/96/28
|
||||
f 18/107/7 56/390/7 55/105/7
|
||||
f 53/108/29 56/390/29 18/107/29
|
||||
f 61/110/30 64/391/30 60/111/30
|
||||
f 56/113/7 60/392/7 59/102/7
|
||||
f 57/114/31 60/392/31 56/113/31
|
||||
f 58/116/5 57/393/5 53/117/5
|
||||
f 64/118/2 61/394/2 62/119/2
|
||||
f 62/121/5 61/395/5 57/122/5
|
||||
f 63/124/32 62/121/32 58/123/32
|
||||
f 60/111/7 64/391/7 63/124/7
|
||||
f 67/126/5 68/141/5 66/127/5
|
||||
f 71/129/7 72/140/7 69/130/7
|
||||
f 65/132/18 70/396/18 69/133/18
|
||||
f 66/135/33 71/397/33 70/136/33
|
||||
f 68/138/15 72/398/15 71/139/15
|
||||
f 67/126/34 69/130/34 72/140/34
|
||||
f 75/142/5 76/157/5 74/143/5
|
||||
f 79/145/7 80/156/7 77/146/7
|
||||
f 73/148/17 78/399/17 77/149/17
|
||||
f 74/151/35 79/400/35 78/152/35
|
||||
f 76/154/16 80/401/16 79/155/16
|
||||
f 75/142/36 77/146/36 80/156/36
|
||||
f 81/158/5 83/172/5 84/159/5
|
||||
f 87/161/7 88/173/7 85/162/7
|
||||
f 81/164/14 86/402/14 85/165/14
|
||||
f 82/167/37 87/403/37 86/168/37
|
||||
f 84/170/13 88/404/13 87/171/13
|
||||
f 83/172/38 85/162/38 88/173/38
|
||||
f 91/174/5 92/189/5 90/175/5
|
||||
f 95/177/7 96/188/7 93/178/7
|
||||
f 89/180/12 94/405/12 93/181/12
|
||||
f 90/183/39 95/406/39 94/184/39
|
||||
f 92/186/11 96/407/11 95/187/11
|
||||
f 91/174/40 93/178/40 96/188/40
|
||||
f 97/190/5 99/204/5 100/191/5
|
||||
f 102/193/7 103/408/7 104/194/7
|
||||
f 97/196/10 102/409/10 101/197/10
|
||||
f 98/199/41 103/410/41 102/200/41
|
||||
f 100/202/9 104/411/9 103/203/9
|
||||
f 99/204/42 101/195/42 104/194/42
|
||||
f 107/205/5 108/220/5 106/206/5
|
||||
f 111/208/7 112/219/7 109/209/7
|
||||
f 105/211/6 110/412/6 109/212/6
|
||||
f 106/214/43 111/413/43 110/215/43
|
||||
f 108/217/8 112/414/8 111/218/8
|
||||
f 107/205/44 109/209/44 112/219/44
|
||||
f 125/221/18 127/236/18 123/222/18
|
||||
f 114/224/7 116/233/7 115/225/7
|
||||
f 113/226/15 115/225/15 119/227/15
|
||||
f 115/225/33 116/233/33 120/229/33
|
||||
f 114/224/34 113/226/34 117/231/34
|
||||
f 116/233/18 114/224/18 118/234/18
|
||||
f 127/236/34 128/242/34 124/237/34
|
||||
f 126/239/33 125/221/33 121/240/33
|
||||
f 128/242/15 126/239/15 122/243/15
|
||||
f 125/221/7 126/239/7 128/242/7
|
||||
f 141/245/17 143/260/17 139/246/17
|
||||
f 130/248/7 132/257/7 131/249/7
|
||||
f 129/250/16 131/249/16 135/251/16
|
||||
f 131/249/35 132/257/35 136/253/35
|
||||
f 130/248/36 129/250/36 133/255/36
|
||||
f 132/257/17 130/248/17 134/258/17
|
||||
f 143/260/36 144/266/36 140/261/36
|
||||
f 142/263/35 141/245/35 137/264/35
|
||||
f 144/266/16 142/263/16 138/267/16
|
||||
f 141/245/7 142/263/7 144/266/7
|
||||
f 157/269/14 159/284/14 155/270/14
|
||||
f 148/272/7 147/277/7 145/273/7
|
||||
f 145/273/13 147/277/13 151/275/13
|
||||
f 147/277/37 148/272/37 152/278/37
|
||||
f 146/274/38 145/273/38 149/280/38
|
||||
f 148/272/14 146/274/14 150/282/14
|
||||
f 159/284/38 160/290/38 156/285/38
|
||||
f 158/287/37 157/269/37 153/288/37
|
||||
f 160/290/13 158/287/13 154/291/13
|
||||
f 157/269/7 158/287/7 160/290/7
|
||||
f 173/293/12 175/308/12 171/294/12
|
||||
f 162/296/7 164/305/7 163/297/7
|
||||
f 161/298/11 163/297/11 167/299/11
|
||||
f 163/297/39 164/305/39 168/301/39
|
||||
f 162/296/40 161/298/40 165/303/40
|
||||
f 164/305/12 162/296/12 166/306/12
|
||||
f 175/308/40 176/314/40 172/309/40
|
||||
f 174/311/39 173/293/39 169/312/39
|
||||
f 176/314/11 174/311/11 170/315/11
|
||||
f 173/293/7 174/311/7 176/314/7
|
||||
f 189/317/10 191/332/10 187/318/10
|
||||
f 178/320/7 180/329/7 179/321/7
|
||||
f 177/322/9 179/321/9 183/323/9
|
||||
f 179/321/41 180/329/41 184/325/41
|
||||
f 178/320/42 177/322/42 181/327/42
|
||||
f 180/329/10 178/320/10 182/330/10
|
||||
f 191/332/42 192/338/42 188/333/42
|
||||
f 190/335/41 189/317/41 185/336/41
|
||||
f 192/338/9 190/335/9 186/339/9
|
||||
f 191/332/7 189/317/7 190/335/7
|
||||
f 205/341/6 207/356/6 203/342/6
|
||||
f 194/344/7 196/353/7 195/345/7
|
||||
f 193/346/8 195/345/8 199/347/8
|
||||
f 195/345/43 196/353/43 200/349/43
|
||||
f 194/344/44 193/346/44 197/351/44
|
||||
f 196/353/6 194/344/6 198/354/6
|
||||
f 207/356/44 208/362/44 204/357/44
|
||||
f 206/359/43 205/341/43 201/360/43
|
||||
f 208/362/8 206/359/8 202/363/8
|
||||
f 207/356/7 205/341/7 206/359/7
|
||||
@ -0,0 +1,759 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'rail_standard_ramp.blend'
|
||||
# www.blender.org
|
||||
o Plane.001
|
||||
v 1.000000 0.562500 -0.187500
|
||||
v 1.000000 0.562500 0.187500
|
||||
v -1.000000 0.562500 0.187500
|
||||
v -1.000000 0.562500 -0.187500
|
||||
v -1.000000 0.500000 0.187500
|
||||
v 1.000000 0.500000 0.187500
|
||||
v -1.000000 0.500000 -0.187500
|
||||
v 1.000000 0.500000 -0.187500
|
||||
v -1.000000 0.700000 -0.812500
|
||||
v 1.000000 0.700000 -0.812500
|
||||
v -1.000000 0.700000 -1.187500
|
||||
v 1.000000 0.700000 -1.187500
|
||||
v -1.000000 0.800000 -1.812500
|
||||
v 1.000000 0.800000 -1.812500
|
||||
v -1.000000 0.800000 -2.187500
|
||||
v 1.000000 0.800000 -2.187500
|
||||
v -1.000000 0.100000 2.187500
|
||||
v 1.000000 0.100000 2.187500
|
||||
v -1.000000 0.100000 1.812500
|
||||
v 1.000000 0.100000 1.812500
|
||||
v -1.000000 0.300000 1.187500
|
||||
v 1.000000 0.300000 1.187500
|
||||
v -1.000000 0.300000 0.812500
|
||||
v 1.000000 0.300000 0.812500
|
||||
v -1.000000 0.762500 -1.187500
|
||||
v -1.000000 0.762500 -0.812500
|
||||
v 1.000000 0.762500 -0.812500
|
||||
v 1.000000 0.762500 -1.187500
|
||||
v -1.000000 0.862500 -2.187500
|
||||
v -1.000000 0.862500 -1.812500
|
||||
v 1.000000 0.862500 -1.812500
|
||||
v 1.000000 0.862500 -2.187500
|
||||
v -1.000000 0.162500 1.812500
|
||||
v -1.000000 0.162500 2.187500
|
||||
v 1.000000 0.162500 2.187500
|
||||
v 1.000000 0.162500 1.812500
|
||||
v -1.000000 0.362500 0.812500
|
||||
v -1.000000 0.362500 1.187500
|
||||
v 1.000000 0.362500 1.187500
|
||||
v 1.000000 0.362500 0.812500
|
||||
v -0.812500 0.062500 2.500000
|
||||
v 0.812500 0.062500 2.500000
|
||||
v -0.812500 1.062500 -2.500000
|
||||
v 0.812500 1.062500 -2.500000
|
||||
v -0.812500 0.187500 2.500000
|
||||
v 0.812500 0.187500 2.500000
|
||||
v -0.812500 1.187500 -2.500000
|
||||
v 0.812500 1.187500 -2.500000
|
||||
v 0.750000 0.062500 2.500000
|
||||
v 0.750000 1.062500 -2.500000
|
||||
v 0.750000 0.187500 2.500000
|
||||
v 0.750000 1.187500 -2.500000
|
||||
v -0.750000 1.062500 -2.500000
|
||||
v -0.750000 0.062500 2.500000
|
||||
v -0.750000 1.187500 -2.500000
|
||||
v -0.750000 0.187500 2.500000
|
||||
v 0.625000 0.162500 2.062500
|
||||
v 0.937500 0.162500 2.062500
|
||||
v 0.625000 0.162500 1.937500
|
||||
v 0.937500 0.162500 1.937500
|
||||
v 0.625000 0.225000 2.062500
|
||||
v 0.937500 0.225000 2.062500
|
||||
v 0.625000 0.225000 1.937500
|
||||
v 0.937500 0.225000 1.937500
|
||||
v -0.937500 0.162500 2.062500
|
||||
v -0.625000 0.162500 2.062500
|
||||
v -0.937500 0.162500 1.937500
|
||||
v -0.625000 0.162500 1.937500
|
||||
v -0.937500 0.225000 2.062500
|
||||
v -0.625000 0.225000 2.062500
|
||||
v -0.937500 0.225000 1.937500
|
||||
v -0.625000 0.225000 1.937500
|
||||
v 0.625000 0.362500 1.062500
|
||||
v 0.937500 0.362500 1.062500
|
||||
v 0.625000 0.362500 0.937500
|
||||
v 0.937500 0.362500 0.937500
|
||||
v 0.625000 0.425000 1.062500
|
||||
v 0.937500 0.425000 1.062500
|
||||
v 0.625000 0.425000 0.937500
|
||||
v 0.937500 0.425000 0.937500
|
||||
v -0.937500 0.362500 1.062500
|
||||
v -0.625000 0.362500 1.062500
|
||||
v -0.937500 0.362500 0.937500
|
||||
v -0.625000 0.362500 0.937500
|
||||
v -0.937500 0.425000 1.062500
|
||||
v -0.625000 0.425000 1.062500
|
||||
v -0.937500 0.425000 0.937500
|
||||
v -0.625000 0.425000 0.937500
|
||||
v 0.625000 0.562500 0.062500
|
||||
v 0.937500 0.562500 0.062500
|
||||
v 0.625000 0.562500 -0.062500
|
||||
v 0.937500 0.562500 -0.062500
|
||||
v 0.625000 0.625000 0.062500
|
||||
v 0.937500 0.625000 0.062500
|
||||
v 0.625000 0.625000 -0.062500
|
||||
v 0.937500 0.625000 -0.062500
|
||||
v -0.937500 0.562500 0.062500
|
||||
v -0.625000 0.562500 0.062500
|
||||
v -0.937500 0.562500 -0.062500
|
||||
v -0.625000 0.562500 -0.062500
|
||||
v -0.937500 0.625000 0.062500
|
||||
v -0.625000 0.625000 0.062500
|
||||
v -0.937500 0.625000 -0.062500
|
||||
v -0.625000 0.625000 -0.062500
|
||||
v 0.625000 0.762500 -0.937500
|
||||
v 0.937500 0.762500 -0.937500
|
||||
v 0.625000 0.762500 -1.062500
|
||||
v 0.937500 0.762500 -1.062500
|
||||
v 0.625000 0.825000 -0.937500
|
||||
v 0.937500 0.825000 -0.937500
|
||||
v 0.625000 0.825000 -1.062500
|
||||
v 0.937500 0.825000 -1.062500
|
||||
v -0.937500 0.762500 -0.937500
|
||||
v -0.625000 0.762500 -0.937500
|
||||
v -0.937500 0.762500 -1.062500
|
||||
v -0.625000 0.762500 -1.062500
|
||||
v -0.937500 0.825000 -0.937500
|
||||
v -0.625000 0.825000 -0.937500
|
||||
v -0.937500 0.825000 -1.062500
|
||||
v -0.625000 0.825000 -1.062500
|
||||
v 0.625000 0.862500 -1.937500
|
||||
v 0.937500 0.862500 -1.937500
|
||||
v 0.625000 0.862500 -2.062500
|
||||
v 0.937500 0.862500 -2.062500
|
||||
v 0.625000 0.925000 -1.937500
|
||||
v 0.937500 0.925000 -1.937500
|
||||
v 0.625000 0.925000 -2.062500
|
||||
v 0.937500 0.925000 -2.062500
|
||||
v -0.937500 0.862500 -1.937500
|
||||
v -0.625000 0.862500 -1.937500
|
||||
v -0.937500 0.862500 -2.062500
|
||||
v -0.625000 0.862500 -2.062500
|
||||
v -0.937500 0.925000 -1.937500
|
||||
v -0.625000 0.925000 -1.937500
|
||||
v -0.937500 0.925000 -2.062500
|
||||
v -0.625000 0.925000 -2.062500
|
||||
v -0.812500 0.862500 -1.500000
|
||||
v -0.812500 0.662500 -0.500000
|
||||
v -0.812500 0.462500 0.500000
|
||||
v -0.812500 0.262500 1.500000
|
||||
v 0.812500 0.262500 1.500000
|
||||
v 0.812500 0.462500 0.500000
|
||||
v 0.812500 0.662500 -0.500000
|
||||
v 0.812500 0.862500 -1.500000
|
||||
v -0.812500 0.987500 -1.500000
|
||||
v -0.812500 0.787500 -0.500000
|
||||
v -0.812500 0.587500 0.500000
|
||||
v -0.812500 0.387500 1.500000
|
||||
v 0.812500 0.387500 1.500000
|
||||
v 0.812500 0.587500 0.500000
|
||||
v 0.812500 0.787500 -0.500000
|
||||
v 0.812500 0.987500 -1.500000
|
||||
v 0.750000 0.262500 1.500000
|
||||
v 0.750000 0.462500 0.500000
|
||||
v 0.750000 0.662500 -0.500000
|
||||
v 0.750000 0.862500 -1.500000
|
||||
v 0.750000 0.387500 1.500000
|
||||
v 0.750000 0.587500 0.500000
|
||||
v 0.750000 0.787500 -0.500000
|
||||
v 0.750000 0.987500 -1.500000
|
||||
v -0.750000 0.862500 -1.500000
|
||||
v -0.750000 0.662500 -0.500000
|
||||
v -0.750000 0.462500 0.500000
|
||||
v -0.750000 0.262500 1.500000
|
||||
v -0.750000 0.987500 -1.500000
|
||||
v -0.750000 0.787500 -0.500000
|
||||
v -0.750000 0.587500 0.500000
|
||||
v -0.750000 0.387500 1.500000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.406250 0.000000
|
||||
vt 0.406250 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.218750 1.000000
|
||||
vt 0.187500 -0.000000
|
||||
vt 0.218750 -0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.406250 0.031250
|
||||
vt 0.593750 -0.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 0.000000
|
||||
vt 0.218750 0.000000
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.531250 0.718750
|
||||
vt 0.500000 0.718750
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.437500 0.062500
|
||||
vt 0.406250 0.125000
|
||||
vt 0.406250 0.062500
|
||||
vt 0.437500 0.125000
|
||||
vt 0.593750 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.593750 0.062500
|
||||
vt 0.437500 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.125000
|
||||
vt 0.625000 0.062500
|
||||
vt 0.625000 0.125000
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.437500 0.656250
|
||||
vt 0.406250 0.156250
|
||||
vt 0.437500 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.500000 0.156250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.531250 0.156250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.156250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.187500 1.000000
|
||||
vt 0.593750 0.031250
|
||||
vt 0.593750 0.031250
|
||||
vt 0.406250 -0.000000
|
||||
vt 0.593750 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.406250 0.656250
|
||||
vt 0.531250 0.656250
|
||||
vt 0.500000 0.718750
|
||||
vt 0.531250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.406250 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vt 0.593750 0.656250
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn 0.0000 0.9806 0.1961
|
||||
vn 0.0000 -0.9806 -0.1961
|
||||
s off
|
||||
f 2/1/1 4/2/1 3/3/1
|
||||
f 7/4/2 6/5/2 5/6/2
|
||||
f 11/7/2 10/8/2 9/9/2
|
||||
f 15/10/2 14/11/2 13/12/2
|
||||
f 19/13/2 18/14/2 17/15/2
|
||||
f 23/16/2 22/17/2 21/18/2
|
||||
f 27/19/1 25/20/1 26/21/1
|
||||
f 31/22/1 29/23/1 30/24/1
|
||||
f 35/25/1 33/26/1 34/27/1
|
||||
f 39/28/1 37/29/1 38/30/1
|
||||
f 17/31/3 33/32/3 19/33/3
|
||||
f 10/34/4 26/35/4 9/36/4
|
||||
f 18/37/4 34/38/4 17/39/4
|
||||
f 12/40/5 27/41/5 10/8/5
|
||||
f 20/42/5 35/43/5 18/14/5
|
||||
f 11/7/6 28/44/6 12/45/6
|
||||
f 5/46/3 4/47/3 7/48/3
|
||||
f 19/13/6 36/49/6 20/50/6
|
||||
f 13/51/3 29/52/3 15/53/3
|
||||
f 6/54/4 3/55/4 5/56/4
|
||||
f 21/57/3 37/58/3 23/59/3
|
||||
f 14/60/4 30/61/4 13/62/4
|
||||
f 8/63/5 2/64/5 6/5/5
|
||||
f 22/65/4 38/66/4 21/67/4
|
||||
f 16/68/5 31/69/5 14/11/5
|
||||
f 7/4/6 1/70/6 8/71/6
|
||||
f 24/72/5 39/73/5 22/17/5
|
||||
f 15/10/6 32/74/6 16/75/6
|
||||
f 9/76/3 25/77/3 11/78/3
|
||||
f 23/16/6 40/79/6 24/80/6
|
||||
f 141/81/5 46/82/5 42/83/5
|
||||
f 145/84/3 43/85/3 137/86/3
|
||||
f 153/87/3 51/88/3 157/89/3
|
||||
f 46/90/4 49/91/4 42/92/4
|
||||
f 48/93/7 160/94/7 152/95/7
|
||||
f 42/83/8 153/96/8 141/81/8
|
||||
f 44/97/6 52/98/6 48/99/6
|
||||
f 53/100/5 165/101/5 161/102/5
|
||||
f 45/103/7 168/104/7 148/105/7
|
||||
f 43/106/8 161/102/8 137/107/8
|
||||
f 47/108/6 53/109/6 43/110/6
|
||||
f 41/111/4 56/112/4 45/113/4
|
||||
f 61/114/3 59/115/3 57/116/3
|
||||
f 63/117/6 60/118/6 59/119/6
|
||||
f 62/120/4 57/121/4 58/122/4
|
||||
f 64/123/5 58/124/5 60/125/5
|
||||
f 61/114/1 64/123/1 63/117/1
|
||||
f 69/126/3 67/127/3 65/128/3
|
||||
f 71/129/6 68/130/6 67/131/6
|
||||
f 70/132/4 65/133/4 66/134/4
|
||||
f 72/135/5 66/136/5 68/137/5
|
||||
f 69/126/1 72/135/1 71/129/1
|
||||
f 77/138/3 75/139/3 73/140/3
|
||||
f 79/141/6 76/142/6 75/143/6
|
||||
f 78/144/4 73/145/4 74/146/4
|
||||
f 80/147/5 74/148/5 76/149/5
|
||||
f 77/138/1 80/147/1 79/141/1
|
||||
f 85/150/3 83/151/3 81/152/3
|
||||
f 87/153/6 84/154/6 83/155/6
|
||||
f 86/156/4 81/157/4 82/158/4
|
||||
f 88/159/5 82/160/5 84/161/5
|
||||
f 85/150/1 88/159/1 87/153/1
|
||||
f 93/162/3 91/163/3 89/164/3
|
||||
f 95/165/6 92/166/6 91/167/6
|
||||
f 94/168/4 89/169/4 90/170/4
|
||||
f 96/171/5 90/172/5 92/173/5
|
||||
f 93/162/1 96/171/1 95/165/1
|
||||
f 101/174/3 99/175/3 97/176/3
|
||||
f 103/177/6 100/178/6 99/179/6
|
||||
f 102/180/4 97/181/4 98/182/4
|
||||
f 104/183/5 98/184/5 100/185/5
|
||||
f 101/174/1 104/183/1 103/177/1
|
||||
f 109/186/3 107/187/3 105/188/3
|
||||
f 111/189/6 108/190/6 107/191/6
|
||||
f 110/192/4 105/193/4 106/194/4
|
||||
f 112/195/5 106/196/5 108/197/5
|
||||
f 109/186/1 112/195/1 111/189/1
|
||||
f 117/198/3 115/199/3 113/200/3
|
||||
f 119/201/6 116/202/6 115/203/6
|
||||
f 118/204/4 113/205/4 114/206/4
|
||||
f 120/207/5 114/208/5 116/209/5
|
||||
f 117/198/1 120/207/1 119/201/1
|
||||
f 125/210/3 123/211/3 121/212/3
|
||||
f 127/213/6 124/214/6 123/215/6
|
||||
f 126/216/4 121/217/4 122/218/4
|
||||
f 128/219/5 122/220/5 124/221/5
|
||||
f 125/210/1 128/219/1 127/213/1
|
||||
f 133/222/3 131/223/3 129/224/3
|
||||
f 135/225/6 132/226/6 131/227/6
|
||||
f 134/228/4 129/229/4 130/230/4
|
||||
f 136/231/5 130/232/5 132/233/5
|
||||
f 133/222/1 136/231/1 135/225/1
|
||||
f 140/234/8 54/235/8 41/236/8
|
||||
f 139/237/8 164/238/8 140/239/8
|
||||
f 138/240/8 163/241/8 139/242/8
|
||||
f 137/243/8 162/244/8 138/245/8
|
||||
f 145/84/7 55/246/7 47/247/7
|
||||
f 146/248/7 165/249/7 145/250/7
|
||||
f 147/251/7 166/252/7 146/253/7
|
||||
f 148/254/7 167/255/7 147/256/7
|
||||
f 164/257/5 56/258/5 54/235/5
|
||||
f 163/259/5 168/260/5 164/238/5
|
||||
f 162/261/5 167/262/5 163/241/5
|
||||
f 161/263/5 166/264/5 162/244/5
|
||||
f 144/265/8 50/266/8 44/267/8
|
||||
f 143/268/8 156/269/8 144/270/8
|
||||
f 142/271/8 155/272/8 143/273/8
|
||||
f 141/274/8 154/275/8 142/276/8
|
||||
f 149/277/7 51/88/7 46/82/7
|
||||
f 150/278/7 157/279/7 149/280/7
|
||||
f 151/281/7 158/282/7 150/283/7
|
||||
f 152/284/7 159/285/7 151/286/7
|
||||
f 50/287/3 160/94/3 52/288/3
|
||||
f 156/289/3 159/285/3 160/290/3
|
||||
f 155/291/3 158/282/3 159/292/3
|
||||
f 154/293/3 157/279/3 158/294/3
|
||||
f 45/103/3 140/295/3 41/296/3
|
||||
f 148/254/3 139/297/3 140/298/3
|
||||
f 147/251/3 138/299/3 139/300/3
|
||||
f 146/248/3 137/301/3 138/302/3
|
||||
f 44/267/5 152/95/5 144/265/5
|
||||
f 144/270/5 151/286/5 143/268/5
|
||||
f 143/273/5 150/283/5 142/271/5
|
||||
f 142/276/5 149/280/5 141/274/5
|
||||
f 2/1/1 1/70/1 4/2/1
|
||||
f 7/4/2 8/71/2 6/5/2
|
||||
f 11/7/2 12/45/2 10/8/2
|
||||
f 15/10/2 16/75/2 14/11/2
|
||||
f 19/13/2 20/50/2 18/14/2
|
||||
f 23/16/2 24/80/2 22/17/2
|
||||
f 27/19/1 28/44/1 25/20/1
|
||||
f 31/22/1 32/74/1 29/23/1
|
||||
f 35/25/1 36/49/1 33/26/1
|
||||
f 39/28/1 40/79/1 37/29/1
|
||||
f 17/31/3 34/303/3 33/32/3
|
||||
f 10/34/4 27/304/4 26/35/4
|
||||
f 18/37/4 35/305/4 34/38/4
|
||||
f 12/40/5 28/306/5 27/41/5
|
||||
f 20/42/5 36/307/5 35/43/5
|
||||
f 11/7/6 25/20/6 28/44/6
|
||||
f 5/46/3 3/308/3 4/47/3
|
||||
f 19/13/6 33/26/6 36/49/6
|
||||
f 13/51/3 30/309/3 29/52/3
|
||||
f 6/54/4 2/310/4 3/55/4
|
||||
f 21/57/3 38/311/3 37/58/3
|
||||
f 14/60/4 31/312/4 30/61/4
|
||||
f 8/63/5 1/313/5 2/64/5
|
||||
f 22/65/4 39/314/4 38/66/4
|
||||
f 16/68/5 32/315/5 31/69/5
|
||||
f 7/4/6 4/2/6 1/70/6
|
||||
f 24/72/5 40/316/5 39/73/5
|
||||
f 15/10/6 29/23/6 32/74/6
|
||||
f 9/76/3 26/317/3 25/77/3
|
||||
f 23/16/6 37/29/6 40/79/6
|
||||
f 141/81/5 149/277/5 46/82/5
|
||||
f 145/84/3 47/247/3 43/85/3
|
||||
f 153/87/3 49/318/3 51/88/3
|
||||
f 46/90/4 51/319/4 49/91/4
|
||||
f 48/93/7 52/288/7 160/94/7
|
||||
f 42/83/8 49/320/8 153/96/8
|
||||
f 44/97/6 50/321/6 52/98/6
|
||||
f 53/100/5 55/246/5 165/101/5
|
||||
f 45/103/7 56/258/7 168/104/7
|
||||
f 43/106/8 53/100/8 161/102/8
|
||||
f 47/108/6 55/322/6 53/109/6
|
||||
f 41/111/4 54/323/4 56/112/4
|
||||
f 61/114/3 63/117/3 59/115/3
|
||||
f 63/117/6 64/123/6 60/118/6
|
||||
f 62/120/4 61/114/4 57/121/4
|
||||
f 64/123/5 62/120/5 58/124/5
|
||||
f 61/114/1 62/120/1 64/123/1
|
||||
f 69/126/3 71/129/3 67/127/3
|
||||
f 71/129/6 72/135/6 68/130/6
|
||||
f 70/132/4 69/126/4 65/133/4
|
||||
f 72/135/5 70/132/5 66/136/5
|
||||
f 69/126/1 70/132/1 72/135/1
|
||||
f 77/138/3 79/141/3 75/139/3
|
||||
f 79/141/6 80/147/6 76/142/6
|
||||
f 78/144/4 77/138/4 73/145/4
|
||||
f 80/147/5 78/144/5 74/148/5
|
||||
f 77/138/1 78/144/1 80/147/1
|
||||
f 85/150/3 87/153/3 83/151/3
|
||||
f 87/153/6 88/159/6 84/154/6
|
||||
f 86/156/4 85/150/4 81/157/4
|
||||
f 88/159/5 86/156/5 82/160/5
|
||||
f 85/150/1 86/156/1 88/159/1
|
||||
f 93/162/3 95/165/3 91/163/3
|
||||
f 95/165/6 96/171/6 92/166/6
|
||||
f 94/168/4 93/162/4 89/169/4
|
||||
f 96/171/5 94/168/5 90/172/5
|
||||
f 93/162/1 94/168/1 96/171/1
|
||||
f 101/174/3 103/177/3 99/175/3
|
||||
f 103/177/6 104/183/6 100/178/6
|
||||
f 102/180/4 101/174/4 97/181/4
|
||||
f 104/183/5 102/180/5 98/184/5
|
||||
f 101/174/1 102/180/1 104/183/1
|
||||
f 109/186/3 111/189/3 107/187/3
|
||||
f 111/189/6 112/195/6 108/190/6
|
||||
f 110/192/4 109/186/4 105/193/4
|
||||
f 112/195/5 110/192/5 106/196/5
|
||||
f 109/186/1 110/192/1 112/195/1
|
||||
f 117/198/3 119/201/3 115/199/3
|
||||
f 119/201/6 120/207/6 116/202/6
|
||||
f 118/204/4 117/198/4 113/205/4
|
||||
f 120/207/5 118/204/5 114/208/5
|
||||
f 117/198/1 118/204/1 120/207/1
|
||||
f 125/210/3 127/213/3 123/211/3
|
||||
f 127/213/6 128/219/6 124/214/6
|
||||
f 126/216/4 125/210/4 121/217/4
|
||||
f 128/219/5 126/216/5 122/220/5
|
||||
f 125/210/1 126/216/1 128/219/1
|
||||
f 133/222/3 135/225/3 131/223/3
|
||||
f 135/225/6 136/231/6 132/226/6
|
||||
f 134/228/4 133/222/4 129/229/4
|
||||
f 136/231/5 134/228/5 130/232/5
|
||||
f 133/222/1 134/228/1 136/231/1
|
||||
f 140/234/8 164/257/8 54/235/8
|
||||
f 139/237/8 163/259/8 164/238/8
|
||||
f 138/240/8 162/261/8 163/241/8
|
||||
f 137/243/8 161/263/8 162/244/8
|
||||
f 145/84/7 165/101/7 55/246/7
|
||||
f 146/248/7 166/264/7 165/249/7
|
||||
f 147/251/7 167/262/7 166/252/7
|
||||
f 148/254/7 168/260/7 167/255/7
|
||||
f 164/257/5 168/104/5 56/258/5
|
||||
f 163/259/5 167/255/5 168/260/5
|
||||
f 162/261/5 166/252/5 167/262/5
|
||||
f 161/263/5 165/249/5 166/264/5
|
||||
f 144/265/8 156/324/8 50/266/8
|
||||
f 143/268/8 155/325/8 156/269/8
|
||||
f 142/271/8 154/326/8 155/272/8
|
||||
f 141/274/8 153/327/8 154/275/8
|
||||
f 149/277/7 157/89/7 51/88/7
|
||||
f 150/278/7 158/294/7 157/279/7
|
||||
f 151/281/7 159/292/7 158/282/7
|
||||
f 152/284/7 160/290/7 159/285/7
|
||||
f 50/287/3 156/328/3 160/94/3
|
||||
f 156/289/3 155/329/3 159/285/3
|
||||
f 155/291/3 154/330/3 158/282/3
|
||||
f 154/293/3 153/331/3 157/279/3
|
||||
f 45/103/3 148/105/3 140/295/3
|
||||
f 148/254/3 147/256/3 139/297/3
|
||||
f 147/251/3 146/253/3 138/299/3
|
||||
f 146/248/3 145/250/3 137/301/3
|
||||
f 44/267/5 48/93/5 152/95/5
|
||||
f 144/270/5 152/284/5 151/286/5
|
||||
f 143/273/5 151/281/5 150/283/5
|
||||
f 142/276/5 150/278/5 149/280/5
|
||||
2331
src/main/resources/assets/hbm/models/machines/steamhammer.obj
Normal file
2331
src/main/resources/assets/hbm/models/machines/steamhammer.obj
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
BIN
src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png
Normal file
BIN
src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 288 B |
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user