mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-08-10 17:55:44 +00:00
Merge branch 'HbmMods:master' into rulang
This commit is contained in:
commit
1be7e76d8a
@ -33,6 +33,8 @@ If you're planning on adding some new thing or doing a grand change, it's best t
|
||||
|
||||
This ties together with the previous point - there's no guarantees that your PR gets merged no matter how hard or long you've worked on it. However, if you follow these guidelines, there's a good chance that your PR will be accepted.
|
||||
|
||||
## If you dare send me clanker code, I will rip your limbs off
|
||||
|
||||
## I want to help but don't know where to start
|
||||
|
||||
If you want to help the project, consider getting involved with the [wiki](https://nucleartech.wiki/) first. Writing an article is the easiest and quickest way of helping, and requires no programming knowledge. If you do know Java and want to help, consider these places first:
|
||||
|
||||
35
changelog
35
changelog
@ -1,34 +1,3 @@
|
||||
## Added
|
||||
* New grenades
|
||||
* Universal system where there's only one grenade item
|
||||
* A grenade is composed of a shell, filling and fuze, which can be mixed and matched as needed
|
||||
* Instead of having dedicated grenades with impact or long timers, the desired fuze can simply be put into any grenade configuration
|
||||
* Comes with proper 3D models and animations
|
||||
* Grenade max stacksize has been drastically reduced (and now depends on the shell used)
|
||||
|
||||
## Changed
|
||||
* Removed the euphemium and DNT compound plate recipes from the anvil, they are now plasma forge exclusive
|
||||
* More RoR integration
|
||||
* PWRs can now output the control rod position
|
||||
* Industrial turbines and leviathans can now output their current energy production
|
||||
* Industrial turbines can output their current flywheel speed in %
|
||||
* The ZIRNOX now outputs its heat and pressure
|
||||
* The CCGT can output the turbine setting in percent, the turbine's RPM and the produced energy
|
||||
* The fusion reactor plasma vessel can output its output plasma energy and fuel consumption in percent
|
||||
* Cast plate foundry molds now have a triple variant
|
||||
* Zombies now have a chance to drop copper, aluminium and titanium ingots (1:200 each)
|
||||
* The burner press now has nine additional storage slots for things like stamps and reserve fuel
|
||||
|
||||
## Fixed
|
||||
* Fixed euphemium compound plate recipe not yielding four items as it should in the plasma forge
|
||||
* Fixed NTM rare item drops ignoring the mob loot gamerule
|
||||
* Fixed flamethrowers not properly igniting entities on direct hit, only via lingering fire
|
||||
* Fixed PWR RoR components not properly showing the possible values/functions when connected to ports
|
||||
* Fixed missing ports on the plasma forge
|
||||
* Fixed wrong texture being bound in the crucible for the molten metal gauge
|
||||
* Fixed RoR panels having no hardness at all
|
||||
* Undid the change to the crucible where using no recipe would fill up the recipe stack anyway because people would NOT STOP smelting stuff then setting the recipe after the fact which DOES NOT WORK.
|
||||
* This change however introduced yet another inconsistency with external pouring behavior that I simply cannot be assed to fix, so we are just rolling all that back
|
||||
* If you're still to dumb, old or irradiated to use the crucible correctly, please bother LITERALLY ANOYNE EXCEPT ME.
|
||||
* This basically fixes the aforementioned inconsistency
|
||||
* Fixed meteorite sword progression having some issues ever since the fusion reactor rework
|
||||
* Fixed the grenade crafting handler not checking if a shell/filling combination is even valid, allowing weird combos
|
||||
* Fixed dispenser fired laser grenades crashing the game
|
||||
@ -1,6 +1,6 @@
|
||||
mod_version=1.0.27
|
||||
# Empty build number makes a release type
|
||||
mod_build_number=5649
|
||||
mod_build_number=5663
|
||||
|
||||
credits=HbMinecraft,\
|
||||
\ rodolphito (explosion algorithms),\
|
||||
|
||||
@ -182,9 +182,9 @@ public class ConsumableRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.pads_static, 1), new Object[] { "CDC", "ISI", "CDC", 'C', CU.ingot(), 'D', ModItems.ducttape, 'I', ANY_RUBBER.ingot(), 'S', ModItems.pads_slime });
|
||||
|
||||
//Batteries
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery, 1), new Object[] { "PCP", "PCP", "PCP", 'P', STEEL.plate(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_GOLD.ordinal()) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk2, 1), new Object[] { "PCP", "PCP", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_NIOBIUM.ordinal()) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk3, 1), new Object[] { "PCP", "PCP", "PCP", 'P', GOLD.plate(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_TANTALUM.ordinal()) });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery, 1), new Object[] { "PWP", "PCP", "PWP", 'P', STEEL.plate(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_GOLD.ordinal()), 'W', MINGRADE.wireDense() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk2, 1), new Object[] { "PWP", "PCP", "PWP", 'P', ANY_PLASTIC.ingot(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_NIOBIUM.ordinal()), 'W', MINGRADE.wireDense() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.armor_battery_mk3, 1), new Object[] { "PWP", "PCP", "PWP", 'P', GOLD.plate(), 'C', new ItemStack(ModItems.battery_pack, 1, EnumBatteryPack.CAPACITOR_TANTALUM.ordinal()), 'W', MINGRADE.wireDense() });
|
||||
|
||||
//Special Mods
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.horseshoe_magnet, 1), new Object[] { "L L", "I I", "ILI", 'L', ModItems.lodestone, 'I', IRON.ingot() });
|
||||
|
||||
@ -171,8 +171,8 @@ public class WeaponRecipes {
|
||||
//Missiles
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_taint, 1), new Object[] { ModItems.missile_assembly, ModItems.bucket_mud, ModItems.powder_spark_mix, ModItems.powder_magic });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_micro, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.NUKE_HIGH) });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_bhole, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.black_hole });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_schrabidium, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.cell_anti_schrabidium, ANY_HARDPLASTIC.ingot() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_bhole, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.black_hole, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER_ADVANCED) });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_schrabidium, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModItems.cell_anti_schrabidium, DictFrame.fromOne(ModItems.circuit, EnumCircuitType.QUANTUM) });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.missile_emp, 1), new Object[] { ModItems.missile_assembly, ModItems.ducttape, ModBlocks.emp_bomb });
|
||||
|
||||
//Missile fins
|
||||
@ -278,6 +278,7 @@ public class WeaponRecipes {
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_filling, 4, EnumGrenadeFilling.LASER.ordinal()), new Object[] { " C ", "KWK", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ATOMIC_CLOCK), 'K', ModItems.crystal_redstone, 'W', WEAPONSTEEL.plate() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_filling, 1, EnumGrenadeFilling.NUCLEAR.ordinal()), new Object[] { " T ", "CPC", " T ", 'T', ModItems.ball_tatb, 'C', WEAPONSTEEL.plate(), 'P', PU239.nugget() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_filling, 1, EnumGrenadeFilling.NUCLEAR_DEMO.ordinal()), new Object[] { "TPT", "CPC", "TPT", 'T', ModItems.ball_tatb, 'C', WEAPONSTEEL.plate(), 'P', PU239.nugget() });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_filling, 1, EnumGrenadeFilling.SCHRAB.ordinal()), new Object[] { "BCB", "TST", "BCB", 'B', ANY_BISMOIDBRONZE.plateCast(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CONTROLLER), 'T', ModItems.ball_tatb, 'S', ModItems.cell_sas3 });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_extra, 1, EnumGrenadeExtra.GLUE.ordinal()), new Object[] { " P ", "PSP", " P ", 'P', Items.paper, 'S', Items.slime_ball });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_extra, 1, EnumGrenadeExtra.PROXY_FUZE.ordinal()), new Object[] { "C", "F", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'F', ModItems.safety_fuse });
|
||||
CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_extra, 1, EnumGrenadeExtra.FRAG_SLEEVE.ordinal()), new Object[] { "BBB", " T ", "BBB", 'B', STEEL.bolt(), 'T', ModItems.ducttape });
|
||||
|
||||
@ -21,6 +21,7 @@ public class GrenadeCraftingHandler implements IRecipe {
|
||||
if(hasForeignObject(inv)) return false; // can't be non-grenade items and can't be more than 4 items total
|
||||
EnumGrenadeShell shell = getFirst(inv, ModItems.grenade_shell, EnumGrenadeShell.class); // only one shell, null otherwise
|
||||
EnumGrenadeFilling filling = getFirst(inv, ModItems.grenade_filling, EnumGrenadeFilling.class); // only one filling, null otherwise
|
||||
if(!filling.compatibleShells.contains(shell)) return false;
|
||||
EnumGrenadeFuze fuze = getFirst(inv, ModItems.grenade_fuze, EnumGrenadeFuze.class); // only one fuze, null otherwise
|
||||
// this leaves the extra unaccounted for, but the restrictions we put in place will allow exactly one without dedicated check
|
||||
return shell != null && filling != null && fuze != null;
|
||||
|
||||
@ -3,15 +3,14 @@ package com.hbm.entity.effect;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.effect.EntityLightningBolt;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class EntityCloudFleija extends Entity {
|
||||
|
||||
|
||||
public int maxAge = 100;
|
||||
public int age;
|
||||
public float scale = 0;
|
||||
public float scale = 0;
|
||||
|
||||
public EntityCloudFleija(World p_i1582_1_) {
|
||||
super(p_i1582_1_);
|
||||
@ -19,7 +18,7 @@ public class EntityCloudFleija extends Entity {
|
||||
this.ignoreFrustumCheck = true;
|
||||
this.isImmuneToFire = true;
|
||||
this.age = 0;
|
||||
scale = 0;
|
||||
scale = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -27,18 +26,16 @@ public class EntityCloudFleija extends Entity {
|
||||
this.dataWatcher.addObject(16, Integer.valueOf(0));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public int getBrightnessForRender(float p_70070_1_)
|
||||
{
|
||||
return 15728880;
|
||||
}
|
||||
public int getBrightnessForRender(float p_70070_1_) {
|
||||
return 15728880;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getBrightness(float p_70013_1_)
|
||||
{
|
||||
return 1.0F;
|
||||
}
|
||||
@Override
|
||||
public float getBrightness(float p_70013_1_) {
|
||||
return 1.0F;
|
||||
}
|
||||
|
||||
public EntityCloudFleija(World p_i1582_1_, int maxAge) {
|
||||
super(p_i1582_1_);
|
||||
@ -47,45 +44,43 @@ public class EntityCloudFleija extends Entity {
|
||||
this.setMaxAge(maxAge);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
this.age++;
|
||||
this.worldObj.spawnEntityInWorld(new EntityLightningBolt(this.worldObj, this.posX, this.posY + 200, this.posZ));
|
||||
|
||||
if(this.age >= this.getMaxAge())
|
||||
{
|
||||
this.age = 0;
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
this.scale++;
|
||||
}
|
||||
this.age++;
|
||||
this.worldObj.lastLightningBolt = 2;
|
||||
|
||||
@Override
|
||||
protected void readEntityFromNBT(NBTTagCompound p_70037_1_) {
|
||||
age = p_70037_1_.getShort("age");
|
||||
scale = p_70037_1_.getShort("scale");
|
||||
if(!worldObj.isRemote && this.age >= this.getMaxAge()) {
|
||||
this.age = 0;
|
||||
this.setDead();
|
||||
}
|
||||
|
||||
this.scale++;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void writeEntityToNBT(NBTTagCompound p_70014_1_) {
|
||||
p_70014_1_.setShort("age", (short)age);
|
||||
p_70014_1_.setShort("scale", (short)scale);
|
||||
|
||||
protected void readEntityFromNBT(NBTTagCompound nbt) {
|
||||
age = nbt.getShort("age");
|
||||
scale = nbt.getShort("scale");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void writeEntityToNBT(NBTTagCompound nbt) {
|
||||
nbt.setShort("age", (short) age);
|
||||
nbt.setShort("scale", (short) scale);
|
||||
|
||||
}
|
||||
|
||||
public void setMaxAge(int i) {
|
||||
this.dataWatcher.updateObject(16, Integer.valueOf(i));
|
||||
}
|
||||
|
||||
|
||||
public int getMaxAge() {
|
||||
return this.dataWatcher.getWatchableObjectInt(16);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean isInRangeToRenderDist(double distance)
|
||||
{
|
||||
return distance < 25000;
|
||||
}
|
||||
public boolean isInRangeToRenderDist(double distance) {
|
||||
return distance < 25000;
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,41 +117,39 @@ public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading {
|
||||
super(p_i1582_1_);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override
|
||||
public void onUpdate() {
|
||||
super.onUpdate();
|
||||
super.onUpdate();
|
||||
|
||||
if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D));
|
||||
|
||||
if(!this.did)
|
||||
{
|
||||
for(Object player : this.worldObj.playerEntities)
|
||||
((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan);
|
||||
if(!this.did) {
|
||||
for(Object player : this.worldObj.playerEntities)
|
||||
((EntityPlayer) player).triggerAchievement(MainRegistry.achManhattan);
|
||||
|
||||
if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote)
|
||||
MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized mk3 explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!");
|
||||
if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote)
|
||||
MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized mk3 explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!");
|
||||
|
||||
if(this.waste)
|
||||
{
|
||||
exp = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0);
|
||||
wst = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 1.8), this.coefficient, 2);
|
||||
vap = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 2.5), this.coefficient, 1);
|
||||
} else {
|
||||
if(extType == 0)
|
||||
expl = new ExplosionFleija((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2);
|
||||
if(extType == 1)
|
||||
sol = new ExplosionSolinium((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2);
|
||||
}
|
||||
if(this.waste) {
|
||||
exp = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0);
|
||||
wst = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 1.8), this.coefficient, 2);
|
||||
vap = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 2.5), this.coefficient, 1);
|
||||
} else {
|
||||
if(extType == 0)
|
||||
expl = new ExplosionFleija((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2);
|
||||
if(extType == 1)
|
||||
sol = new ExplosionSolinium((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2);
|
||||
}
|
||||
|
||||
this.did = true;
|
||||
}
|
||||
this.did = true;
|
||||
}
|
||||
|
||||
speed += 1; //increase speed to keep up with expansion
|
||||
speed += 1; // increase speed to keep up with expansion
|
||||
|
||||
boolean flag = false;
|
||||
boolean flag3 = false;
|
||||
boolean flag = false;
|
||||
boolean flag3 = false;
|
||||
|
||||
for(int i = 0; i < this.speed; i++) {
|
||||
if(!worldObj.isRemote) for(int i = 0; i < this.speed; i++) {
|
||||
if(waste) {
|
||||
flag = exp.update();
|
||||
wst.update();
|
||||
@ -177,26 +175,25 @@ public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading {
|
||||
}
|
||||
}
|
||||
|
||||
if(!flag)
|
||||
{
|
||||
this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F);
|
||||
if(!flag) {
|
||||
this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F);
|
||||
|
||||
if(waste || extType != 1) {
|
||||
ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2);
|
||||
} else {
|
||||
ExplosionHurtUtil.doRadiation(worldObj, posX, posY, posZ, 15000, 250000, this.destructionRange);
|
||||
}
|
||||
if(waste || extType != 1) {
|
||||
ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2);
|
||||
} else {
|
||||
ExplosionHurtUtil.doRadiation(worldObj, posX, posY, posZ, 15000, 250000, this.destructionRange);
|
||||
}
|
||||
|
||||
} else {
|
||||
if (!did2 && waste) {
|
||||
EntityFalloutRain fallout = new EntityFalloutRain(this.worldObj, (int)(this.destructionRange * 1.8) * 10);
|
||||
} else {
|
||||
if(!did2 && waste) {
|
||||
EntityFalloutRain fallout = new EntityFalloutRain(this.worldObj, (int) (this.destructionRange * 1.8) * 10);
|
||||
fallout.posX = this.posX;
|
||||
fallout.posY = this.posY;
|
||||
fallout.posZ = this.posZ;
|
||||
fallout.setScale((int)(this.destructionRange * 1.8));
|
||||
fallout.setScale((int) (this.destructionRange * 1.8));
|
||||
|
||||
this.worldObj.spawnEntityInWorld(fallout);
|
||||
//this.worldObj.getWorldInfo().setRaining(true);
|
||||
// this.worldObj.getWorldInfo().setRaining(true);
|
||||
|
||||
did2 = true;
|
||||
}
|
||||
|
||||
@ -43,15 +43,18 @@ public class EntityBulletBeamBase extends Entity implements IEntityAdditionalSpa
|
||||
|
||||
public EntityLivingBase getThrower() { return this.thrower; }
|
||||
|
||||
public EntityBulletBeamBase(EntityLivingBase entity, BulletConfig config, float baseDamage) {
|
||||
this(entity.worldObj);
|
||||
public EntityBulletBeamBase(World world, BulletConfig config, float baseDamage) {
|
||||
this(world);
|
||||
|
||||
this.thrower = entity;
|
||||
this.setBulletConfig(config);
|
||||
|
||||
this.damage = baseDamage * this.config.damageMult;
|
||||
}
|
||||
|
||||
public EntityBulletBeamBase(EntityLivingBase entity, BulletConfig config, float baseDamage) {
|
||||
this(entity.worldObj, config, baseDamage);
|
||||
this.thrower = entity;
|
||||
}
|
||||
|
||||
public EntityBulletBeamBase(EntityLivingBase entity, BulletConfig config, float baseDamage, float angularInaccuracy, double sideOffset, double heightOffset, double frontOffset) {
|
||||
this(entity.worldObj);
|
||||
|
||||
|
||||
@ -196,8 +196,8 @@ public class ChemicalPlantRecipes extends GenericRecipes<GenericRecipe> {
|
||||
|
||||
this.register(new GenericRecipe("chem.polymer").setup(100, 100)
|
||||
.inputItems(new OreDictStack(COAL.dust(), 2), new OreDictStack(F.dust()))
|
||||
.inputFluids(new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528PressurizedRecipes ? 1 : 0))
|
||||
.outputItems(new ItemStack(ModItems.ingot_polymer)));
|
||||
.inputFluids(new FluidStack(Fluids.PETROLEUM, 1_000, GeneralConfig.enable528PressurizedRecipes ? 1 : 0))
|
||||
.outputItems(new ItemStack(ModItems.ingot_polymer, 4)));
|
||||
|
||||
this.register(new GenericRecipe("chem.bakelite").setup(100, 100)
|
||||
.inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528PressurizedRecipes ? 1 : 0), new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528PressurizedRecipes ? 1 : 0))
|
||||
|
||||
@ -115,7 +115,7 @@ public class CrystallizerRecipes extends SerializableRecipe {
|
||||
registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime));
|
||||
registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime));
|
||||
registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime));
|
||||
registerRecipe(new OreDictStack(CD.dust()), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250));
|
||||
registerRecipe(new OreDictStack(CD.dust()), new CrystallizerRecipe(new ItemStack(ModItems.ingot_rubber, 16), utilityTime), new FluidStack(Fluids.FISHOIL, 4_000));
|
||||
registerRecipe(new OreDictStack(LATEX.ingot()), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime).prod(0.15F), new FluidStack(Fluids.SOURGAS, 25));
|
||||
registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime).prod(0.25F), new FluidStack(Fluids.NITROGLYCERIN, 250));
|
||||
registerRecipe(new ComparableStack(ModBlocks.rebar), new CrystallizerRecipe(ModBlocks.concrete_rebar, 10), new FluidStack(Fluids.CONCRETE, 1_000));
|
||||
|
||||
@ -93,7 +93,6 @@ public class CyclotronRecipes extends SerializableRecipe {
|
||||
makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack(PU.dust()), new ItemStack(ModItems.powder_tennessine), plA);
|
||||
makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_tennessine), new ItemStack(ModItems.powder_australium), plA);
|
||||
makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.pellet_charged), new ItemStack(ModItems.nugget_schrabidium), 1000);
|
||||
makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.cell_antimatter), new ItemStack(ModItems.cell_anti_schrabidium), 0);
|
||||
/// PLUTONIUM END ///
|
||||
}
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ public class ItemModNightVision extends ItemArmorMod {
|
||||
armor.getTagCompound().setBoolean(NIGHT_VISION_ACTIVE_NBT_KEY, true); // Value does not matter, it's just a flag
|
||||
}
|
||||
|
||||
if (entity.getRNG().nextInt(100) == 0) {
|
||||
if (entity.getRNG().nextInt(200) == 0) {
|
||||
armor.damageItem(1, entity);
|
||||
}
|
||||
} else if(armor.hasTagCompound() && armor.getTagCompound().hasKey(NIGHT_VISION_ACTIVE_NBT_KEY)) { // Disable night vision if it was the armor mod that applied it to avoid removing other night vision sources.
|
||||
|
||||
@ -7,8 +7,10 @@ import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.hbm.entity.effect.EntityCloudFleija;
|
||||
import com.hbm.entity.effect.EntityFireLingering;
|
||||
import com.hbm.entity.grenade.EntityGrenadeUniversal;
|
||||
import com.hbm.entity.logic.EntityNukeExplosionMK3;
|
||||
import com.hbm.entity.projectile.EntityBulletBaseMK4;
|
||||
import com.hbm.entity.projectile.EntityBulletBeamBase;
|
||||
import com.hbm.explosion.vanillant.ExplosionVNT;
|
||||
@ -69,7 +71,8 @@ public class ItemGrenadeFilling extends ItemEnumMulti {
|
||||
LASER(EXPLODE_LASER, 0x493A3A, 0xFF0000, TECH), // pew pew pew
|
||||
CLUSTER_HEAVY(EXPLODE_CLUSTER_HEAVY, 0x5A5A5A, 0xFF5F21, NUKE), // cluster but fat
|
||||
NUCLEAR(EXPLODE_NUKE, 0xDFD7A8, 0xA49D62, NUKE), // nuka grenade
|
||||
NUCLEAR_DEMO(EXPLODE_NUKE_DEMO, 0xDFD7A8, 0xDD4029, NUKE); // demolition nuka grenade
|
||||
NUCLEAR_DEMO(EXPLODE_NUKE_DEMO, 0xDFD7A8, 0xDD4029, NUKE), // demolition nuka grenade
|
||||
SCHRAB(EXPLODE_SCHRAB, 0x00BDBD, 0x000000, NUKE); // what used to be aschrab
|
||||
|
||||
public Consumer<EntityGrenadeUniversal> explode;
|
||||
public Set<EnumGrenadeShell> compatibleShells = new HashSet();
|
||||
@ -188,7 +191,8 @@ public class ItemGrenadeFilling extends ItemEnumMulti {
|
||||
|
||||
Vec3 delta = Vec3.createVectorHelper(target.posX - x, target.posY + target.height / 2 - y, target.posZ - z);
|
||||
if(delta.lengthVector() > range) continue;
|
||||
EntityBulletBeamBase sub = new EntityBulletBeamBase(grenade.getThrower(), laser, 30);
|
||||
EntityBulletBeamBase sub = new EntityBulletBeamBase(grenade.worldObj, laser, 30);
|
||||
sub.thrower = grenade.getThrower();
|
||||
sub.setPosition(x, y, z);
|
||||
sub.setRotationsFromVector(delta);
|
||||
sub.performHitscanExternal(delta.lengthVector());
|
||||
@ -217,6 +221,17 @@ public class ItemGrenadeFilling extends ItemEnumMulti {
|
||||
XFactoryCatapult.incrementRad(grenade.worldObj, grenade.posX, grenade.posY, grenade.posZ, 1.5F);
|
||||
spawnMush(grenade);
|
||||
};
|
||||
|
||||
public static Consumer<EntityGrenadeUniversal> EXPLODE_SCHRAB = (grenade) -> {
|
||||
EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(grenade.worldObj, grenade.posX, grenade.posY, grenade.posZ, 50);
|
||||
if(!ex.isDead) {
|
||||
grenade.worldObj.playSoundEffect(grenade.posX, grenade.posY, grenade.posZ, "random.explode", 100.0F, grenade.worldObj.rand.nextFloat() * 0.1F + 0.9F);
|
||||
grenade.worldObj.spawnEntityInWorld(ex);
|
||||
EntityCloudFleija cloud = new EntityCloudFleija(grenade.worldObj, 50);
|
||||
cloud.setPosition(grenade.posX, grenade.posY, grenade.posZ);
|
||||
grenade.worldObj.spawnEntityInWorld(cloud);
|
||||
}
|
||||
};
|
||||
|
||||
public static void incrementRad(World world, double posX, double posY, double posZ, float mult) {
|
||||
for(int i = -2; i <= 2; i++) { for(int j = -2; j <= 2; j++) {
|
||||
|
||||
@ -21,6 +21,7 @@ import com.hbm.render.anim.BusAnimationKeyframe.IType;
|
||||
import com.hbm.render.anim.BusAnimation;
|
||||
import com.hbm.render.anim.BusAnimationSequence;
|
||||
import com.hbm.util.EnumUtil;
|
||||
import com.hbm.util.i18n.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
@ -32,6 +33,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemGrenadeUniversal extends Item implements IEquipReceiver, IAnimatedItem {
|
||||
@ -177,11 +179,11 @@ public class ItemGrenadeUniversal extends Item implements IEquipReceiver, IAnima
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
|
||||
list.add("item.grenade_universal.shell." + this.getShell(stack).name().toLowerCase(Locale.US));
|
||||
list.add("item.grenade_universal.filling." + this.getFilling(stack).name().toLowerCase(Locale.US));
|
||||
list.add("item.grenade_universal.fuze." + this.getFuze(stack).name().toLowerCase(Locale.US));
|
||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(ModItems.grenade_shell.getUnlocalizedName() + "." + this.getShell(stack).name().toLowerCase(Locale.US) + ".name"));
|
||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(ModItems.grenade_filling.getUnlocalizedName() + "." + this.getFilling(stack).name().toLowerCase(Locale.US) + ".name"));
|
||||
list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey(ModItems.grenade_fuze.getUnlocalizedName() + "." + this.getFuze(stack).name().toLowerCase(Locale.US) + ".name"));
|
||||
EnumGrenadeExtra extra = this.getExtra(stack);
|
||||
if(extra != null) list.add("item.grenade_universal.extra." + extra.name().toLowerCase(Locale.US));
|
||||
if(extra != null) list.add(EnumChatFormatting.RED + I18nUtil.resolveKey(ModItems.grenade_extra.getUnlocalizedName() + "." + extra.name().toLowerCase(Locale.US) + ".name"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -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 (5649)";
|
||||
public static final String VERSION = "1.0.27 BETA (5663)";
|
||||
//HBM's Beta Naming Convention:
|
||||
//V T (X)
|
||||
//V -> next release version
|
||||
|
||||
@ -224,6 +224,7 @@ public class ResourceManager {
|
||||
public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj"));
|
||||
public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj"));
|
||||
public static final IModelCustom sphere_uv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_uv.obj"));
|
||||
public static final IModelCustom sphere_new = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/sphere_new.obj")).asVBO();
|
||||
|
||||
//Meteor
|
||||
public static final IModelCustom meteor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/meteor.obj"));
|
||||
|
||||
@ -3,48 +3,61 @@ package com.hbm.render.entity.effect;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.entity.effect.EntityCloudFleija;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader;
|
||||
import net.minecraftforge.client.model.IModelCustom;
|
||||
|
||||
public class RenderCloudFleija extends Render {
|
||||
|
||||
private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/Sphere.obj");
|
||||
private IModelCustom blastModel;
|
||||
private ResourceLocation blastTexture;
|
||||
public float scale = 0;
|
||||
public float ring = 0;
|
||||
|
||||
public RenderCloudFleija() {
|
||||
blastModel = AdvancedModelLoader.loadModel(objTesterModelRL);
|
||||
blastTexture = new ResourceLocation(RefStrings.MODID, "textures/models/BlastFleija.png");
|
||||
scale = 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
|
||||
render((EntityCloudFleija)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_);
|
||||
}
|
||||
|
||||
public void render(EntityCloudFleija cloud, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
|
||||
@Override
|
||||
public void doRender(Entity entity, double x, double y, double z, float f0, float interp) {
|
||||
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||
|
||||
GL11.glScalef(cloud.age, cloud.age, cloud.age);
|
||||
|
||||
bindTexture(blastTexture);
|
||||
blastModel.renderAll();
|
||||
GL11.glPopMatrix();
|
||||
GL11.glTranslated(x, y, z);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
|
||||
EntityCloudFleija cloud = (EntityCloudFleija) entity;
|
||||
double baseScale = (cloud.age + interp) * 2;
|
||||
double ageScale = baseScale / cloud.getMaxAge();
|
||||
|
||||
GL11.glPushMatrix(); {
|
||||
double scale = ageScale * 1.2;
|
||||
if(scale > 1) scale = Math.max(1 - (scale - 1) * 5, 0);
|
||||
scale *= 2 * baseScale;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
|
||||
GL11.glColor3f(0F, 1F, 1F);
|
||||
ResourceManager.sphere_new.renderAll();
|
||||
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE);
|
||||
|
||||
GL11.glColor3f(0F, 0.125F, 0.125F);
|
||||
double outerScale = 1.05;
|
||||
for(int i = 0; i < 3; i++) {
|
||||
GL11.glScaled(outerScale, outerScale, outerScale);
|
||||
ResourceManager.sphere_new.renderAll();
|
||||
}
|
||||
} GL11.glPopMatrix();
|
||||
|
||||
GL11.glPushMatrix(); {
|
||||
double shockwave = 5 * baseScale;
|
||||
GL11.glScaled(shockwave, shockwave, shockwave);
|
||||
float shockTint = (1F - (float) ageScale) * 0.75F;
|
||||
GL11.glColor3f(shockTint, shockTint, shockTint);
|
||||
ResourceManager.sphere_new.renderAll();
|
||||
} GL11.glPopMatrix();
|
||||
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(Entity p_110775_1_) {
|
||||
return null;
|
||||
}
|
||||
@Override protected ResourceLocation getEntityTexture(Entity entity) { return null; }
|
||||
}
|
||||
|
||||
@ -87,9 +87,10 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase {
|
||||
GL11.glTranslated(0, 0, -0.25);
|
||||
renderLaserFlash(gun.lastShot[0], 50, 0.5D, 0xff0080);
|
||||
} else {
|
||||
GL11.glTranslated(0, 0.5, 0);
|
||||
GL11.glRotated(gun.shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(gun.lastShot[0], 75, 5);
|
||||
this.renderMuzzleFlash(gun.lastShot[0], 50, 7.5);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
@ -153,9 +154,10 @@ public class ItemRenderMinigun extends ItemRenderWeaponBase {
|
||||
GL11.glTranslated(0, 0, -0.25);
|
||||
renderLaserFlash(shot, 50, 0.5D, 0xff0080);
|
||||
} else {
|
||||
GL11.glTranslated(0, 0.5, 0);
|
||||
GL11.glRotated(shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(shot, 75, 5);
|
||||
this.renderMuzzleFlash(shot, 50, 7.55);
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@ -73,7 +73,7 @@ public class ItemRenderMinigunDual extends ItemRenderWeaponBase {
|
||||
|
||||
GL11.glRotated(gun.shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(gun.lastShot[index], 75, 5);
|
||||
this.renderMuzzleFlash(gun.lastShot[index], 50, 7.5);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
GL11.glPopMatrix();
|
||||
@ -136,10 +136,11 @@ public class ItemRenderMinigunDual extends ItemRenderWeaponBase {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0, 12.25);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
|
||||
|
||||
GL11.glTranslated(0, 0.5, 0);
|
||||
GL11.glRotated(shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(shot, 75, 5);
|
||||
this.renderMuzzleFlash(shot, 50, 7.5);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
@ -166,10 +167,11 @@ public class ItemRenderMinigunDual extends ItemRenderWeaponBase {
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslated(0, 0, 12.25);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
|
||||
|
||||
GL11.glTranslated(0, 0.5, 0);
|
||||
GL11.glRotated(shotRand * 90, 1, 0, 0);
|
||||
GL11.glScaled(1.5, 1.5, 1.5);
|
||||
this.renderMuzzleFlash(shot, 75, 5);
|
||||
this.renderMuzzleFlash(shot, 50, 7.5);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
|
||||
@ -48,10 +48,10 @@ public class RenderRBMKGauge extends TileEntitySpecialRenderer {
|
||||
GL11.glColor3f(ColorUtil.fr(unit.color), ColorUtil.fg(unit.color), ColorUtil.fb(unit.color));
|
||||
|
||||
double value = unit.lastRenderValue + (unit.renderValue - unit.lastRenderValue) * interp;
|
||||
int lower = Math.min(unit.min, unit.max);
|
||||
int upper = Math.max(unit.min, unit.max);
|
||||
long lower = Math.min(unit.min, unit.max);
|
||||
long upper = Math.max(unit.min, unit.max);
|
||||
if(lower == upper) upper += 1;
|
||||
int range = upper - lower;
|
||||
long range = upper - lower;
|
||||
double angle = (double) (value - lower) / (double) range * 50D;
|
||||
if(unit.min > unit.max) angle = 50 - angle;
|
||||
|
||||
|
||||
@ -52,17 +52,17 @@ public class RenderRBMKGraph extends TileEntitySpecialRenderer {
|
||||
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
|
||||
int height = font.FONT_HEIGHT;
|
||||
|
||||
int lowest = BobMathUtil.min(unit.values);
|
||||
int highest = BobMathUtil.max(unit.values);
|
||||
long lowest = BobMathUtil.min(unit.values);
|
||||
long highest = BobMathUtil.max(unit.values);
|
||||
|
||||
Tessellator tess = Tessellator.instance;
|
||||
tess.startDrawing(GL11.GL_LINES);
|
||||
tess.setColorOpaque_I(0x00ff00);
|
||||
int range = highest - lowest;
|
||||
long range = highest - lowest;
|
||||
for(int v = 0; v < unit.values.length - 1; v++) {
|
||||
for(int j = 0; j < 2; j++) {
|
||||
int k = v + j;
|
||||
int flux = unit.values[k];
|
||||
long flux = unit.values[k];
|
||||
double dx = 0.03225;
|
||||
double dy = 0.5 - 0.03125 + (flux - lowest) * 0.1875D / Math.max(range, 1);
|
||||
double dz = 0.375 - k * 0.75 / (unit.values.length - 1);
|
||||
|
||||
@ -71,7 +71,8 @@ public class RenderRBMKNumitron extends TileEntitySpecialRenderer {
|
||||
else if(c == 'M') {u = 0.1; v = 0.5;}
|
||||
else if(c == 'G') {u = 0.2; v = 0.5;}
|
||||
else if(c == 'T') {u = 0.3; v = 0.5;}
|
||||
else if(c == 'P') {u = 0.4; v = 0.5;} // i would love to say this sucks, but this is actually surprisingly easy to read and probably the most performant way of doing it
|
||||
else if(c == 'P') {u = 0.4; v = 0.5;}
|
||||
else if(c == 'E') {u = 0.5; v = 0.5;} // i would love to say this sucks, but this is actually surprisingly easy to read and probably the most performant way of doing it
|
||||
int charVal = c - '0'; // no string operations, no int parsing, no nothing, we just rawdog shit shit
|
||||
if(charVal >= 0 && charVal <= 9) {u = 0.1 * charVal; v = 0.0;}
|
||||
if(u == -1) {u = 0.8; v = 0.5;}
|
||||
|
||||
@ -3,6 +3,7 @@ package com.hbm.tileentity;
|
||||
import com.hbm.handler.threading.PacketThreading;
|
||||
import com.hbm.packet.toclient.BufPacket;
|
||||
import com.hbm.sound.AudioWrapper;
|
||||
import com.hbm.util.fauxpointtwelve.BlockPos;
|
||||
|
||||
import api.hbm.tile.ILoadedTile;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry;
|
||||
@ -14,6 +15,9 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu
|
||||
|
||||
public boolean isLoaded = true;
|
||||
public boolean muffled = false;
|
||||
public boolean tilted = false;
|
||||
public int tiltBlocksChecked = 0;
|
||||
public int tiltBlocksValid = 0;
|
||||
|
||||
@Override
|
||||
public boolean isLoaded() {
|
||||
@ -39,12 +43,14 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu
|
||||
public void readFromNBT(NBTTagCompound nbt) {
|
||||
super.readFromNBT(nbt);
|
||||
this.muffled = nbt.getBoolean("muffled");
|
||||
this.tilted = nbt.getBoolean("tilted");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbt) {
|
||||
super.writeToNBT(nbt);
|
||||
nbt.setBoolean("muffled", muffled);
|
||||
nbt.setBoolean("tilted", tilted);
|
||||
}
|
||||
|
||||
public float getVolume(float baseVolume) {
|
||||
@ -56,11 +62,13 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu
|
||||
@Override
|
||||
public void serialize(ByteBuf buf) {
|
||||
buf.writeBoolean(muffled);
|
||||
buf.writeBoolean(tilted);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deserialize(ByteBuf buf) {
|
||||
this.muffled = buf.readBoolean();
|
||||
this.tilted = buf.readBoolean();
|
||||
}
|
||||
|
||||
/** Sends a sync packet that uses ByteBuf for efficient information-cramming */
|
||||
@ -84,5 +92,9 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile, IBu
|
||||
|
||||
PacketThreading.createAllAroundThreadedPacket(packet, new NetworkRegistry.TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range));
|
||||
}
|
||||
|
||||
|
||||
public void checkTilt(BlockPos[] floor, boolean extraHeavy) {
|
||||
if(this.worldObj.getTotalWorldTime() % 20 != 0) return;
|
||||
// TBI i need a break
|
||||
}
|
||||
}
|
||||
|
||||
@ -84,11 +84,11 @@ public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIPro
|
||||
/** What channel to read values from */
|
||||
public String rtty = "";
|
||||
/** The minium value handled by the gauge */
|
||||
public int min = 0;
|
||||
public long min = 0;
|
||||
/** The maximum value of the gauge, i.e. where the red area begins */
|
||||
public int max = 100;
|
||||
public long max = 100;
|
||||
/** The current read value of the gauge, i.e. the needle position */
|
||||
public int value;
|
||||
public long value;
|
||||
/** For smoothig */
|
||||
public double renderValue;
|
||||
public double lastRenderValue;
|
||||
@ -134,9 +134,9 @@ public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIPro
|
||||
buf.writeInt(color);
|
||||
BufferUtil.writeString(buf, label);
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
buf.writeInt(min);
|
||||
buf.writeInt(max);
|
||||
buf.writeInt(value);
|
||||
buf.writeLong(min);
|
||||
buf.writeLong(max);
|
||||
buf.writeLong(value);
|
||||
}
|
||||
|
||||
public void deserialize(ByteBuf buf) {
|
||||
@ -145,9 +145,9 @@ public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIPro
|
||||
color = buf.readInt();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
min = buf.readInt();
|
||||
max = buf.readInt();
|
||||
value = buf.readInt();
|
||||
min = buf.readLong();
|
||||
max = buf.readLong();
|
||||
value = buf.readLong();
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
@ -156,9 +156,9 @@ public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIPro
|
||||
this.color = nbt.getInteger("color" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.min = nbt.getInteger("min" + index);
|
||||
this.max = nbt.getInteger("max" + index);
|
||||
this.value = nbt.getInteger("value" + index);
|
||||
this.min = nbt.getLong("min" + index);
|
||||
this.max = nbt.getLong("max" + index);
|
||||
this.value = nbt.getLong("value" + index);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||
@ -167,9 +167,9 @@ public class TileEntityRBMKGauge extends TileEntityLoadedBase implements IGUIPro
|
||||
nbt.setInteger("color" + index, color);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setInteger("min" + index, min);
|
||||
nbt.setInteger("max" + index, max);
|
||||
nbt.setInteger("value" + index, value);
|
||||
nbt.setLong("min" + index, min);
|
||||
nbt.setLong("max" + index, max);
|
||||
nbt.setLong("value" + index, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
/** What channel to read values from */
|
||||
public String rtty = "";
|
||||
/** The current read value on the display */
|
||||
public int[] values = new int[30]; // 2 values/s for 15 seconds
|
||||
public long[] values = new long[30]; // 2 values/s for 15 seconds
|
||||
/** Whether this graph is visible on the panel */
|
||||
public boolean active;
|
||||
|
||||
@ -91,13 +91,13 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
if(rtty == null || rtty.isEmpty()) return;
|
||||
|
||||
RTTYChannel chan = RTTYSystem.listen(worldObj, rtty);
|
||||
int sigVal = 0;
|
||||
long sigVal = 0;
|
||||
|
||||
if(chan != null && chan.timeStamp < worldObj.getTotalWorldTime() - 1) chan = null;
|
||||
|
||||
// always accept new signals
|
||||
if(chan != null && chan.signal != null) {
|
||||
try { sigVal = Integer.parseInt(chan.signal.toString()); } catch(Exception ex) { }
|
||||
try { sigVal = Long.parseLong(chan.signal.toString()); } catch(Exception ex) { }
|
||||
pushValue(sigVal);
|
||||
} else {
|
||||
// if there's no new signal and we're polling, set to 0
|
||||
@ -105,7 +105,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
}
|
||||
}
|
||||
|
||||
public void pushValue(int value) {
|
||||
public void pushValue(long value) {
|
||||
|
||||
for(int i = 1; i < values.length; i++) {
|
||||
values[i - 1] = values[i];
|
||||
@ -120,7 +120,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
// original idea had the system send the min value, max value, and all values
|
||||
// crunched down to single bytes because the graph simply doesn't need this much resolution
|
||||
if(active) for(int i = 0; i < values.length; i++) buf.writeInt(values[i]);
|
||||
if(active) for(int i = 0; i < values.length; i++) buf.writeLong(values[i]);
|
||||
// was overkill though
|
||||
}
|
||||
|
||||
@ -129,7 +129,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
polling = buf.readBoolean();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
if(active) for(int i = 0; i < values.length; i++) values[i] = buf.readInt();
|
||||
if(active) for(int i = 0; i < values.length; i++) values[i] = buf.readLong();
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
@ -137,7 +137,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
this.polling = nbt.getBoolean("polling" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.values = nbt.getIntArray("value" + index);
|
||||
for(int i = 0; i < values.length; i++) this.values[i] = nbt.getLong("value" + index + "_" + i);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||
@ -145,7 +145,7 @@ public class TileEntityRBMKGraph extends TileEntityLoadedBase implements IGUIPro
|
||||
nbt.setBoolean("polling" + index, polling);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setIntArray("value" + index, values);
|
||||
for(int i = 0; i < values.length; i++) nbt.setLong("value" + index + "_" + i, values[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -78,7 +78,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
/** What channel to read values from */
|
||||
public String rtty = "";
|
||||
/** The current read value on the display */
|
||||
public int value;
|
||||
public long value;
|
||||
/** Whether this display is visible on the panel */
|
||||
public boolean active;
|
||||
|
||||
@ -91,13 +91,13 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
if(rtty == null || rtty.isEmpty()) return;
|
||||
|
||||
RTTYChannel chan = RTTYSystem.listen(worldObj, rtty);
|
||||
int sigVal = 0;
|
||||
long sigVal = 0;
|
||||
|
||||
if(chan != null && chan.timeStamp < worldObj.getTotalWorldTime() - 1) chan = null;
|
||||
|
||||
// always accept new signals
|
||||
if(chan != null && chan.signal != null) {
|
||||
try { sigVal = Integer.parseInt(chan.signal.toString()); } catch(Exception ex) { }
|
||||
try { sigVal = Long.parseLong(chan.signal.toString()); } catch(Exception ex) { }
|
||||
this.value = sigVal;
|
||||
} else {
|
||||
// if there's no new signal and we're polling, set to 0
|
||||
@ -110,7 +110,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
buf.writeBoolean(polling);
|
||||
BufferUtil.writeString(buf, label);
|
||||
BufferUtil.writeString(buf, rtty);
|
||||
buf.writeInt(value);
|
||||
buf.writeLong(value);
|
||||
}
|
||||
|
||||
public void deserialize(ByteBuf buf) {
|
||||
@ -118,7 +118,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
polling = buf.readBoolean();
|
||||
label = BufferUtil.readString(buf);
|
||||
rtty = BufferUtil.readString(buf);
|
||||
value = buf.readInt();
|
||||
value = buf.readLong();
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbt, int index) {
|
||||
@ -126,7 +126,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
this.polling = nbt.getBoolean("polling" + index);
|
||||
this.label = nbt.getString("label" + index);
|
||||
this.rtty = nbt.getString("rtty" + index);
|
||||
this.value = nbt.getInteger("value" + index);
|
||||
this.value = nbt.getLong("value" + index);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbt, int index) {
|
||||
@ -134,7 +134,7 @@ public class TileEntityRBMKNumitron extends TileEntityLoadedBase implements IGUI
|
||||
nbt.setBoolean("polling" + index, polling);
|
||||
nbt.setString("label" + index, label);
|
||||
nbt.setString("rtty" + index, rtty);
|
||||
nbt.setInteger("value" + index, value);
|
||||
nbt.setLong("value" + index, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -30,8 +30,8 @@ public class RTTYSystem {
|
||||
Object existing = newMessages.get(identifier);
|
||||
if(NumberUtils.isNumber("" + existing)) {
|
||||
try {
|
||||
int first = Integer.parseInt("" + signal);
|
||||
int second = Integer.parseInt("" + existing);
|
||||
long first = Long.parseLong("" + signal);
|
||||
long second = Long.parseLong("" + existing);
|
||||
newMessages.put(identifier, "" + (first + second));
|
||||
return;
|
||||
} catch(Exception ex) { }
|
||||
|
||||
@ -87,9 +87,9 @@ public class TileEntityRadioTorchLogic extends TileEntityLoadedBase implements I
|
||||
|
||||
public boolean parseSignal(String signal, int index) {
|
||||
if(conditions[index] <= 5) { //if a non-string operator
|
||||
int sig = 0;
|
||||
int map = 0;
|
||||
try { sig = Integer.parseInt(signal); map = Integer.parseInt(mapping[index]); } catch(Exception x) {
|
||||
long sig = 0;
|
||||
long map = 0;
|
||||
try { sig = Long.parseLong(signal); map = Long.parseLong(mapping[index]); } catch(Exception x) {
|
||||
return false; //not a valid input; skip! slightly annoying about the mapping but we'll restrict input anyway
|
||||
};
|
||||
|
||||
|
||||
@ -2145,6 +2145,7 @@ item.grenade_filling.nuclear.name=Atomare Granatenladung
|
||||
item.grenade_filling.nuclear_demo.name=Atomare Abrissgranatenladung
|
||||
item.grenade_filling.plasma.name=Plasmagranatenladung
|
||||
item.grenade_filling.powder.name=Pulverladung
|
||||
item.grenade_filling.schrab.name=Schrabidiumgranatenladung
|
||||
item.grenade_filling.wp.name=Weiße Phosphorgranatenladung
|
||||
item.grenade_fuze.airburst.name=Luftdetonationszünder
|
||||
item.grenade_fuze.impact.name=Aufschlagzünder
|
||||
|
||||
@ -2973,6 +2973,7 @@ item.grenade_filling.nuclear.name=Nuclear Grenade Charge
|
||||
item.grenade_filling.nuclear_demo.name=Nuclear Demolition Grenade Charge
|
||||
item.grenade_filling.plasma.name=Plasma Grenade Charge
|
||||
item.grenade_filling.powder.name=Gunpowder Grenade Charge
|
||||
item.grenade_filling.schrab.name=Schrabidium Grenade Charge
|
||||
item.grenade_filling.wp.name=White Phosphorus Grenade Charge
|
||||
item.grenade_fuze.airburst.name=Airburst Grenade Fuze
|
||||
item.grenade_fuze.impact.name=Impact Grenade Fuze
|
||||
|
||||
@ -2645,50 +2645,6 @@ item.glowing_stew.name=发光真菌煲
|
||||
item.glyphid_meat.name=异虫肉
|
||||
item.glyphid_meat_grilled.name=熟异虫肉
|
||||
item.goggles.name=护目镜
|
||||
item.grenade_aschrab.name=可抛反Sa326
|
||||
item.grenade_black_hole.name=黑洞手榴弹
|
||||
item.grenade_breach.name=破甲手榴弹
|
||||
item.grenade_burst.name=挖掘手榴弹
|
||||
item.grenate_cats.name=猫猫手榴弹
|
||||
item.grenade_cloud.name=一罐云
|
||||
item.grenade_cluster.name=集束手榴弹
|
||||
item.grenade_electric.name=闪电炸弹
|
||||
item.grenade_fire.name=燃烧破片手榴弹
|
||||
item.grenade_flare.name=信号弹
|
||||
item.grenade_frag.name=破片手榴弹
|
||||
item.grenade_gas.name=毒气手榴弹
|
||||
item.grenade_gascan.name=可抛油桶
|
||||
item.grenade_generic.name=手榴弹
|
||||
item.grenade_if_bouncy.name=IF-弹性手榴弹
|
||||
item.grenade_if_brimstone.name=IF-可抛硫磺矿
|
||||
item.grenade_if_concussion.name=IF-震荡手榴弹
|
||||
item.grenade_if_generic.name=IF-手榴弹
|
||||
item.grenade_if_he.name=IF-HE手榴弹
|
||||
item.grenade_if_hopwire.name=IF-旋涡热线
|
||||
item.grenade_if_impact.name=IF-冲击手榴弹
|
||||
item.grenade_if_incendiary.name=IF-燃烧手榴弹
|
||||
item.grenade_if_mystery.name=IF-M-手榴弹
|
||||
item.grenade_if_null.name=IF-清除手榴弹
|
||||
item.grenade_if_spark.name=IF-S-手榴弹
|
||||
item.grenade_if_sticky.name=IF-粘性手榴弹
|
||||
item.grenade_if_toxic.name=IF-毒物手榴弹
|
||||
item.grenade_kit.name=手榴弹 套件
|
||||
item.grenade_kyiv.name=基辅特供
|
||||
item.grenade_lemon.name=可燃柠檬
|
||||
item.grenade_mirv.name=MIRV型破片手榴弹
|
||||
item.grenade_mk2.name=Mk2手榴弹“菠萝大使”
|
||||
item.grenade_nuclear.name=核子手榴弹
|
||||
item.grenade_nuke.name=MkVI钻地手榴弹
|
||||
item.grenade_pink_cloud.name=一罐粉雾
|
||||
item.grenade_plasma.name=等离子手榴弹
|
||||
item.grenade_poison.name=剧毒手榴弹
|
||||
item.grenade_pulse.name=脉冲手榴弹
|
||||
item.grenade_schrabidium.name=Sa326手榴弹
|
||||
item.grenade_shrapnel.name=榴霰弹手榴弹
|
||||
item.grenade_smart.name=智能手榴弹
|
||||
item.grenade_strong.name=增强型手榴弹
|
||||
item.grenade_tau.name=陶子手榴弹
|
||||
item.grenade_zomg.name=负能量湮灭手榴弹
|
||||
item.glyphid_gland.name=囊腺
|
||||
item.glyphid_gland_empty.name=异虫腺体
|
||||
item.gun_am180.name=.22口径冲锋枪
|
||||
@ -6457,3 +6413,30 @@ tile.fusion_plasma_forge.name=等离子锻炉
|
||||
tile.rbmk_display_blank.name=无线红石信号空白面板
|
||||
tile.rbmk_graph.name=无线红石信号图表面板
|
||||
tile.rbmk_numitron.name=无线红石信号数字显示器
|
||||
item.grenade_extra.frag_sleeve.name=手榴弹升级 - 预制破片套筒
|
||||
item.grenade_extra.glue.name=手榴弹升级 - 粘性涂层
|
||||
item.grenade_extra.proxy_fuze.name=手榴弹升级 - 近炸引信
|
||||
item.grenade_extra.triplex.name=手榴弹升级 - 三联体
|
||||
item.grenade_filling.cluster.name=集束手榴弹装药
|
||||
item.grenade_filling.cluster_heavy.name=重型集束手榴弹装药
|
||||
item.grenade_filling.demo.name=破坏者手榴弹装药
|
||||
item.grenade_filling.emp.name=电磁脉冲手榴弹装药
|
||||
item.grenade_filling.he.name=高爆手榴弹装药
|
||||
item.grenade_filling.inc.name=燃烧手榴弹装药
|
||||
item.grenade_filling.laser.name=激光手榴弹装药
|
||||
item.grenade_filling.nuclear.name=核子手榴弹装药
|
||||
item.grenade_filling.nuclear_demo.name=破坏性核子手榴弹装药
|
||||
item.grenade_filling.plasma.name=等离子手榴弹装药
|
||||
item.grenade_filling.powder.name=火药手榴弹装药
|
||||
item.grenade_filling.schrab.name=Sa326手榴弹装药
|
||||
item.grenade_filling.wp.name=白磷手榴弹装药
|
||||
item.grenade_fuze.airburst.name=手榴弹空爆引信
|
||||
item.grenade_fuze.impact.name=手榴弹碰炸引信
|
||||
item.grenade_fuze.s3.name=3秒延时引信
|
||||
item.grenade_fuze.s7.name=7秒延时引信
|
||||
item.grenade_fuze.s15.name=15秒延时引信
|
||||
item.grenade_shell.frag.name=紧凑型手榴弹外壳
|
||||
item.grenade_shell.nuke.name=核子手榴弹外壳
|
||||
item.grenade_shell.stick.name=木柄手榴弹外壳
|
||||
item.grenade_shell.tech.name=高科技手榴弹外壳
|
||||
item.grenade_universal.name=手榴弹
|
||||
|
||||
884
src/main/resources/assets/hbm/models/sphere_new.obj
Normal file
884
src/main/resources/assets/hbm/models/sphere_new.obj
Normal file
@ -0,0 +1,884 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: 'sphere_new.blend'
|
||||
# www.blender.org
|
||||
o Icosphere
|
||||
v 0.000000 -0.500000 0.000000
|
||||
v 0.361804 -0.223610 0.262863
|
||||
v -0.138194 -0.223610 0.425325
|
||||
v -0.447213 -0.223608 0.000000
|
||||
v -0.138194 -0.223610 -0.425325
|
||||
v 0.361804 -0.223610 -0.262863
|
||||
v 0.138194 0.223610 0.425325
|
||||
v -0.361804 0.223610 0.262863
|
||||
v -0.361804 0.223610 -0.262863
|
||||
v 0.138194 0.223610 -0.425325
|
||||
v 0.447213 0.223608 0.000000
|
||||
v 0.000000 0.500000 0.000000
|
||||
v -0.116411 -0.328760 0.358282
|
||||
v -0.081228 -0.425327 0.249998
|
||||
v -0.038803 -0.483975 0.119426
|
||||
v 0.101590 -0.483975 0.073809
|
||||
v 0.212661 -0.425327 0.154506
|
||||
v 0.304773 -0.328759 0.221428
|
||||
v 0.265970 -0.251151 0.340856
|
||||
v 0.131434 -0.262869 0.404506
|
||||
v -0.014820 -0.251151 0.432092
|
||||
v 0.406365 -0.251150 -0.147619
|
||||
v 0.425324 -0.262868 0.000000
|
||||
v 0.406365 -0.251150 0.147619
|
||||
v 0.101590 -0.483975 -0.073809
|
||||
v 0.212661 -0.425327 -0.154506
|
||||
v 0.304773 -0.328759 -0.221428
|
||||
v -0.376721 -0.328757 0.000000
|
||||
v -0.262865 -0.425326 0.000000
|
||||
v -0.125573 -0.483974 0.000000
|
||||
v -0.241986 -0.251151 0.358282
|
||||
v -0.344095 -0.262868 0.249998
|
||||
v -0.415525 -0.251149 0.119427
|
||||
v -0.116411 -0.328760 -0.358282
|
||||
v -0.081228 -0.425327 -0.249998
|
||||
v -0.038803 -0.483975 -0.119426
|
||||
v -0.415525 -0.251149 -0.119427
|
||||
v -0.344095 -0.262868 -0.249998
|
||||
v -0.241986 -0.251151 -0.358282
|
||||
v -0.014820 -0.251151 -0.432092
|
||||
v 0.131434 -0.262869 -0.404506
|
||||
v 0.265970 -0.251151 -0.340856
|
||||
v 0.478313 0.125575 0.073809
|
||||
v 0.475529 -0.000000 0.154506
|
||||
v 0.430349 -0.125575 0.221429
|
||||
v 0.430349 -0.125575 -0.221429
|
||||
v 0.475529 0.000000 -0.154506
|
||||
v 0.478313 0.125575 -0.073809
|
||||
v 0.077608 0.125576 0.477711
|
||||
v 0.000000 -0.000000 0.500000
|
||||
v -0.077608 -0.125576 0.477711
|
||||
v 0.343579 -0.125576 0.340858
|
||||
v 0.293893 0.000000 0.404508
|
||||
v 0.218003 0.125576 0.432094
|
||||
v -0.430349 0.125575 0.221429
|
||||
v -0.475529 -0.000000 0.154506
|
||||
v -0.478313 -0.125575 0.073809
|
||||
v -0.218003 -0.125576 0.432094
|
||||
v -0.293893 0.000000 0.404508
|
||||
v -0.343579 0.125576 0.340858
|
||||
v -0.343579 0.125576 -0.340858
|
||||
v -0.293893 -0.000000 -0.404508
|
||||
v -0.218003 -0.125576 -0.432094
|
||||
v -0.478313 -0.125575 -0.073809
|
||||
v -0.475529 0.000000 -0.154506
|
||||
v -0.430349 0.125575 -0.221429
|
||||
v 0.218003 0.125576 -0.432094
|
||||
v 0.293893 -0.000000 -0.404508
|
||||
v 0.343579 -0.125576 -0.340858
|
||||
v -0.077608 -0.125576 -0.477711
|
||||
v 0.000000 0.000000 -0.500000
|
||||
v 0.077608 0.125576 -0.477711
|
||||
v 0.415525 0.251149 0.119427
|
||||
v 0.344095 0.262868 0.249998
|
||||
v 0.241986 0.251151 0.358282
|
||||
v 0.014820 0.251151 0.432092
|
||||
v -0.131434 0.262869 0.404506
|
||||
v -0.265970 0.251151 0.340856
|
||||
v -0.406365 0.251150 0.147619
|
||||
v -0.425324 0.262868 0.000000
|
||||
v -0.406365 0.251150 -0.147619
|
||||
v -0.265970 0.251151 -0.340856
|
||||
v -0.131434 0.262869 -0.404506
|
||||
v 0.014820 0.251151 -0.432092
|
||||
v 0.241986 0.251151 -0.358282
|
||||
v 0.344095 0.262868 -0.249998
|
||||
v 0.415525 0.251149 -0.119427
|
||||
v 0.038803 0.483975 0.119426
|
||||
v 0.081228 0.425327 0.249998
|
||||
v 0.116411 0.328760 0.358282
|
||||
v 0.376721 0.328757 0.000000
|
||||
v 0.262865 0.425326 0.000000
|
||||
v 0.125573 0.483974 0.000000
|
||||
v -0.101590 0.483975 0.073809
|
||||
v -0.212661 0.425327 0.154506
|
||||
v -0.304773 0.328759 0.221428
|
||||
v -0.101590 0.483975 -0.073809
|
||||
v -0.212661 0.425327 -0.154506
|
||||
v -0.304773 0.328759 -0.221428
|
||||
v 0.038803 0.483975 -0.119426
|
||||
v 0.081228 0.425327 -0.249998
|
||||
v 0.116411 0.328760 -0.358282
|
||||
v 0.180900 0.447215 -0.131431
|
||||
v 0.319097 0.361805 -0.131432
|
||||
v 0.223605 0.361806 -0.262864
|
||||
v -0.069099 0.447215 -0.212660
|
||||
v -0.026395 0.361806 -0.344092
|
||||
v -0.180902 0.361806 -0.293889
|
||||
v -0.223605 0.447215 0.000000
|
||||
v -0.335408 0.361805 -0.081229
|
||||
v -0.335408 0.361805 0.081229
|
||||
v -0.069099 0.447215 0.212660
|
||||
v -0.180902 0.361806 0.293889
|
||||
v -0.026395 0.361806 0.344092
|
||||
v 0.180900 0.447215 0.131431
|
||||
v 0.223605 0.361806 0.262864
|
||||
v 0.319097 0.361805 0.131432
|
||||
v 0.430902 0.138198 -0.212661
|
||||
v 0.404510 0.000000 -0.293891
|
||||
v 0.335410 0.138199 -0.344095
|
||||
v -0.069099 0.138199 -0.475528
|
||||
v -0.154508 -0.000000 -0.475528
|
||||
v -0.223608 0.138199 -0.425324
|
||||
v -0.473607 0.138198 -0.081229
|
||||
v -0.500000 0.000000 0.000000
|
||||
v -0.473606 0.138198 0.081229
|
||||
v -0.223608 0.138198 0.425324
|
||||
v -0.154509 -0.000000 0.475528
|
||||
v -0.069100 0.138198 0.475528
|
||||
v 0.335410 0.138198 0.344095
|
||||
v 0.404509 -0.000001 0.293891
|
||||
v 0.430902 0.138197 0.212662
|
||||
v 0.154509 -0.000000 -0.475528
|
||||
v 0.223608 -0.138199 -0.425324
|
||||
v 0.069100 -0.138199 -0.475527
|
||||
v -0.404509 -0.000000 -0.293892
|
||||
v -0.335409 -0.138199 -0.344095
|
||||
v -0.430902 -0.138198 -0.212662
|
||||
v -0.404509 0.000000 0.293892
|
||||
v -0.430902 -0.138198 0.212662
|
||||
v -0.335410 -0.138199 0.344095
|
||||
v 0.154509 0.000000 0.475528
|
||||
v 0.069100 -0.138199 0.475527
|
||||
v 0.223608 -0.138199 0.425324
|
||||
v 0.500000 0.000000 0.000000
|
||||
v 0.473607 -0.138198 0.081229
|
||||
v 0.473607 -0.138198 -0.081229
|
||||
v 0.180902 -0.361806 -0.293890
|
||||
v 0.069098 -0.447215 -0.212661
|
||||
v 0.026395 -0.361805 -0.344093
|
||||
v -0.223605 -0.361806 -0.262864
|
||||
v -0.180901 -0.447214 -0.131431
|
||||
v -0.319097 -0.361805 -0.131431
|
||||
v -0.319097 -0.361805 0.131432
|
||||
v -0.180901 -0.447214 0.131432
|
||||
v -0.223605 -0.361805 0.262864
|
||||
v 0.335409 -0.361805 -0.081228
|
||||
v 0.335409 -0.361805 0.081229
|
||||
v 0.223605 -0.447214 0.000000
|
||||
v 0.026395 -0.361806 0.344093
|
||||
v 0.069099 -0.447215 0.212660
|
||||
v 0.180902 -0.361805 0.293890
|
||||
vt 0.787160 0.536245
|
||||
vt 0.792325 0.589983
|
||||
vt 0.739570 0.554511
|
||||
vt 0.130562 0.591541
|
||||
vt 0.149011 0.639205
|
||||
vt 0.088999 0.616607
|
||||
vt 0.754959 0.492883
|
||||
vt 0.817225 0.490270
|
||||
vt 0.840318 0.550280
|
||||
vt 0.088462 0.556147
|
||||
vt 0.304269 0.139999
|
||||
vt 0.342054 0.129306
|
||||
vt 0.327324 0.187536
|
||||
vt 0.081987 0.083916
|
||||
vt 0.132710 0.088317
|
||||
vt 0.087846 0.134425
|
||||
vt 0.459716 0.380996
|
||||
vt 0.514864 0.378789
|
||||
vt 0.478427 0.423140
|
||||
vt 0.486546 0.038027
|
||||
vt 0.534785 0.016374
|
||||
vt 0.527416 0.068349
|
||||
vt 0.148143 0.541379
|
||||
vt 0.275090 0.181668
|
||||
vt 0.039091 0.114812
|
||||
vt 0.417763 0.415353
|
||||
vt 0.465001 0.084097
|
||||
vt 0.213341 0.380996
|
||||
vt 0.158193 0.378789
|
||||
vt 0.196338 0.343593
|
||||
vt 0.673057 0.906084
|
||||
vt 0.676542 0.853653
|
||||
vt 0.713212 0.902164
|
||||
vt 0.542495 0.591541
|
||||
vt 0.584058 0.616607
|
||||
vt 0.524046 0.639205
|
||||
vt 0.646323 0.202233
|
||||
vt 0.684108 0.212927
|
||||
vt 0.640979 0.254782
|
||||
vt 0.424042 0.258316
|
||||
vt 0.474764 0.253915
|
||||
vt 0.453736 0.302024
|
||||
vt 0.918098 0.821767
|
||||
vt 0.933487 0.883395
|
||||
vt 0.885897 0.865129
|
||||
vt 0.948894 0.772666
|
||||
vt 0.971831 0.836789
|
||||
vt 0.515867 0.298348
|
||||
vt 0.494009 0.342233
|
||||
vt 0.981106 0.901672
|
||||
vt 1.000000 0.786279
|
||||
vt 0.584555 0.281017
|
||||
vt 0.561413 0.333962
|
||||
vt 0.624662 0.309268
|
||||
vt 0.538028 0.241526
|
||||
vt 0.599593 0.222420
|
||||
vt 0.880732 0.918867
|
||||
vt 0.930708 0.943650
|
||||
vt 0.677565 0.270570
|
||||
vt 0.870673 0.975927
|
||||
vt 0.975813 0.960962
|
||||
vt 0.393289 0.634168
|
||||
vt 0.460051 0.642737
|
||||
vt 0.433516 0.685334
|
||||
vt 0.917754 1.000000
|
||||
vt 0.500094 0.685334
|
||||
vt 0.342054 0.615845
|
||||
vt 0.366165 0.577139
|
||||
vt 0.423578 0.588010
|
||||
vt 0.487493 0.592712
|
||||
vt 0.832739 0.879164
|
||||
vt 0.819833 0.938994
|
||||
vt 0.566322 0.669034
|
||||
vt 0.770210 0.892816
|
||||
vt 0.806879 0.995344
|
||||
vt 0.754062 0.951650
|
||||
vt 0.625717 0.638030
|
||||
vt 0.745570 1.000000
|
||||
vt 0.701441 0.953367
|
||||
vt 0.091743 0.300378
|
||||
vt 0.144492 0.304206
|
||||
vt 0.134872 0.342233
|
||||
vt 0.855833 0.819153
|
||||
vt 0.792431 0.829257
|
||||
vt 0.726660 0.841912
|
||||
vt 0.818551 0.767194
|
||||
vt 0.752074 0.775869
|
||||
vt 0.782492 0.722131
|
||||
vt 0.693447 0.791267
|
||||
vt 0.722728 0.733630
|
||||
vt 0.755301 0.692362
|
||||
vt 0.886370 0.766090
|
||||
vt 0.846014 0.712703
|
||||
vt 0.914539 0.715580
|
||||
vt 0.969291 0.729973
|
||||
vt 0.808088 0.676233
|
||||
vt 0.094872 0.387714
|
||||
vt 0.132649 0.342233
|
||||
vt 0.872132 0.671117
|
||||
vt 0.932621 0.681462
|
||||
vt 0.429049 0.333273
|
||||
vt 0.395876 0.285650
|
||||
vt 0.429900 0.207808
|
||||
vt 0.444114 0.145008
|
||||
vt 0.489635 0.194661
|
||||
vt 0.508950 0.126587
|
||||
vt 0.558324 0.177330
|
||||
vt 0.574768 0.112043
|
||||
vt 0.617145 0.160565
|
||||
vt 0.669378 0.154697
|
||||
vt 0.374921 0.464254
|
||||
vt 0.394244 0.526508
|
||||
vt 0.342921 0.518019
|
||||
vt 0.435426 0.470015
|
||||
vt 0.461006 0.535077
|
||||
vt 0.501911 0.480554
|
||||
vt 0.524914 0.541379
|
||||
vt 0.584595 0.556147
|
||||
vt 0.626842 0.511469
|
||||
vt 0.632957 0.577628
|
||||
vt 0.044552 0.176730
|
||||
vt 0.000000 0.156168
|
||||
vt 0.673057 0.528819
|
||||
vt 0.063867 0.244803
|
||||
vt 0.010211 0.223219
|
||||
vt 0.036740 0.285651
|
||||
vt 0.102060 0.197224
|
||||
vt 0.122947 0.258136
|
||||
vt 0.185362 0.273884
|
||||
vt 0.192731 0.325859
|
||||
vt 0.232714 0.230190
|
||||
vt 0.243695 0.290176
|
||||
vt 0.293069 0.239434
|
||||
vt 0.248139 0.338990
|
||||
vt 0.301179 0.296634
|
||||
vt 0.673822 0.745835
|
||||
vt 0.342054 0.242472
|
||||
vt 0.298136 0.464255
|
||||
vt 0.255295 0.415354
|
||||
vt 0.305555 0.407342
|
||||
vt 0.256350 0.366191
|
||||
vt 0.194631 0.423140
|
||||
vt 0.171146 0.480554
|
||||
vt 0.130769 0.429776
|
||||
vt 0.105189 0.494838
|
||||
vt 0.065089 0.446029
|
||||
vt 0.038832 0.408327
|
||||
vt 0.046216 0.511469
|
||||
vt 0.015588 0.467446
|
||||
vt 0.381145 0.227421
|
||||
vt 0.635123 0.102799
|
||||
vt 0.585749 0.052056
|
||||
vt 0.684108 0.099760
|
||||
vt 0.643233 0.045599
|
||||
vt 0.367502 0.407341
|
||||
vt 0.590193 0.003243
|
||||
vt 0.979610 0.462383
|
||||
vt 0.950329 0.404747
|
||||
vt 0.999235 0.416952
|
||||
vt 0.416707 0.366190
|
||||
vt 0.567868 0.494838
|
||||
vt 0.542288 0.429775
|
||||
vt 0.607968 0.446029
|
||||
vt 0.657469 0.467446
|
||||
vt 0.578186 0.387714
|
||||
vt 0.634226 0.408327
|
||||
vt 0.053822 0.056582
|
||||
vt 0.166896 0.215646
|
||||
vt 0.147581 0.147572
|
||||
vt 0.216270 0.164903
|
||||
vt 0.195974 0.100707
|
||||
vt 0.257539 0.119813
|
||||
vt 0.237631 0.470016
|
||||
vt 0.330136 0.518020
|
||||
vt 0.278813 0.526509
|
||||
vt 0.212051 0.535078
|
||||
vt 0.306892 0.577139
|
||||
vt 0.249479 0.588010
|
||||
vt 0.185564 0.592712
|
||||
vt 0.342054 0.186065
|
||||
vt 0.386606 0.165503
|
||||
vt 0.040100 0.577628
|
||||
vt 0.000000 0.528819
|
||||
vt 0.352265 0.119014
|
||||
vt 0.405921 0.097430
|
||||
vt 0.047340 0.638030
|
||||
vt 0.378794 0.056582
|
||||
vt 0.433797 0.041855
|
||||
vt 0.959845 0.573281
|
||||
vt 0.996515 0.524769
|
||||
vt 1.000000 0.577201
|
||||
vt 0.902847 0.563932
|
||||
vt 0.946397 0.513029
|
||||
vt 0.880626 0.500373
|
||||
vt 0.920983 0.446985
|
||||
vt 0.854506 0.438310
|
||||
vt 0.890565 0.393247
|
||||
vt 0.917756 0.363479
|
||||
vt 0.476719 0.343593
|
||||
vt 0.827043 0.383819
|
||||
vt 0.786687 0.437206
|
||||
vt 0.864969 0.347349
|
||||
vt 0.540409 0.342233
|
||||
vt 0.758518 0.386696
|
||||
vt 0.800925 0.342233
|
||||
vt 0.740436 0.352578
|
||||
vt 0.724164 0.443782
|
||||
vt 0.703767 0.401089
|
||||
vt 0.086995 0.008960
|
||||
vt 0.111681 0.040209
|
||||
vt 0.151955 0.000000
|
||||
vt 0.173812 0.043885
|
||||
vt 0.701226 0.507905
|
||||
vt 0.673057 0.457395
|
||||
vt 0.219358 0.008271
|
||||
vt 0.242501 0.061216
|
||||
vt 0.691951 0.572788
|
||||
vt 0.282608 0.032965
|
||||
vt 0.298925 0.087451
|
||||
vt 0.476926 0.000000
|
||||
vt 0.927487 0.671116
|
||||
vt 0.918995 0.622766
|
||||
vt 0.971615 0.624484
|
||||
vt 0.106735 0.669034
|
||||
vt 0.866177 0.666461
|
||||
vt 0.853224 0.610110
|
||||
vt 0.172963 0.685334
|
||||
vt 0.802383 0.647043
|
||||
vt 0.335511 0.071663
|
||||
vt 0.742349 0.614766
|
||||
vt 0.331003 0.615846
|
||||
vt 0.279768 0.634168
|
||||
vt 0.697244 0.632078
|
||||
vt 0.239540 0.685334
|
||||
vt 0.213006 0.642737
|
||||
vt 0.755302 0.671116
|
||||
vn 0.0000 -1.0000 0.0000
|
||||
vn 0.2109 -0.9654 0.1533
|
||||
vn -0.0806 -0.9654 0.2480
|
||||
vn 0.7236 -0.4472 0.5257
|
||||
vn 0.6042 -0.6650 0.4390
|
||||
vn 0.8152 -0.5038 0.2857
|
||||
vn -0.2608 -0.9654 0.0000
|
||||
vn -0.0806 -0.9654 -0.2480
|
||||
vn 0.2109 -0.9654 -0.1533
|
||||
vn 0.8650 -0.2430 0.4390
|
||||
vn -0.2764 -0.4472 0.8506
|
||||
vn -0.0198 -0.5038 0.8636
|
||||
vn -0.1502 -0.2430 0.9583
|
||||
vn -0.8944 -0.4472 0.0000
|
||||
vn -0.8274 -0.5038 0.2480
|
||||
vn -0.9578 -0.2430 0.1533
|
||||
vn -0.2764 -0.4472 -0.8506
|
||||
vn -0.4915 -0.5038 -0.7103
|
||||
vn -0.4417 -0.2430 -0.8636
|
||||
vn 0.7236 -0.4472 -0.5257
|
||||
vn 0.5236 -0.5038 -0.6870
|
||||
vn 0.6848 -0.2430 -0.6870
|
||||
vn 0.6848 -0.2430 0.6870
|
||||
vn -0.4417 -0.2430 0.8636
|
||||
vn -0.9578 -0.2430 -0.1533
|
||||
vn -0.1502 -0.2430 -0.9583
|
||||
vn 0.8650 -0.2430 -0.4390
|
||||
vn 0.2764 0.4472 0.8506
|
||||
vn 0.4915 0.5038 0.7103
|
||||
vn 0.2308 0.6650 0.7103
|
||||
vn -0.7236 0.4472 0.5257
|
||||
vn -0.5236 0.5038 0.6870
|
||||
vn -0.6042 0.6650 0.4390
|
||||
vn -0.7236 0.4472 -0.5257
|
||||
vn -0.8152 0.5038 -0.2857
|
||||
vn -0.6042 0.6650 -0.4390
|
||||
vn 0.2764 0.4472 -0.8506
|
||||
vn 0.0198 0.5038 -0.8636
|
||||
vn 0.2308 0.6650 -0.7103
|
||||
vn 0.8944 0.4472 0.0000
|
||||
vn 0.8274 0.5038 -0.2480
|
||||
vn 0.7468 0.6650 0.0000
|
||||
vn 0.2608 0.9654 0.0000
|
||||
vn 0.0806 0.9654 -0.2480
|
||||
vn 0.0000 1.0000 0.0000
|
||||
vn 0.5257 0.8506 0.0000
|
||||
vn 0.3682 0.8904 -0.2675
|
||||
vn 0.6317 0.7275 -0.2675
|
||||
vn 0.1625 0.8506 -0.5000
|
||||
vn 0.4496 0.7275 -0.5181
|
||||
vn 0.6882 0.5257 -0.5000
|
||||
vn 0.4915 0.5038 -0.7103
|
||||
vn -0.2109 0.9654 -0.1533
|
||||
vn -0.1406 0.8904 -0.4328
|
||||
vn -0.0592 0.7275 -0.6835
|
||||
vn -0.4253 0.8506 -0.3090
|
||||
vn -0.3538 0.7275 -0.5877
|
||||
vn -0.2629 0.5257 -0.8090
|
||||
vn -0.5236 0.5038 -0.6870
|
||||
vn -0.2109 0.9654 0.1533
|
||||
vn -0.4551 0.8904 0.0000
|
||||
vn -0.6683 0.7275 -0.1549
|
||||
vn -0.4253 0.8506 0.3090
|
||||
vn -0.6683 0.7275 0.1549
|
||||
vn -0.8506 0.5257 0.0000
|
||||
vn -0.8152 0.5038 0.2857
|
||||
vn 0.0806 0.9654 0.2480
|
||||
vn -0.1406 0.8904 0.4328
|
||||
vn -0.3538 0.7275 0.5877
|
||||
vn 0.1625 0.8506 0.5000
|
||||
vn -0.0592 0.7275 0.6835
|
||||
vn -0.2629 0.5257 0.8090
|
||||
vn 0.0198 0.5038 0.8636
|
||||
vn 0.3682 0.8904 0.2675
|
||||
vn 0.4496 0.7275 0.5181
|
||||
vn 0.6317 0.7275 0.2675
|
||||
vn 0.6882 0.5257 0.5000
|
||||
vn 0.8274 0.5038 0.2480
|
||||
vn 0.9578 0.2430 -0.1533
|
||||
vn 0.9510 0.0000 -0.3090
|
||||
vn 0.8593 0.2724 -0.4328
|
||||
vn 0.8090 0.0089 -0.5878
|
||||
vn 0.6772 0.2724 -0.6835
|
||||
vn 0.5878 0.0000 -0.8090
|
||||
vn 0.4417 0.2430 -0.8636
|
||||
vn 0.1502 0.2430 -0.9583
|
||||
vn 0.0000 0.0000 -1.0000
|
||||
vn -0.1461 0.2724 -0.9510
|
||||
vn -0.3090 0.0089 -0.9510
|
||||
vn -0.4407 0.2724 -0.8553
|
||||
vn -0.5878 0.0000 -0.8090
|
||||
vn -0.6848 0.2430 -0.6870
|
||||
vn -0.8650 0.2430 -0.4390
|
||||
vn -0.9510 0.0000 -0.3090
|
||||
vn -0.9496 0.2724 -0.1549
|
||||
vn -0.9999 0.0089 0.0000
|
||||
vn -0.9496 0.2724 0.1549
|
||||
vn -0.9510 0.0000 0.3090
|
||||
vn -0.8650 0.2430 0.4390
|
||||
vn -0.6848 0.2430 0.6870
|
||||
vn -0.5878 0.0000 0.8090
|
||||
vn -0.4407 0.2724 0.8553
|
||||
vn -0.3090 0.0089 0.9510
|
||||
vn -0.1461 0.2724 0.9510
|
||||
vn 0.0000 0.0000 1.0000
|
||||
vn 0.1502 0.2430 0.9583
|
||||
vn 0.4417 0.2430 0.8636
|
||||
vn 0.5878 0.0000 0.8090
|
||||
vn 0.6772 0.2724 0.6835
|
||||
vn 0.8090 0.0089 0.5878
|
||||
vn 0.8593 0.2724 0.4328
|
||||
vn 0.9510 0.0000 0.3090
|
||||
vn 0.9578 0.2430 0.1533
|
||||
vn 0.3090 -0.0089 -0.9510
|
||||
vn 0.4407 -0.2724 -0.8553
|
||||
vn 0.1461 -0.2724 -0.9510
|
||||
vn 0.2629 -0.5257 -0.8090
|
||||
vn -0.0198 -0.5038 -0.8636
|
||||
vn -0.8090 -0.0089 -0.5878
|
||||
vn -0.6772 -0.2724 -0.6835
|
||||
vn -0.8593 -0.2724 -0.4328
|
||||
vn -0.6882 -0.5257 -0.5000
|
||||
vn -0.8274 -0.5038 -0.2480
|
||||
vn -0.8090 -0.0089 0.5878
|
||||
vn -0.8593 -0.2724 0.4328
|
||||
vn -0.6772 -0.2724 0.6835
|
||||
vn -0.6882 -0.5257 0.5000
|
||||
vn -0.4915 -0.5038 0.7103
|
||||
vn 0.3090 -0.0089 0.9510
|
||||
vn 0.1461 -0.2724 0.9510
|
||||
vn 0.4407 -0.2724 0.8553
|
||||
vn 0.2629 -0.5257 0.8090
|
||||
vn 0.5236 -0.5038 0.6870
|
||||
vn 0.9999 -0.0089 0.0000
|
||||
vn 0.9496 -0.2724 0.1549
|
||||
vn 0.9496 -0.2724 -0.1549
|
||||
vn 0.8506 -0.5257 0.0000
|
||||
vn 0.8152 -0.5038 -0.2857
|
||||
vn 0.6042 -0.6650 -0.4390
|
||||
vn 0.4253 -0.8506 -0.3090
|
||||
vn 0.3538 -0.7275 -0.5878
|
||||
vn 0.1406 -0.8904 -0.4328
|
||||
vn 0.0592 -0.7275 -0.6835
|
||||
vn -0.1625 -0.8506 -0.5000
|
||||
vn -0.2308 -0.6650 -0.7103
|
||||
vn -0.4496 -0.7275 -0.5181
|
||||
vn -0.3682 -0.8904 -0.2675
|
||||
vn -0.6317 -0.7275 -0.2675
|
||||
vn -0.5257 -0.8506 0.0000
|
||||
vn -0.7468 -0.6650 0.0000
|
||||
vn -0.6317 -0.7275 0.2675
|
||||
vn -0.3682 -0.8904 0.2675
|
||||
vn -0.4496 -0.7275 0.5181
|
||||
vn -0.1625 -0.8506 0.5000
|
||||
vn -0.2308 -0.6650 0.7103
|
||||
vn 0.6683 -0.7275 -0.1549
|
||||
vn 0.6683 -0.7275 0.1549
|
||||
vn 0.4551 -0.8904 0.0000
|
||||
vn 0.4253 -0.8506 0.3090
|
||||
vn 0.0592 -0.7275 0.6835
|
||||
vn 0.1406 -0.8904 0.4328
|
||||
vn 0.3538 -0.7275 0.5878
|
||||
s 1
|
||||
f 1/1/1 16/2/2 15/3/3
|
||||
f 2/4/4 18/5/5 24/6/6
|
||||
f 1/1/1 15/3/3 30/7/7
|
||||
f 1/1/1 30/7/7 36/8/8
|
||||
f 1/1/1 36/8/8 25/9/9
|
||||
f 2/4/4 24/6/6 45/10/10
|
||||
f 3/11/11 21/12/12 51/13/13
|
||||
f 4/14/14 33/15/15 57/16/16
|
||||
f 5/17/17 39/18/18 63/19/19
|
||||
f 6/20/20 42/21/21 69/22/22
|
||||
f 2/4/4 45/10/10 52/23/23
|
||||
f 3/11/11 51/13/13 58/24/24
|
||||
f 4/14/14 57/16/16 64/25/25
|
||||
f 5/17/17 63/19/19 70/26/26
|
||||
f 6/20/20 69/22/22 46/27/27
|
||||
f 7/28/28 75/29/29 90/30/30
|
||||
f 8/31/31 78/32/32 96/33/33
|
||||
f 9/34/34 81/35/35 99/36/36
|
||||
f 10/37/37 84/38/38 102/39/39
|
||||
f 11/40/40 87/41/41 91/42/42
|
||||
f 93/43/43 100/44/44 12/45/45
|
||||
f 92/46/46 103/47/47 93/43/43
|
||||
f 91/42/42 104/48/48 92/49/46
|
||||
f 93/43/43 103/47/47 100/44/44
|
||||
f 103/47/47 101/50/49 100/44/44
|
||||
f 92/46/46 104/51/48 103/47/47
|
||||
f 104/48/48 105/52/50 103/53/47
|
||||
f 103/53/47 105/52/50 101/54/49
|
||||
f 105/52/50 102/39/39 101/54/49
|
||||
f 91/42/42 87/41/41 104/48/48
|
||||
f 87/41/41 86/55/51 104/48/48
|
||||
f 104/48/48 86/55/51 105/52/50
|
||||
f 86/55/51 85/56/52 105/52/50
|
||||
f 105/52/50 85/56/52 102/39/39
|
||||
f 85/56/52 10/37/37 102/39/39
|
||||
f 100/44/44 97/57/53 12/45/45
|
||||
f 101/50/49 106/58/54 100/44/44
|
||||
f 102/39/39 107/59/55 101/54/49
|
||||
f 100/44/44 106/58/54 97/57/53
|
||||
f 106/58/54 98/60/56 97/57/53
|
||||
f 101/50/49 107/61/55 106/58/54
|
||||
f 107/62/55 108/63/57 106/64/54
|
||||
f 106/58/54 108/65/57 98/60/56
|
||||
f 108/63/57 99/36/36 98/66/56
|
||||
f 102/67/39 84/68/38 107/62/55
|
||||
f 84/68/38 83/69/58 107/62/55
|
||||
f 107/62/55 83/69/58 108/63/57
|
||||
f 83/69/58 82/70/59 108/63/57
|
||||
f 108/63/57 82/70/59 99/36/36
|
||||
f 82/70/59 9/34/34 99/36/36
|
||||
f 97/57/53 94/71/60 12/45/45
|
||||
f 98/60/56 109/72/61 97/57/53
|
||||
f 99/36/36 110/73/62 98/66/56
|
||||
f 97/57/53 109/72/61 94/71/60
|
||||
f 109/72/61 95/74/63 94/71/60
|
||||
f 98/60/56 110/75/62 109/72/61
|
||||
f 110/75/62 111/76/64 109/72/61
|
||||
f 109/72/61 111/76/64 95/74/63
|
||||
f 111/76/64 96/33/33 95/74/63
|
||||
f 99/36/36 81/35/35 110/73/62
|
||||
f 81/35/35 80/77/65 110/73/62
|
||||
f 110/75/62 80/78/65 111/76/64
|
||||
f 80/78/65 79/79/66 111/76/64
|
||||
f 111/76/64 79/79/66 96/33/33
|
||||
f 79/80/66 8/81/31 96/82/33
|
||||
f 94/71/60 88/83/67 12/45/45
|
||||
f 95/74/63 112/84/68 94/71/60
|
||||
f 96/33/33 113/85/69 95/74/63
|
||||
f 94/71/60 112/84/68 88/83/67
|
||||
f 112/84/68 89/86/70 88/83/67
|
||||
f 95/74/63 113/85/69 112/84/68
|
||||
f 113/85/69 114/87/71 112/84/68
|
||||
f 112/84/68 114/87/71 89/86/70
|
||||
f 114/87/71 90/88/30 89/86/70
|
||||
f 96/33/33 78/32/32 113/85/69
|
||||
f 78/32/32 77/89/72 113/85/69
|
||||
f 113/85/69 77/89/72 114/87/71
|
||||
f 77/89/72 76/90/73 114/87/71
|
||||
f 114/87/71 76/90/73 90/88/30
|
||||
f 76/90/73 7/91/28 90/88/30
|
||||
f 88/83/67 93/43/43 12/45/45
|
||||
f 89/86/70 115/92/74 88/83/67
|
||||
f 90/88/30 116/93/75 89/86/70
|
||||
f 88/83/67 115/92/74 93/43/43
|
||||
f 115/92/74 92/46/46 93/43/43
|
||||
f 89/86/70 116/93/75 115/92/74
|
||||
f 116/93/75 117/94/76 115/92/74
|
||||
f 115/92/74 117/94/76 92/46/46
|
||||
f 117/94/76 91/95/42 92/46/46
|
||||
f 90/88/30 75/96/29 116/93/75
|
||||
f 75/29/29 74/97/77 116/98/75
|
||||
f 116/93/75 74/99/77 117/94/76
|
||||
f 74/99/77 73/100/78 117/94/76
|
||||
f 117/101/76 73/102/78 91/42/42
|
||||
f 73/102/78 11/40/40 91/42/42
|
||||
f 48/103/79 87/41/41 11/40/40
|
||||
f 47/104/80 118/105/81 48/103/79
|
||||
f 46/27/27 119/106/82 47/104/80
|
||||
f 48/103/79 118/105/81 87/41/41
|
||||
f 118/105/81 86/55/51 87/41/41
|
||||
f 47/104/80 119/106/82 118/105/81
|
||||
f 119/106/82 120/107/83 118/105/81
|
||||
f 118/105/81 120/107/83 86/55/51
|
||||
f 120/107/83 85/56/52 86/55/51
|
||||
f 46/27/27 69/22/22 119/106/82
|
||||
f 69/22/22 68/108/84 119/106/82
|
||||
f 119/106/82 68/108/84 120/107/83
|
||||
f 68/108/84 67/109/85 120/107/83
|
||||
f 120/107/83 67/109/85 85/56/52
|
||||
f 67/109/85 10/37/37 85/56/52
|
||||
f 72/110/86 84/38/38 10/37/37
|
||||
f 71/111/87 121/112/88 72/113/86
|
||||
f 70/26/26 122/114/89 71/111/87
|
||||
f 72/113/86 121/112/88 84/68/38
|
||||
f 121/112/88 83/69/58 84/68/38
|
||||
f 71/111/87 122/114/89 121/112/88
|
||||
f 122/114/89 123/115/90 121/112/88
|
||||
f 121/112/88 123/115/90 83/69/58
|
||||
f 123/115/90 82/70/59 83/69/58
|
||||
f 70/26/26 63/19/19 122/114/89
|
||||
f 63/19/19 62/116/91 122/114/89
|
||||
f 122/114/89 62/116/91 123/115/90
|
||||
f 62/116/91 61/117/92 123/115/90
|
||||
f 123/115/90 61/117/92 82/70/59
|
||||
f 61/117/92 9/34/34 82/70/59
|
||||
f 66/118/93 81/35/35 9/34/34
|
||||
f 65/119/94 124/120/95 66/118/93
|
||||
f 64/25/25 125/121/96 65/122/94
|
||||
f 66/118/93 124/120/95 81/35/35
|
||||
f 124/120/95 80/77/65 81/35/35
|
||||
f 65/119/94 125/123/96 124/120/95
|
||||
f 125/121/96 126/124/97 124/125/95
|
||||
f 124/125/95 126/124/97 80/126/65
|
||||
f 126/124/97 79/80/66 80/126/65
|
||||
f 64/25/25 57/16/16 125/121/96
|
||||
f 57/16/16 56/127/98 125/121/96
|
||||
f 125/121/96 56/127/98 126/124/97
|
||||
f 56/127/98 55/128/99 126/124/97
|
||||
f 126/124/97 55/128/99 79/80/66
|
||||
f 55/128/99 8/81/31 79/80/66
|
||||
f 60/129/100 78/130/32 8/81/31
|
||||
f 59/131/101 127/132/102 60/129/100
|
||||
f 58/24/24 128/133/103 59/131/101
|
||||
f 60/129/100 127/132/102 78/130/32
|
||||
f 127/132/102 77/134/72 78/130/32
|
||||
f 59/131/101 128/133/103 127/132/102
|
||||
f 128/133/103 129/135/104 127/132/102
|
||||
f 127/132/102 129/135/104 77/134/72
|
||||
f 129/136/104 76/90/73 77/89/72
|
||||
f 58/24/24 51/13/13 128/133/103
|
||||
f 51/13/13 50/137/105 128/133/103
|
||||
f 128/133/103 50/137/105 129/135/104
|
||||
f 50/138/105 49/139/106 129/140/104
|
||||
f 129/140/104 49/139/106 76/141/73
|
||||
f 49/139/106 7/28/28 76/141/73
|
||||
f 54/142/107 75/29/29 7/28/28
|
||||
f 53/143/108 130/144/109 54/142/107
|
||||
f 52/23/23 131/145/110 53/143/108
|
||||
f 54/142/107 130/144/109 75/29/29
|
||||
f 130/144/109 74/97/77 75/29/29
|
||||
f 53/143/108 131/145/110 130/144/109
|
||||
f 131/145/110 132/146/111 130/144/109
|
||||
f 130/144/109 132/146/111 74/97/77
|
||||
f 132/146/111 73/147/78 74/97/77
|
||||
f 52/23/23 45/10/10 131/145/110
|
||||
f 45/10/10 44/148/112 131/145/110
|
||||
f 131/145/110 44/148/112 132/146/111
|
||||
f 44/148/112 43/149/113 132/146/111
|
||||
f 132/146/111 43/149/113 73/147/78
|
||||
f 43/150/113 11/40/40 73/102/78
|
||||
f 67/109/85 72/110/86 10/37/37
|
||||
f 68/108/84 133/151/114 67/109/85
|
||||
f 69/22/22 134/152/115 68/108/84
|
||||
f 67/109/85 133/151/114 72/110/86
|
||||
f 133/151/114 71/153/87 72/110/86
|
||||
f 68/108/84 134/152/115 133/151/114
|
||||
f 134/152/115 135/154/116 133/151/114
|
||||
f 133/151/114 135/154/116 71/153/87
|
||||
f 135/155/116 70/26/26 71/111/87
|
||||
f 69/22/22 42/21/21 134/152/115
|
||||
f 42/21/21 41/156/117 134/152/115
|
||||
f 134/152/115 41/156/117 135/154/116
|
||||
f 41/157/117 40/158/118 135/159/116
|
||||
f 135/155/116 40/160/118 70/26/26
|
||||
f 40/160/118 5/17/17 70/26/26
|
||||
f 61/117/92 66/118/93 9/34/34
|
||||
f 62/116/91 136/161/119 61/117/92
|
||||
f 63/19/19 137/162/120 62/116/91
|
||||
f 61/117/92 136/161/119 66/118/93
|
||||
f 136/161/119 65/119/94 66/118/93
|
||||
f 62/116/91 137/162/120 136/161/119
|
||||
f 137/162/120 138/163/121 136/161/119
|
||||
f 136/161/119 138/163/121 65/119/94
|
||||
f 138/163/121 64/164/25 65/119/94
|
||||
f 63/19/19 39/18/18 137/162/120
|
||||
f 39/18/18 38/165/122 137/162/120
|
||||
f 137/162/120 38/165/122 138/163/121
|
||||
f 38/165/122 37/166/123 138/163/121
|
||||
f 138/163/121 37/166/123 64/164/25
|
||||
f 37/167/123 4/14/14 64/25/25
|
||||
f 55/128/99 60/129/100 8/81/31
|
||||
f 56/127/98 139/168/124 55/128/99
|
||||
f 57/16/16 140/169/125 56/127/98
|
||||
f 55/128/99 139/168/124 60/129/100
|
||||
f 139/168/124 59/131/101 60/129/100
|
||||
f 56/127/98 140/169/125 139/168/124
|
||||
f 140/169/125 141/170/126 139/168/124
|
||||
f 139/168/124 141/170/126 59/131/101
|
||||
f 141/170/126 58/24/24 59/131/101
|
||||
f 57/16/16 33/15/15 140/169/125
|
||||
f 33/15/15 32/171/127 140/169/125
|
||||
f 140/169/125 32/171/127 141/170/126
|
||||
f 32/171/127 31/172/128 141/170/126
|
||||
f 141/170/126 31/172/128 58/24/24
|
||||
f 31/172/128 3/11/11 58/24/24
|
||||
f 49/139/106 54/142/107 7/28/28
|
||||
f 50/138/105 142/173/129 49/139/106
|
||||
f 51/174/13 143/175/130 50/138/105
|
||||
f 49/139/106 142/173/129 54/142/107
|
||||
f 142/173/129 53/143/108 54/142/107
|
||||
f 50/138/105 143/175/130 142/173/129
|
||||
f 143/175/130 144/176/131 142/173/129
|
||||
f 142/173/129 144/176/131 53/143/108
|
||||
f 144/176/131 52/23/23 53/143/108
|
||||
f 51/174/13 21/177/12 143/175/130
|
||||
f 21/177/12 20/178/132 143/175/130
|
||||
f 143/175/130 20/178/132 144/176/131
|
||||
f 20/178/132 19/179/133 144/176/131
|
||||
f 144/176/131 19/179/133 52/23/23
|
||||
f 19/179/133 2/4/4 52/23/23
|
||||
f 43/150/113 48/103/79 11/40/40
|
||||
f 44/180/112 145/181/134 43/150/113
|
||||
f 45/10/10 146/182/135 44/148/112
|
||||
f 43/150/113 145/181/134 48/103/79
|
||||
f 145/181/134 47/104/80 48/103/79
|
||||
f 44/148/112 146/182/135 145/183/134
|
||||
f 146/184/135 147/185/136 145/181/134
|
||||
f 145/181/134 147/185/136 47/104/80
|
||||
f 147/185/136 46/27/27 47/104/80
|
||||
f 45/10/10 24/6/6 146/182/135
|
||||
f 24/6/6 23/186/137 146/182/135
|
||||
f 146/184/135 23/187/137 147/185/136
|
||||
f 23/187/137 22/188/138 147/185/136
|
||||
f 147/185/136 22/188/138 46/27/27
|
||||
f 22/188/138 6/20/20 46/27/27
|
||||
f 27/189/139 42/190/21 6/191/20
|
||||
f 26/192/140 148/193/141 27/189/139
|
||||
f 25/9/9 149/194/142 26/192/140
|
||||
f 27/189/139 148/193/141 42/190/21
|
||||
f 148/193/141 41/157/117 42/190/21
|
||||
f 26/192/140 149/194/142 148/193/141
|
||||
f 149/194/142 150/195/143 148/193/141
|
||||
f 148/193/141 150/195/143 41/157/117
|
||||
f 150/195/143 40/158/118 41/157/117
|
||||
f 25/9/9 36/8/8 149/194/142
|
||||
f 36/8/8 35/196/144 149/194/142
|
||||
f 149/194/142 35/196/144 150/195/143
|
||||
f 35/196/144 34/197/145 150/195/143
|
||||
f 150/195/143 34/197/145 40/158/118
|
||||
f 34/197/145 5/198/17 40/158/118
|
||||
f 34/199/145 39/18/18 5/17/17
|
||||
f 35/196/144 151/200/146 34/197/145
|
||||
f 36/8/8 152/201/147 35/196/144
|
||||
f 34/197/145 151/200/146 39/202/18
|
||||
f 151/203/146 38/165/122 39/18/18
|
||||
f 35/196/144 152/201/147 151/200/146
|
||||
f 152/201/147 153/204/148 151/200/146
|
||||
f 151/200/146 153/204/148 38/205/122
|
||||
f 153/204/148 37/206/123 38/205/122
|
||||
f 36/8/8 30/7/7 152/201/147
|
||||
f 30/7/7 29/207/149 152/201/147
|
||||
f 152/201/147 29/207/149 153/204/148
|
||||
f 29/207/149 28/208/150 153/204/148
|
||||
f 153/209/148 28/210/150 37/167/123
|
||||
f 28/210/150 4/14/14 37/167/123
|
||||
f 28/210/150 33/15/15 4/14/14
|
||||
f 29/211/149 154/212/151 28/210/150
|
||||
f 30/7/7 155/213/152 29/207/149
|
||||
f 28/210/150 154/212/151 33/15/15
|
||||
f 154/212/151 32/171/127 33/15/15
|
||||
f 29/207/149 155/213/152 154/214/151
|
||||
f 155/215/152 156/216/153 154/212/151
|
||||
f 154/212/151 156/216/153 32/171/127
|
||||
f 156/216/153 31/172/128 32/171/127
|
||||
f 30/7/7 15/3/3 155/213/152
|
||||
f 15/3/3 14/217/154 155/213/152
|
||||
f 155/215/152 14/218/154 156/216/153
|
||||
f 14/218/154 13/219/155 156/216/153
|
||||
f 156/216/153 13/219/155 31/172/128
|
||||
f 13/219/155 3/11/11 31/172/128
|
||||
f 22/188/138 27/220/139 6/20/20
|
||||
f 23/221/137 157/222/156 22/223/138
|
||||
f 24/6/6 158/224/157 23/186/137
|
||||
f 22/223/138 157/222/156 27/189/139
|
||||
f 157/222/156 26/192/140 27/189/139
|
||||
f 23/221/137 158/225/157 157/222/156
|
||||
f 158/225/157 159/226/158 157/222/156
|
||||
f 157/222/156 159/226/158 26/192/140
|
||||
f 159/226/158 25/9/9 26/192/140
|
||||
f 24/6/6 18/5/5 158/224/157
|
||||
f 18/5/5 17/227/159 158/224/157
|
||||
f 158/225/157 17/228/159 159/226/158
|
||||
f 17/228/159 16/2/2 159/226/158
|
||||
f 159/226/158 16/2/2 25/9/9
|
||||
f 16/2/2 1/1/1 25/9/9
|
||||
f 13/219/155 21/12/12 3/11/11
|
||||
f 14/218/154 160/229/160 13/219/155
|
||||
f 15/3/3 161/230/161 14/217/154
|
||||
f 13/231/155 160/232/160 21/177/12
|
||||
f 160/232/160 20/178/132 21/177/12
|
||||
f 14/217/154 161/230/161 160/233/160
|
||||
f 161/234/161 162/235/162 160/232/160
|
||||
f 160/232/160 162/235/162 20/178/132
|
||||
f 162/235/162 19/179/133 20/178/132
|
||||
f 15/3/3 16/2/2 161/230/161
|
||||
f 16/2/2 17/228/159 161/230/161
|
||||
f 161/230/161 17/228/159 162/236/162
|
||||
f 17/227/159 18/5/5 162/235/162
|
||||
f 162/235/162 18/5/5 19/179/133
|
||||
f 18/5/5 2/4/4 19/179/133
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 685 B |
Binary file not shown.
|
After Width: | Height: | Size: 301 B |
Loading…
x
Reference in New Issue
Block a user