Merge branch 'HbmMods:master' into rulang

This commit is contained in:
Raaaaaaaaaay 2026-04-14 01:35:11 +03:00 committed by GitHub
commit 1be7e76d8a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
35 changed files with 1148 additions and 264 deletions

View File

@ -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:

View File

@ -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

View File

@ -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),\

View File

@ -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() });

View File

@ -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 });

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;
}

View File

@ -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);

View File

@ -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))

View File

@ -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));

View File

@ -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 ///
}

View File

@ -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.

View File

@ -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++) {

View File

@ -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

View File

@ -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

View File

@ -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"));

View File

@ -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; }
}

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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;

View File

@ -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);

View File

@ -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;}

View File

@ -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
}
}

View File

@ -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);
}
}

View File

@ -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]);
}
}

View File

@ -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);
}
}

View File

@ -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) { }

View File

@ -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
};

View File

@ -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

View File

@ -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

View File

@ -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=手榴弹

View 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