config crap, player deco and some fixes

This commit is contained in:
Bob 2024-06-23 22:25:48 +02:00
parent 07a2dcc295
commit b0ae1c8cee
16 changed files with 574 additions and 41 deletions

View File

@ -12,6 +12,12 @@
* Removed the recipes for the satellite deco blocks, those will be phased out soon. Existing deco blocks can still be crafted back into functional satellites
* Moved the satellite recipes to the welder, the attachment is now welded onto the common satellite body
* Simplified the satellite recipes, adjusted cost based on utility (depth scanner, death ray and resonator are more expensive than the mapper/radar)
* CTRL + ALT view now shows the item's internal name and domain
* Adjusted Mekanism compat
* Decreased crafting complexity and time for the digiminer assembler recipe
* Replaced recipes for the wind turbine and atomic disassembler
* Added a config option for toggling Mekanism compat
## Fixed
* Crash caused by PRISM updating unloaded worlds
* Fixed crash caused by PRISM updating unloaded worlds
* Hopefully fixed another crash caused by PRISM (reproduction was unreliable and sporadic, not confirmed)

View File

@ -35,6 +35,7 @@ public class GeneralConfig {
public static boolean enableGuideBook = true;
public static boolean enableSteamParticles = true;
public static boolean enableSoundExtension = true;
public static boolean enableMekanismChanges = true;
public static int hintPos = 0;
public static boolean enableExpensiveMode = false;
@ -101,8 +102,9 @@ public class GeneralConfig {
enableFluidContainerCompat = config.get(CATEGORY_GENERAL, "1.35_enableFluidContainerCompat", true, "If enabled, fluid containers will be oredicted and interchangable in recipes with other mods' containers, as well as TrainCraft's diesel being considered a valid diesel canister.").getBoolean(true);
enableMOTD = config.get(CATEGORY_GENERAL, "1.36_enableMOTD", true, "If enabled, shows the 'Loaded mod!' chat message as well as update notifications when joining a world").getBoolean(true);
enableGuideBook = config.get(CATEGORY_GENERAL, "1.37_enableGuideBook", true, "If enabled, gives players the guide book when joining the world for the first time").getBoolean(true);
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles",true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension",true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
enableSteamParticles = config.get(CATEGORY_GENERAL, "1.38_enableSteamParticles", true, "If disabled, auxiliary cooling towers and large cooling towers will not emit steam particles when in use.").getBoolean(true);
enableSoundExtension = config.get(CATEGORY_GENERAL, "1.39_enableSoundExtension", true, "If enabled, will change the limit for how many sounds can play at once.").getBoolean(true);
enableMekanismChanges = config.get(CATEGORY_GENERAL, "1.40_enableMekanismChanges", true, "If enabled, will change some of Mekanism's recipes.").getBoolean(true);
enableExpensiveMode = config.get(CATEGORY_GENERAL, "1.99_enableExpensiveMode", false, "It does what the name implies.").getBoolean(false);

View File

@ -3,6 +3,7 @@ package com.hbm.handler.radiation;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import com.hbm.lib.Library;
@ -44,7 +45,7 @@ import net.minecraftforge.event.world.WorldEvent;
*/
public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
public HashMap<World, RadPerWorld> perWorld = new HashMap();
public ConcurrentHashMap<World, RadPerWorld> perWorld = new ConcurrentHashMap();
public static int cycles = 0;
public static final float MAX_RADIATION = 1_000_000;
@ -188,6 +189,8 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
//it would be way to expensive to replace the sub-chunks entirely like with the old system
//(that only used floats anyway...) so instead we shift the radiation into the prev value
for(Entry<ChunkCoordIntPair, SubChunk[]> chunk : system.radiation.entrySet()) {
ChunkCoordIntPair coord = chunk.getKey();
for(int i = 0; i < 16; i++) {
SubChunk sub = chunk.getValue()[i];
@ -200,16 +203,16 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
//process some chunks that need extra rebuilding
if(rebuildAllowance > 0 && sub.needsRebuild) {
sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4);
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
if(!sub.needsRebuild) {
rebuildAllowance--;
hasTriedRebuild = true;
}
}
if(!hasTriedRebuild && Math.abs(chunk.getKey().chunkXPos * chunk.getKey().chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos)) {
if(!hasTriedRebuild && Math.abs(coord.chunkXPos * coord.chunkZPos) % 5 == cycles % 5 && world.getChunkProvider().chunkExists(coord.chunkXPos, coord.chunkZPos)) {
Chunk c = world.getChunkFromChunkCoords(chunk.getKey().chunkXPos, chunk.getKey().chunkZPos);
Chunk c = world.getChunkFromChunkCoords(coord.chunkXPos, coord.chunkZPos);
ExtendedBlockStorage[] xbs = c.getBlockStorageArray();
ExtendedBlockStorage subChunk = xbs[i];
int checksum = 0;
@ -219,7 +222,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
}
if(checksum != sub.checksum) {
sub.rebuild(world, chunk.getKey().chunkXPos << 4, i << 4, chunk.getKey().chunkZPos << 4);
sub.rebuild(world, coord.chunkXPos << 4, i << 4, coord.chunkZPos << 4);
}
}
}
@ -257,7 +260,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
}
/** Returns the amount of radiation spread */
private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, HashMap<ChunkCoordIntPair, SubChunk[]> map, ForgeDirection dir) {
private static float spreadRadiation(World world, SubChunk source, int y, ChunkCoordIntPair origin, SubChunk[] chunk, ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> map, ForgeDirection dir) {
float spread = 0.1F;
float amount = source.prevRadiation * spread;
@ -302,7 +305,7 @@ public class ChunkRadiationHandlerPRISM extends ChunkRadiationHandler {
}
public static class RadPerWorld {
public HashMap<ChunkCoordIntPair, SubChunk[]> radiation = new HashMap();
public ConcurrentHashMap<ChunkCoordIntPair, SubChunk[]> radiation = new ConcurrentHashMap();
}
public static class SubChunk {

View File

@ -11,6 +11,7 @@ import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
@ -54,10 +55,16 @@ public class GUIScreenPreview extends GuiScreen {
this.drawTexturedModalRect(res.getScaledWidth_double() / 2D / zoom - 9D, res.getScaledHeight_double() / 2D / zoom - 9D, 5, 87, 18, 18);
GL11.glPopMatrix();
String nameString = Item.itemRegistry.getNameForObject(preview.getItem()) + ", " + preview.getItemDamage();
String zoomString = "Zoom: " + zoom;
String scaleString = "Windows Scale: " + res.getScaleFactor();
this.fontRendererObj.drawString(zoomString, this.width - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height - 20, 0xff0000);
this.fontRendererObj.drawString(scaleString, this.width - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height - 10, 0xff0000);
GL11.glPushMatrix();
GL11.glScaled(0.5, 0.5, 1);
this.fontRendererObj.drawString(zoomString, this.width * 2 - this.fontRendererObj.getStringWidth(zoomString) - 2, this.height * 2 - 35, 0xff0000);
this.fontRendererObj.drawString(scaleString, this.width * 2 - this.fontRendererObj.getStringWidth(scaleString) - 2, this.height * 2 - 25, 0xff0000);
this.fontRendererObj.drawString(nameString, this.width * 2 - this.fontRendererObj.getStringWidth(nameString) - 2, this.height * 2 - 15, 0xff0000);
GL11.glPopMatrix();
}
public void drawTexturedModalRect(double x, double y, int sourceX, int sourceY, int sizeX, int sizeY) {

View File

@ -1269,26 +1269,21 @@ public class AssemblerRecipes extends SerializableRecipe {
makeRecipe(new ComparableStack(ModBlocks.silo_hatch, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 4), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 4)}, 200);
makeRecipe(new ComparableStack(ModBlocks.silo_hatch_large, 1), new AStack[]{new OreDictStack(STEEL.plateWelded(), 6), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.motor, 2), new OreDictStack(STEEL.bolt(), 16), new OreDictStack(KEY_GREEN, 8)}, 200);
if(Loader.isModLoaded("Mekanism")) {
if(GeneralConfig.enableMekanismChanges && Loader.isModLoaded("Mekanism")) {
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
if(mb != null) {
makeRecipe(new ComparableStack(mb, 1, 4), new AStack[] {
new OreDictStack(DURA.ingot(), 16),
new OreDictStack(DESH.ingot(), 16),
new OreDictStack(STEEL.plateWelded(), 32),
new OreDictStack(CU.plateWelded(), 24),
new ComparableStack(ModItems.pipes_steel, 8),
new OreDictStack(BIGMT.plateCast(), 16),
new OreDictStack(CU.plateWelded(), 12),
new OreDictStack("alloyUltimate", 32),
new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID),
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_ALLOY.id),
new ComparableStack(ModBlocks.fusion_conductor, 12),
new ComparableStack(ModBlocks.capacitor_tantalium, 53),
new ComparableStack(ModItems.crystal_redstone, 16),
new ComparableStack(ModItems.crystal_diamond, 8),
new ComparableStack(ModItems.motor_bismuth, 4)
}, 15 * 60 * 20);
new ComparableStack(ModItems.circuit, 32, EnumCircuitType.CAPACITOR_BOARD),
new ComparableStack(ModItems.wire_dense, 32, Mats.MAT_GOLD.id),
new ComparableStack(ModItems.motor_bismuth, 3)
}, 1200);
}
}

View File

@ -1173,21 +1173,32 @@ public class CraftingManager {
public static void crumple() {
if(Loader.isModLoaded("Mekanism")) {
List<ItemStack> targets = new ArrayList();
if(GeneralConfig.enableMekanismChanges) {
if(Loader.isModLoaded("Mekanism")) {
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler");
targets.add(new ItemStack(mb, 1, 4)); // digiminer
targets.add(new ItemStack(disassembler)); // atomic disassembler
}
if(Loader.isModLoaded("MekanismGenerators")) {
Block mb = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator");
targets.add(new ItemStack(mb, 1, 6)); // wind turbine
}
List<IRecipe> toDestroy = new ArrayList();
Block mb = (Block) Block.blockRegistry.getObject("Mekanism:MachineBlock");
ItemStack digiminer = new ItemStack(mb, 1, 4);
for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) {
if(o instanceof IRecipe) {
IRecipe rec = (IRecipe)o;
ItemStack stack = rec.getRecipeOutput();
if(stack != null && stack.getItem() == digiminer.getItem() && stack.getItemDamage() == digiminer.getItemDamage()) {
toDestroy.add(rec);
for(ItemStack target : targets) {
if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec);
}
}
}
@ -1195,6 +1206,18 @@ public class CraftingManager {
if(toDestroy.size() > 0) {
net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy);
}
if(Loader.isModLoaded("Mekanism")) {
Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler");
if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian");
}
if(Loader.isModLoaded("MekanismGenerators")) {
Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator");
if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot());
}
}
}

View File

@ -577,12 +577,10 @@ public class ModEventHandlerClient {
}
if(player.getCurrentArmor(2) == null && !player.isPotionActive(Potion.invisibility)) {
if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft"))
RenderAccessoryUtility.renderWings(event, 2);
if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR"))
RenderAccessoryUtility.renderWings(event, 3);
if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7"))
RenderAccessoryUtility.renderAxePack(event);
if(player.getUniqueID().toString().equals(ShadyUtil.HbMinecraft) || player.getDisplayName().equals("HbMinecraft")) RenderAccessoryUtility.renderWings(event, 2);
if(player.getUniqueID().toString().equals(ShadyUtil.the_NCR) || player.getDisplayName().equals("the_NCR")) RenderAccessoryUtility.renderWings(event, 3);
if(player.getUniqueID().toString().equals(ShadyUtil.Barnaby99_x) || player.getDisplayName().equals("pheo7")) RenderAccessoryUtility.renderAxePack(event);
if(player.getUniqueID().toString().equals(ShadyUtil.LePeeperSauvage) || player.getDisplayName().equals("LePeeperSauvage")) RenderAccessoryUtility.renderFaggot(event);
}
}

View File

@ -862,6 +862,7 @@ public class ResourceManager {
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj"));
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj"));
public static final IModelCustom armor_axepack = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/wings_pheo.obj"));
public static final IModelCustom armor_tail = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/tail_peep.obj"));
public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj"));
public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj"));
public static final IModelCustom armor_trenchmaster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/trenchmaster.obj"));
@ -1026,6 +1027,7 @@ public class ResourceManager {
public static final ResourceLocation wings_bob = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_bob.png");
public static final ResourceLocation wings_black = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_black.png");
public static final ResourceLocation wings_pheo = new ResourceLocation(RefStrings.MODID, "textures/armor/axepack.png");
public static final ResourceLocation tail_peep = new ResourceLocation(RefStrings.MODID, "textures/armor/tail_peep.png");
public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png");
public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png");

View File

@ -0,0 +1,26 @@
package com.hbm.render.model;
import com.hbm.main.ResourceManager;
import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
public class ModelArmorTailPeep extends ModelArmorBase {
ModelRendererObj tail;
public ModelArmorTailPeep() {
super(0);
tail = new ModelRendererObj(ResourceManager.armor_tail, "FaggyAssFuckingTailThing");
}
@Override
public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) {
setRotationAngles(par2, par3, par4, par5, par6, par7, entity);
body.copyTo(tail);
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tail_peep);
tail.render(par7);
}
}

View File

@ -2,6 +2,7 @@ package com.hbm.render.util;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.render.model.ModelArmorTailPeep;
import com.hbm.render.model.ModelArmorWings;
import com.hbm.render.model.ModelArmorWingsPheo;
import com.hbm.util.ShadyUtil;
@ -184,4 +185,26 @@ public class RenderAccessoryUtility {
axePackModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F);
}
private static ModelBiped tailModel;
public static void renderFaggot(RenderPlayerEvent.SetArmorModel event) {
if(tailModel == null)
tailModel = new ModelArmorTailPeep();
RenderPlayer renderer = event.renderer;
ModelBiped model = renderer.modelArmor;
EntityPlayer player = event.entityPlayer;
tailModel.isSneak = model.isSneak;
float interp = event.partialRenderTick;
float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp;
float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp;
float yaw = yawHead - yawOffset;
float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset);
float pitch = player.rotationPitch;
tailModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F);
}
}

View File

@ -119,7 +119,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme
ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10);
ForgeDirection rot = dir.getRotation(ForgeDirection.UP);
List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 5.875, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5));
List<EntityPlayer> players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.25, yCoord + 1, zCoord + 0.25, xCoord + 0.75, yCoord + 6, zCoord + 0.75).offset(rot.offsetX * 1.5, 0, rot.offsetZ * 1.5));
for(EntityPlayer player : players) {
HbmPlayerProps props = HbmPlayerProps.getData(player);

View File

@ -35,9 +35,9 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn
@Untested
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
if(recursionBrake)
return 0;
if(this.tileEntityInvalid) return 0;
if(recursionBrake) return 0;
if(simulate)
return maxReceive;

View File

@ -53,6 +53,7 @@ public class ShadyUtil {
public static String Adam29Adam29 = "bbae7bfa-0eba-40ac-a0dd-f3b715e73e61";
public static String Alcater = "0b399a4a-8545-45a1-be3d-ece70d7d48e9";
public static String ege444 = "42ee978c-442a-4cd8-95b6-29e469b6df10";
public static String LePeeperSauvage = "433c2bb7-018c-4d51-acfe-27f907432b5e";
public static final Set<String> hashes = new HashSet();
static {

View File

@ -0,0 +1,447 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
o FaggyAssFuckingTailThing
v -0.627682 10.005125 -0.450454
v -0.000123 11.075396 0.277636
v -0.000084 10.418571 -0.643246
v 0.627711 10.005373 -0.450569
v 0.798890 10.572883 0.567761
v 0.388113 9.285591 -0.074662
v -0.493534 9.759312 1.037476
v -0.000153 10.383696 3.486781
v -0.814369 10.383530 3.486841
v -0.000151 9.759405 1.037423
v -0.000151 9.285519 -0.074620
v -0.387763 9.285445 -0.074578
v -0.798885 10.572582 0.567935
v 1.318130 11.840109 2.956691
v 1.303919 10.780759 6.464269
v 0.814971 10.383862 3.486721
v -0.000243 12.739786 2.629235
v -1.318200 11.839571 2.956887
v 0.493946 9.759499 1.037369
v -1.303027 10.780201 6.464366
v -0.000150 9.794444 9.202967
v -1.563645 9.794115 9.202877
v -2.109154 13.221715 6.033862
v -0.000424 14.731211 5.767698
v -0.000150 10.780479 6.464317
v 2.108972 13.222614 6.033704
v -3.037204 8.839604 13.587263
v -2.530998 12.667759 9.972871
v -0.000522 14.444422 10.448926
v 2.530752 12.668819 9.973157
v 1.564689 9.794771 9.203056
v -0.000772 3.865773 18.280907
v -0.000633 10.105603 15.395302
v 3.036897 8.840356 13.588348
v 1.877619 6.792392 10.663549
v -0.000148 6.792160 10.663214
v -1.876381 6.791927 10.662880
v 4.008683 -1.231076 17.008335
v 3.644264 3.180661 15.724039
v -0.000157 2.071596 11.584938
v -2.251669 2.071471 11.584467
v -3.644658 3.180254 15.722511
v 2.253131 2.071720 11.585409
v -0.000585 -5.243139 19.012844
v 2.806094 -5.420787 16.982361
v -2.476843 -1.641940 12.312111
v -4.009130 -1.231225 17.006601
v 2.478435 -1.641846 12.313181
v -0.000858 -0.977296 19.909027
v -0.000141 -1.641892 12.312647
v 0.520518 -6.788428 15.666166
v 1.734920 -5.708327 13.695753
v -1.733776 -5.708388 13.695004
v -2.806377 -5.420892 16.981148
v -0.000133 -6.788437 15.666052
v 0.841869 -6.702163 16.652149
v -0.000133 -6.648875 17.261292
v -0.841870 -6.702197 16.651783
v -0.000135 -5.708357 13.695379
v -0.520090 -6.788447 15.665939
vt 0.710651 0.397343
vt 0.673447 0.425869
vt 0.686110 0.391250
vt 0.640510 0.034849
vt 0.603308 0.006319
vt 0.627849 0.000228
vt 0.752962 0.426119
vt 0.711107 0.401105
vt 0.736879 0.391250
vt 0.932680 0.039627
vt 0.948768 0.122001
vt 0.922233 0.122004
vt 0.961407 0.000228
vt 0.948759 0.039625
vt 0.948753 0.000230
vt 0.952761 0.401105
vt 0.910907 0.426121
vt 0.926989 0.391250
vt 0.655952 0.797121
vt 0.676401 0.823580
vt 0.663769 0.823582
vt 0.790100 0.507814
vt 0.746990 0.619172
vt 0.738502 0.520352
vt 0.609711 0.044182
vt 0.672570 0.123097
vt 0.620455 0.133276
vt 0.940524 0.438709
vt 0.873772 0.507814
vt 0.704244 0.435206
vt 0.641379 0.514115
vt 0.723345 0.438709
vt 0.906315 0.219899
vt 0.948774 0.314756
vt 0.897820 0.314756
vt 0.687894 0.637069
vt 0.603308 0.629110
vt 0.948776 0.219895
vt 0.626049 0.246054
vt 0.916885 0.619168
vt 0.832166 0.612780
vt 0.819888 0.129973
vt 0.737083 0.000228
vt 0.897348 0.063686
vt 0.703938 0.390793
vt 0.603308 0.374429
vt 0.856460 0.740857
vt 0.807406 0.740873
vt 0.711107 0.707398
vt 0.610024 0.781808
vt 0.547346 0.239308
vt 0.393707 0.049939
vt 0.602852 0.130282
vt 0.819901 0.231924
vt 0.737074 0.361669
vt 0.711092 0.242118
vt 0.884411 0.981518
vt 0.711107 0.859180
vt 0.923667 0.887428
vt 0.711092 0.180923
vt 0.711092 0.119777
vt 0.910366 0.786348
vt 0.743952 0.741330
vt 0.393706 0.771551
vt 0.208303 0.661960
vt 0.355061 0.629918
vt 0.494347 0.349574
vt 0.337604 0.410716
vt 0.337605 0.337340
vt 0.547358 0.582179
vt 0.355064 0.191572
vt 0.494355 0.471915
vt 0.337604 0.484150
vt 0.092732 0.820324
vt 0.074194 0.708811
vt 0.214393 0.328358
vt 0.206875 0.167042
vt 0.214386 0.493131
vt 0.208315 0.159535
vt 0.234787 0.000228
vt 0.214281 0.410714
vt 0.214285 0.329999
vt 0.068166 0.623727
vt 0.001808 0.553219
vt 0.073433 0.510806
vt 0.073441 0.310677
vt 0.068178 0.197756
vt 0.206862 0.654446
vt 0.092733 0.001179
vt 0.074307 0.354217
vt 0.613282 0.823429
vt 0.623242 0.782265
vt 0.655495 0.792745
vt 0.018317 0.059452
vt 0.023876 0.025998
vt 0.074305 0.410716
vt 0.001068 0.393780
vt 0.018313 0.762053
vt 0.001815 0.268262
vt 0.000237 0.234386
vt 0.655495 0.826658
vt 0.623242 0.837137
vt 0.214278 0.491490
vt 0.696873 0.797121
vt 0.689055 0.823582
vt 0.964861 0.039622
vt 0.975332 0.121997
vt 0.001067 0.427694
vt 0.001067 0.410726
vt 0.074302 0.467260
vt 0.991275 0.219891
vt 0.936121 0.000232
vt 0.999772 0.314756
vt 0.676413 0.782265
vt 0.831709 0.612784
vt 0.925371 0.520351
vt 0.693494 0.524297
vt 0.710635 0.238095
vt 0.952761 0.707388
vt 0.710651 0.765428
vt 0.897364 0.298208
vt 0.712040 0.981518
vt 0.819894 0.180926
vt 0.234786 0.821264
vt 0.494351 0.410719
vt 0.602852 0.691211
vt 0.000228 0.587095
vt 0.074203 0.112694
vt 0.603308 0.809701
vt 0.023875 0.795507
vn -0.5837 0.6621 -0.4701
vn -0.5883 0.6607 -0.4663
vn -0.5815 0.6623 -0.4724
vn 0.5878 0.6613 -0.4661
vn 0.5833 0.6623 -0.4702
vn 0.5811 0.6626 -0.4726
vn 0.9469 -0.3196 0.0349
vn 0.9480 -0.3169 0.0288
vn 0.9507 -0.3098 0.0128
vn 0.0002 -0.9690 0.2470
vn 0.0002 -0.9200 0.3920
vn -0.9479 -0.3172 0.0290
vn -0.9468 -0.3199 0.0351
vn -0.9506 -0.3101 0.0130
vn 0.0169 -0.4513 -0.8922
vn 0.0088 -0.4569 -0.8895
vn -0.0000 -0.4629 -0.8864
vn 0.9333 -0.3447 -0.1003
vn 0.9368 -0.3359 -0.0977
vn 0.9276 -0.3586 -0.1045
vn 0.5865 0.6617 -0.4671
vn 0.5760 0.6649 -0.4756
vn 0.5731 0.6659 -0.4778
vn -0.9358 -0.3518 -0.0208
vn -0.9386 -0.3435 -0.0310
vn -0.9336 -0.3581 -0.0130
vn -0.5869 0.6613 -0.4671
vn -0.5764 0.6646 -0.4755
vn 0.9360 -0.3514 -0.0210
vn 0.9388 -0.3432 -0.0311
vn 0.9403 -0.3384 -0.0370
vn 0.0002 -0.9409 -0.3388
vn -0.5692 0.6881 -0.4500
vn -0.5630 0.6951 -0.4471
vn -0.5578 0.7008 -0.4447
vn 0.0002 -0.9912 0.1321
vn 0.5689 0.6883 -0.4501
vn 0.5626 0.6953 -0.4472
vn 0.5765 0.6797 -0.4535
vn -0.9332 -0.3451 -0.1002
vn -0.9367 -0.3363 -0.0975
vn -0.9402 -0.3271 -0.0947
vn -0.9259 -0.1545 -0.3448
vn -0.9311 -0.1294 -0.3411
vn -0.9114 -0.2123 -0.3525
vn 0.5780 0.8145 0.0508
vn 0.5788 0.8138 0.0514
vn 0.5800 0.8129 0.0522
vn -0.9378 -0.3064 -0.1634
vn -0.9396 -0.2981 -0.1685
vn -0.9313 -0.3334 -0.1466
vn 0.9379 -0.3060 -0.1633
vn 0.9397 -0.2977 -0.1684
vn 0.9453 -0.2678 -0.1864
vn -0.5783 0.8142 0.0507
vn -0.5792 0.8136 0.0513
vn -0.5772 0.8151 0.0499
vn -0.5820 0.3412 0.7381
vn -0.5821 0.3411 0.7381
vn -0.5819 0.3414 0.7382
vn 0.9260 -0.1543 -0.3445
vn 0.9312 -0.1292 -0.3407
vn 0.9420 -0.0622 -0.3298
vn -0.5565 0.6203 0.5528
vn -0.5681 0.6094 0.5531
vn -0.5461 0.6298 0.5524
vn 0.0002 -0.4374 -0.8993
vn 0.5562 0.6204 0.5529
vn 0.5677 0.6096 0.5532
vn 0.5787 0.5991 0.5534
vn 0.5814 0.2653 0.7692
vn 0.5812 0.2651 0.7694
vn 0.5864 0.2707 0.7634
vn 0.0002 -0.1916 -0.9815
vn 0.0002 -0.1920 -0.9814
vn 0.5817 0.3413 0.7384
vn 0.5818 0.3412 0.7383
vn 0.5820 0.3410 0.7383
vn -0.9408 -0.0140 -0.3388
vn -0.9427 -0.0059 -0.3337
vn -0.9363 -0.0314 -0.3497
vn 0.9409 -0.0139 -0.3384
vn 0.9428 -0.0058 -0.3333
vn 0.9468 0.0125 -0.3216
vn 0.5707 -0.1688 0.8036
vn -0.9497 -0.0087 -0.3130
vn -0.9495 -0.0081 -0.3136
vn -0.9509 -0.0115 -0.3094
vn 0.9499 -0.0086 -0.3126
vn 0.9496 -0.0080 -0.3132
vn 0.9483 -0.0047 -0.3175
vn -0.5817 0.2652 0.7689
vn -0.5816 0.2651 0.7691
vn -0.5770 0.2603 0.7741
vn 0.0002 -0.1923 -0.9813
vn 0.5559 -0.8240 -0.1091
vn 0.5559 -0.8241 -0.1091
vn -0.9236 -0.2635 -0.2784
vn 0.9237 -0.2634 -0.2780
vn -0.5710 -0.1688 0.8034
vn 0.0002 -0.3219 -0.9468
vn 0.0000 -0.9962 0.0872
vn -0.3744 -0.7232 0.5803
vn 0.0001 -0.8769 -0.4806
vn 0.3742 -0.7232 0.5805
vn -0.5558 -0.8241 -0.1093
vn -0.0088 -0.4569 -0.8895
vn -0.0168 -0.4513 -0.8922
vn 0.0002 -0.9409 -0.3387
vn 0.9442 -0.3257 0.0490
vn -0.9441 -0.3261 0.0492
vn 0.0209 -0.4484 -0.8936
vn 0.9403 -0.3267 -0.0949
vn -0.9402 -0.3387 -0.0368
vn -0.5734 0.6656 -0.4777
vn 0.9337 -0.3577 -0.0132
vn -0.5768 0.6794 -0.4535
vn 0.5574 0.7010 -0.4448
vn -0.9275 -0.3589 -0.1044
vn -0.9419 -0.0624 -0.3301
vn 0.5768 0.8153 0.0500
vn -0.9451 -0.2682 -0.1865
vn 0.9315 -0.3329 -0.1465
vn -0.5804 0.8127 0.0521
vn -0.5823 0.3410 0.7380
vn 0.9116 -0.2120 -0.3522
vn -0.5791 0.5989 0.5532
vn 0.0001 -0.4374 -0.8993
vn 0.5457 0.6299 0.5526
vn 0.5767 0.2603 0.7744
vn 0.5815 0.3415 0.7384
vn -0.9467 0.0124 -0.3220
vn 0.9365 -0.0313 -0.3493
vn -0.9481 -0.0048 -0.3179
vn 0.9510 -0.0114 -0.3090
vn -0.5868 0.2706 0.7632
vn -0.0209 -0.4484 -0.8936
s 1
f 1/1/1 2/2/2 3/3/3
f 2/4/4 4/5/5 3/6/6
f 5/7/7 6/8/8 4/9/9
f 7/10/10 8/11/10 9/12/10
f 6/13/11 10/14/11 11/15/11
f 12/16/12 13/17/13 1/18/14
f 1/19/15 11/20/16 12/21/17
f 14/22/18 15/23/19 16/24/20
f 5/25/21 17/26/22 14/27/23
f 7/28/24 18/29/25 13/17/26
f 13/30/27 17/31/28 2/2/2
f 19/32/29 14/22/30 16/24/31
f 20/33/32 21/34/32 22/35/32
f 17/31/33 23/36/34 24/37/35
f 9/12/36 25/38/36 20/33/36
f 17/26/37 26/39/38 14/27/39
f 18/29/40 20/40/41 23/41/42
f 22/42/43 27/43/44 28/44/45
f 26/39/46 29/45/47 30/46/48
f 20/40/49 28/47/50 23/41/51
f 15/23/52 30/48/53 31/49/54
f 23/36/55 29/50/56 24/37/57
f 27/51/58 32/52/59 33/53/60
f 31/54/61 34/55/62 35/56/63
f 28/57/64 33/58/65 29/59/66
f 22/42/67 36/60/67 37/61/67
f 30/62/68 33/58/69 34/63/70
f 32/64/71 38/65/72 39/66/73
f 37/67/74 40/68/75 41/69/75
f 34/70/76 32/64/77 39/66/78
f 37/67/79 42/71/80 27/51/81
f 35/72/82 39/66/83 43/73/84
f 38/65/85 44/74/85 45/75/85
f 42/71/86 46/76/87 47/77/88
f 39/66/89 48/78/90 43/73/91
f 32/52/92 47/79/93 49/80/94
f 41/69/75 50/81/95 46/82/95
f 45/83/96 51/84/97 52/85/96
f 47/77/98 53/86/98 54/87/98
f 38/88/99 52/85/99 48/78/99
f 47/79/100 44/89/100 49/80/100
f 50/81/101 53/90/101 46/82/101
f 55/91/102 56/92/102 57/93/102
f 44/89/103 58/94/103 57/95/103
f 59/96/104 60/97/104 53/90/104
f 44/74/105 56/98/105 45/75/105
f 54/87/106 60/99/106 58/100/106
f 55/91/102 58/101/102 60/102/102
f 50/81/95 43/73/75 48/103/95
f 11/20/107 4/104/108 6/105/17
f 8/11/10 19/106/10 16/107/10
f 59/96/104 51/108/104 55/109/104
f 50/81/101 52/110/101 59/96/101
f 25/38/36 16/107/36 15/111/36
f 10/14/11 12/112/11 11/15/11
f 40/68/75 35/72/74 43/73/75
f 36/60/67 31/54/67 35/56/67
f 21/34/32 15/111/32 31/113/109
f 1/1/1 13/30/27 2/2/2
f 2/4/4 5/25/21 4/5/5
f 5/7/7 19/32/110 6/8/8
f 7/10/10 10/14/10 8/11/10
f 6/13/11 19/106/11 10/14/11
f 12/16/12 7/28/111 13/17/13
f 1/19/15 3/114/112 11/20/16
f 14/22/18 26/115/113 15/23/19
f 5/25/21 2/4/4 17/26/22
f 7/28/24 9/116/114 18/29/25
f 13/30/27 18/117/115 17/31/28
f 19/32/29 5/7/116 14/22/30
f 20/33/32 25/38/32 21/34/32
f 17/31/33 18/117/117 23/36/34
f 9/12/36 8/11/36 25/38/36
f 17/26/37 24/118/118 26/39/38
f 18/29/40 9/116/119 20/40/41
f 22/42/43 37/61/120 27/43/44
f 26/39/46 24/118/121 29/45/47
f 20/40/49 22/119/122 28/47/50
f 15/23/52 26/115/123 30/48/53
f 23/36/55 28/120/124 29/50/56
f 27/51/58 42/71/125 32/52/59
f 31/54/61 30/121/126 34/55/62
f 28/57/64 27/122/127 33/58/65
f 22/42/67 21/123/128 36/60/67
f 30/62/68 29/59/129 33/58/69
f 32/64/71 49/124/130 38/65/72
f 37/67/74 36/125/74 40/68/75
f 34/70/76 33/126/131 32/64/77
f 37/67/79 41/69/132 42/71/80
f 35/72/82 34/70/133 39/66/83
f 38/65/85 49/124/85 44/74/85
f 42/71/86 41/69/134 46/76/87
f 39/66/89 38/88/135 48/78/90
f 32/52/92 42/71/136 47/79/93
f 41/69/75 40/68/75 50/81/95
f 45/83/96 56/127/97 51/84/97
f 47/77/98 46/76/98 53/86/98
f 38/88/99 45/83/99 52/85/99
f 47/79/100 54/128/100 44/89/100
f 50/81/101 59/96/101 53/90/101
f 55/91/102 51/129/102 56/92/102
f 44/89/103 54/128/103 58/94/103
f 59/96/104 55/109/104 60/97/104
f 44/74/105 57/130/105 56/98/105
f 54/87/106 53/86/106 60/99/106
f 55/91/102 57/93/102 58/101/102
f 50/81/95 40/68/75 43/73/75
f 11/20/107 3/114/137 4/104/108
f 8/11/10 10/14/10 19/106/10
f 59/96/104 52/110/104 51/108/104
f 50/81/101 48/103/101 52/110/101
f 25/38/36 8/11/36 16/107/36
f 10/14/11 7/10/11 12/112/11
f 40/68/75 36/125/74 35/72/74
f 36/60/67 21/123/128 31/54/67
f 21/34/32 25/38/32 15/111/32

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB