diff options
| author | syeyoung <cyong06@naver.com> | 2021-08-06 12:54:28 +0900 |
|---|---|---|
| committer | syeyoung <cyong06@naver.com> | 2021-08-06 12:54:28 +0900 |
| commit | 0eb7119eb1fab1ac0c7ea96955aa23889a4f3b2e (patch) | |
| tree | e5173b5b5fff5be3258b347d79dc60c076f5bf96 | |
| parent | b47ac84df55dd594105f436eb53c49882364e82e (diff) | |
| download | Skyblock-Dungeons-Guide-0eb7119eb1fab1ac0c7ea96955aa23889a4f3b2e.tar.gz Skyblock-Dungeons-Guide-0eb7119eb1fab1ac0c7ea96955aa23889a4f3b2e.tar.bz2 Skyblock-Dungeons-Guide-0eb7119eb1fab1ac0c7ea96955aa23889a4f3b2e.zip | |
- Restore Penguins, with much better 3d models
| -rwxr-xr-x | src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java | 1 | ||||
| -rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java | 24 | ||||
| -rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java | 118 | ||||
| -rw-r--r-- | src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java | 26 | ||||
| -rw-r--r-- | src/main/resources/assets/dg/models/penguin.mtl | 4 | ||||
| -rw-r--r-- | src/main/resources/assets/dg/models/penguin.obj | 1685 | ||||
| -rw-r--r-- | src/main/resources/assets/dg/penguin.png | bin | 51869 -> 0 bytes | |||
| -rw-r--r-- | src/main/resources/assets/dg/textures/penguin.png | bin | 0 -> 207 bytes |
8 files changed, 1828 insertions, 30 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java index 0a744e11..48c392e0 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/DungeonsGuide.java @@ -175,6 +175,7 @@ public class DungeonsGuide implements DGInterface, CloseListener { try { List<IResourcePack> resourcePackList = ReflectionHelper.getPrivateValue(Minecraft.class, Minecraft.getMinecraft(),"defaultResourcePacks", "aA", "field_110449_ao"); resourcePackList.add(new DGTexturePack(authenticator)); + Minecraft.getMinecraft().refreshResources(); } catch (Throwable t){ t.printStackTrace(); } diff --git a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java index 96683f5b..ab7eae21 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/eventlistener/FeatureListener.java @@ -68,6 +68,30 @@ public class FeatureListener { } } @SubscribeEvent + public void onStomp(TextureStitchEvent.Pre textureStitchEvent) { + try { + for (AbstractFeature abstractFeature : FeatureRegistry.getFeatureList()) { + if (abstractFeature instanceof TextureStichListener) { + ((TextureStichListener) abstractFeature).onTextureStitch(textureStitchEvent); + } + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + @SubscribeEvent + public void onStomp(TextureStitchEvent.Post textureStitchEvent) { + try { + for (AbstractFeature abstractFeature : FeatureRegistry.getFeatureList()) { + if (abstractFeature instanceof TextureStichListener) { + ((TextureStichListener) abstractFeature).onTextureStitch(textureStitchEvent); + } + } + } catch (Throwable t) { + t.printStackTrace(); + } + } + @SubscribeEvent public void onWindowUpdate(WindowUpdateEvent windowUpdateEvent) { try { SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus(); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java index ab3a7a83..076fc0ce 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/impl/etc/FeaturePenguins.java @@ -18,59 +18,103 @@ package kr.syeyoung.dungeonsguide.features.impl.etc; +import com.google.common.collect.ImmutableMap; import kr.syeyoung.dungeonsguide.DungeonsGuide; import kr.syeyoung.dungeonsguide.SkyblockStatus; import kr.syeyoung.dungeonsguide.features.SimpleFeature; import kr.syeyoung.dungeonsguide.features.listener.PlayerRenderListener; +import kr.syeyoung.dungeonsguide.features.listener.TextureStichListener; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.gui.Gui; +import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemCameraTransforms; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.texture.TextureUtil; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.resources.model.IBakedModel; +import net.minecraft.client.resources.model.ModelManager; +import net.minecraft.client.resources.model.ModelResourceLocation; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; +import net.minecraft.item.*; +import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.client.model.IModel; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.client.model.ModelLoaderRegistry; +import net.minecraftforge.client.model.obj.OBJLoader; +import net.minecraftforge.client.model.obj.OBJModel; +import net.minecraftforge.fml.relauncher.ReflectionHelper; +import java.io.IOException; +import java.util.List; -public class FeaturePenguins extends SimpleFeature implements PlayerRenderListener { + +public class FeaturePenguins extends SimpleFeature implements PlayerRenderListener, TextureStichListener { public FeaturePenguins() { super("Misc", "Penguins", "Awwww", "etc.penguin", false); + OBJLoader.instance.addDomain("dungeonsguide"); + + } + @Override + public void onTextureStitch(TextureStitchEvent event) { + System.out.println("STICH!"); + if (event instanceof TextureStitchEvent.Pre) { + objModel = null; + ResourceLocation modelResourceLocation = new ResourceLocation("dungeonsguide:models/penguin.obj"); + try { + objModel = (OBJModel) OBJLoader.instance.loadModel(modelResourceLocation); + objModel = (OBJModel) objModel.process(new ImmutableMap.Builder<String, String>().put("flip-v", "true").build()); + for (String obj : objModel.getMatLib().getMaterialNames()) { + ResourceLocation resourceLocation = objModel.getMatLib().getMaterial(obj).getTexture().getTextureLocation(); + event.map.registerSprite(resourceLocation); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + if (objModel != null && event instanceof TextureStitchEvent.Post) { + model = objModel.bake(objModel.getDefaultState(), DefaultVertexFormats.ITEM, ModelLoader.defaultTextureGetter()); + } } + private OBJModel objModel; private final SkyblockStatus skyblockStatus = DungeonsGuide.getDungeonsGuide().getSkyblockStatus(); - private final ResourceLocation penguin = new ResourceLocation("dungeonsguide:penguin.png"); + private IBakedModel model; @Override public void onEntityRenderPre(RenderPlayerEvent.Pre renderPlayerEvent) { + if (!isEnabled()) return; + if (renderPlayerEvent.entityPlayer.isInvisible()) return; renderPlayerEvent.setCanceled(true); GlStateManager.pushMatrix(); + GlStateManager.color(1,1,1,1); GlStateManager.translate(renderPlayerEvent.x, renderPlayerEvent.y, renderPlayerEvent.z); - - GlStateManager.rotate(-renderPlayerEvent.renderer.getRenderManager().playerViewY, 0.0f, 1.0f, 0.0f); - - GlStateManager.translate(0.5,2,0); - GlStateManager.scale(-1,-1,-1); - if (renderPlayerEvent.entityPlayer.isSneaking()) { - GlStateManager.translate(0.0F, 0.203125F, 0.0F); + GlStateManager.translate(0.0F, -0.203125F, 0.0F); } + float f1 = renderPlayerEvent.entityPlayer.prevRotationYawHead + (renderPlayerEvent.entityPlayer.rotationYawHead - renderPlayerEvent.entityPlayer.prevRotationYawHead) * renderPlayerEvent.partialRenderTick; + GlStateManager.rotate(f1+180,0,-1,0); + Minecraft.getMinecraft().getTextureManager().bindTexture(TextureMap.locationBlocksTexture); - Minecraft.getMinecraft().getTextureManager().bindTexture(penguin); - GlStateManager.disableLighting(); - GlStateManager.color(1f, 1f, 1f, 1f); - Gui.drawModalRectWithCustomSizedTexture(0,0,0,0,1,2,1,2); - GlStateManager.bindTexture(0); - GlStateManager.enableLighting(); + Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModelBrightnessColor( + model, 1,1,1,1 + ); GlStateManager.popMatrix(); + EntityPlayer entitylivingbaseIn = renderPlayerEvent.entityPlayer; { ItemStack itemstack = entitylivingbaseIn.getHeldItem(); @@ -79,9 +123,13 @@ public class FeaturePenguins extends SimpleFeature implements PlayerRenderListen { GlStateManager.pushMatrix(); GlStateManager.translate(renderPlayerEvent.x, renderPlayerEvent.y, renderPlayerEvent.z); - GlStateManager.rotate(-renderPlayerEvent.renderer.getRenderManager().playerViewY, 0.0f, 1.0f, 0.0f); - GlStateManager.translate(-0.3,1.8,0.1); - GlStateManager.scale(0.8,0.8,0.8); + if (renderPlayerEvent.entityPlayer.isSneaking()) + { + GlStateManager.translate(0.0F, -0.203125F, 0.0F); + } + GlStateManager.rotate(f1+180, 0.0f, -1.0f, 0.0f); + GlStateManager.translate(0,1.30 ,-0.5); + if (entitylivingbaseIn.fishEntity != null) @@ -92,20 +140,30 @@ public class FeaturePenguins extends SimpleFeature implements PlayerRenderListen Item item = itemstack.getItem(); Minecraft minecraft = Minecraft.getMinecraft(); - if (item instanceof ItemBlock && Block.getBlockFromItem(item).getRenderType() == 2) - { - GlStateManager.translate(0,0,0.2); + GlStateManager.rotate(180, 0.0f, 0.0f, 1.0f); + if (item.isFull3D()) { + GlStateManager.translate(0.05,0,0); + GlStateManager.rotate(90, 0.0f, 0.0f, 1.0f); + GlStateManager.rotate(-45, 1.0f, 0.0f, 0.0f); + } else if (item instanceof ItemBow) { + GlStateManager.translate(0,0.1, -0); + GlStateManager.rotate(90, 0.0f, 1.0f, 0.0f); + GlStateManager.rotate(-90, 0.0f, 0.0f, 1.0f); + } else if (item instanceof ItemBlock && Block.getBlockFromItem(item).getRenderType() == 2) { + GlStateManager.translate(0,-0.20,0.1); GlStateManager.translate(0.0F, 0.1875F, -0.3125F); - GlStateManager.rotate(20.0F, 1.0F, 0.0F, 0.0F); + GlStateManager.rotate(-25.0F, 1.0F, 0.0F, 0.0F); GlStateManager.rotate(45.0F, 0.0F, 1.0F, 0.0F); - float f1 = 0.375F; + f1 = 0.375F; GlStateManager.scale(-f1, -f1, f1); + } else if (item instanceof ItemBlock) { + GlStateManager.translate(0.0F, 0.05, 0.1); + GlStateManager.rotate(-25.0F, 1.0F, 0.0F, 0.0F); + } else { + GlStateManager.translate(0,-0.1, 0.1); } - if (entitylivingbaseIn.isSneaking()) - { - GlStateManager.translate(0.0F, 0.203125F, 0.0F); - } + GlStateManager.scale(0.8,0.8,0.8); minecraft.getItemRenderer().renderItem(entitylivingbaseIn, itemstack, ItemCameraTransforms.TransformType.THIRD_PERSON); GlStateManager.popMatrix(); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java new file mode 100644 index 00000000..77600d1e --- /dev/null +++ b/src/main/java/kr/syeyoung/dungeonsguide/features/listener/TextureStichListener.java @@ -0,0 +1,26 @@ +/* + * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod + * Copyright (C) 2021 cyoung06 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +package kr.syeyoung.dungeonsguide.features.listener; + +import net.minecraftforge.client.event.GuiScreenEvent; +import net.minecraftforge.client.event.TextureStitchEvent; + +public interface TextureStichListener { + void onTextureStitch(TextureStitchEvent event); +} diff --git a/src/main/resources/assets/dg/models/penguin.mtl b/src/main/resources/assets/dg/models/penguin.mtl new file mode 100644 index 00000000..1fc14a2f --- /dev/null +++ b/src/main/resources/assets/dg/models/penguin.mtl @@ -0,0 +1,4 @@ +# Made in Blockbench 3.8.4 +newmtl m_2 +map_Kd dungeonsguide:penguin +newmtl none
\ No newline at end of file diff --git a/src/main/resources/assets/dg/models/penguin.obj b/src/main/resources/assets/dg/models/penguin.obj new file mode 100644 index 00000000..29fe4680 --- /dev/null +++ b/src/main/resources/assets/dg/models/penguin.obj @@ -0,0 +1,1685 @@ +# Made in Blockbench 3.8.4 +mtllib penguin.mtl +o cube +v -0.09375 0.17922794117647123 -0.04411764705882426 +v -0.09375 0.17922794117647123 -0.41911764705882437 +v -0.09375 -0.008272058823528772 -0.04411764705882426 +v -0.09375 -0.008272058823528772 -0.41911764705882437 +v -0.28125 0.17922794117647123 -0.41911764705882437 +v -0.28125 0.17922794117647123 -0.04411764705882426 +v -0.28125 -0.008272058823528772 -0.41911764705882437 +v -0.28125 -0.008272058823528772 -0.04411764705882426 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vt 0.875 0.0625 +vt 0.875 0 +vt 1 0.0625 +vt 0.875 0 +vt 1 0 +vt 1 0.0625 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 1/1/1 3/2/2 2/3/3 +f 3/4/4 4/5/5 2/6/6 +usemtl m_2 +f 5/7/7 7/8/8 6/9/9 +f 7/10/10 8/11/11 6/12/12 +usemtl m_2 +f 5/13/13 6/14/14 2/15/15 +f 6/16/16 1/17/17 2/18/18 +usemtl m_2 +f 8/19/19 7/20/20 3/21/21 +f 7/22/22 4/23/23 3/24/24 +usemtl m_2 +f 6/25/25 8/26/26 1/27/27 +f 8/28/28 3/29/29 1/30/30 +usemtl m_2 +f 2/31/31 4/32/32 5/33/33 +f 4/34/34 7/35/35 5/36/36 +o cube +v 0.28125 0.17922794117647123 -0.04411764705882426 +v 0.28125 0.17922794117647123 -0.41911764705882437 +v 0.28125 -0.008272058823528772 -0.04411764705882426 +v 0.28125 -0.008272058823528772 -0.41911764705882437 +v 0.09375 0.17922794117647123 -0.41911764705882437 +v 0.09375 0.17922794117647123 -0.04411764705882426 +v 0.09375 -0.008272058823528772 -0.41911764705882437 +v 0.09375 -0.008272058823528772 -0.04411764705882426 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vt 0.9375 0.0625 +vt 0.9375 0 +vt 1 0.0625 +vt 0.9375 0 +vt 1 0 +vt 1 0.0625 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 9/37/37 11/38/38 10/39/39 +f 11/40/40 12/41/41 10/42/42 +usemtl m_2 +f 13/43/43 15/44/44 14/45/45 +f 15/46/46 16/47/47 14/48/48 +usemtl m_2 +f 13/49/49 14/50/50 10/51/51 +f 14/52/52 9/53/53 10/54/54 +usemtl m_2 +f 16/55/55 15/56/56 11/57/57 +f 15/58/58 12/59/59 11/60/60 +usemtl m_2 +f 14/61/61 16/62/62 9/63/63 +f 16/64/64 11/65/65 9/66/66 +usemtl m_2 +f 10/67/67 12/68/68 13/69/69 +f 12/70/70 15/71/71 13/72/72 +o cube +v 0.09375 0.17922794117647123 0.8933823529411757 +v 0.09375 0.17922794117647123 -0.04411764705882426 +v 0.09375 -0.008272058823528772 0.8933823529411757 +v 0.09375 -0.008272058823528772 -0.04411764705882426 +v -0.09375 0.17922794117647123 -0.04411764705882426 +v -0.09375 0.17922794117647123 0.8933823529411757 +v -0.09375 -0.008272058823528772 -0.04411764705882426 +v -0.09375 -0.008272058823528772 0.8933823529411757 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0 0.5625 +vt 0 0.5 +vt 0.3125 0.5625 +vt 0 0.5 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 17/73/73 19/74/74 18/75/75 +f 19/76/76 20/77/77 18/78/78 +usemtl m_2 +f 21/79/79 23/80/80 22/81/81 +f 23/82/82 24/83/83 22/84/84 +usemtl m_2 +f 21/85/85 22/86/86 18/87/87 +f 22/88/88 17/89/89 18/90/90 +usemtl m_2 +f 24/91/91 23/92/92 19/93/93 +f 23/94/94 20/95/95 19/96/96 +usemtl m_2 +f 22/97/97 24/98/98 17/99/99 +f 24/100/100 19/101/101 17/102/102 +usemtl m_2 +f 18/103/103 20/104/104 21/105/105 +f 20/106/106 23/107/107 21/108/108 +o cube +v 0.09375 0.3667279411764711 0.5183823529411757 +v 0.09375 0.3667279411764711 -0.04411764705882426 +v 0.09375 0.17922794117647123 0.5183823529411757 +v 0.09375 0.17922794117647123 -0.04411764705882426 +v -0.09375 0.3667279411764711 -0.04411764705882426 +v -0.09375 0.3667279411764711 0.5183823529411757 +v -0.09375 0.17922794117647123 -0.04411764705882426 +v -0.09375 0.17922794117647123 0.5183823529411757 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vt 0.25 0.75 +vt 0.25 0.5625 +vt 0.3125 0.75 +vt 0.25 0.5625 +vt 0.3125 0.5625 +vt 0.3125 0.75 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 25/109/109 27/110/110 26/111/111 +f 27/112/112 28/113/113 26/114/114 +usemtl m_2 +f 29/115/115 31/116/116 30/117/117 +f 31/118/118 32/119/119 30/120/120 +usemtl m_2 +f 29/121/121 30/122/122 26/123/123 +f 30/124/124 25/125/125 26/126/126 +usemtl m_2 +f 32/127/127 31/128/128 27/129/129 +f 31/130/130 28/131/131 27/132/132 +usemtl m_2 +f 30/133/133 32/134/134 25/135/135 +f 32/136/136 27/137/137 25/138/138 +usemtl m_2 +f 26/139/139 28/140/140 29/141/141 +f 28/142/142 31/143/143 29/144/144 +o cube +v 0.28125 1.679227941176471 0.33088235294117574 +v 0.28125 1.679227941176471 0.14338235294117574 +v 0.28125 0.17922794117647123 0.33088235294117574 +v 0.28125 0.17922794117647123 0.14338235294117574 +v -0.28125 1.679227941176471 0.14338235294117574 +v -0.28125 1.679227941176471 0.33088235294117574 +v -0.28125 0.17922794117647123 0.14338235294117574 +v -0.28125 0.17922794117647123 0.33088235294117574 +vt 0.8125 0.875 +vt 0.8125 0.375 +vt 0.875 0.875 +vt 0.8125 0.375 +vt 0.875 0.375 +vt 0.875 0.875 +vt 0.8125 0.875 +vt 0.8125 0.375 +vt 0.875 0.875 +vt 0.8125 0.375 +vt 0.875 0.375 +vt 0.875 0.875 +vt 0.8125 0.875 +vt 0.8125 0.8125 +vt 1 0.875 +vt 0.8125 0.8125 +vt 1 0.8125 +vt 1 0.875 +vt 0 0.625 +vt 0 0.5625 +vt 0.1875 0.625 +vt 0 0.5625 +vt 0.1875 0.5625 +vt 0.1875 0.625 +vt 0.4375 0.6875 +vt 0.4375 0.1875 +vt 0.625 0.6875 +vt 0.4375 0.1875 +vt 0.625 0.1875 +vt 0.625 0.6875 +vt 0 1 +vt 0 0.5 +vt 0.1875 1 +vt 0 0.5 +vt 0.1875 0.5 +vt 0.1875 1 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 33/145/145 35/146/146 34/147/147 +f 35/148/148 36/149/149 34/150/150 +usemtl m_2 +f 37/151/151 39/152/152 38/153/153 +f 39/154/154 40/155/155 38/156/156 +usemtl m_2 +f 37/157/157 38/158/158 34/159/159 +f 38/160/160 33/161/161 34/162/162 +usemtl m_2 +f 40/163/163 39/164/164 35/165/165 +f 39/166/166 36/167/167 35/168/168 +usemtl m_2 +f 38/169/169 40/170/170 33/171/171 +f 40/172/172 35/173/173 33/174/174 +usemtl m_2 +f 34/175/175 36/176/176 37/177/177 +f 36/178/178 39/179/179 37/180/180 +o cube +v 0.28125 1.3042279411764715 0.14338235294117574 +v 0.28125 1.3042279411764715 -0.04411764705882426 +v 0.28125 0.17922794117647123 0.14338235294117574 +v 0.28125 0.17922794117647123 -0.04411764705882426 +v -0.28125 1.3042279411764715 -0.04411764705882426 +v -0.28125 1.3042279411764715 0.14338235294117574 +v -0.28125 0.17922794117647123 -0.04411764705882426 +v -0.28125 0.17922794117647123 0.14338235294117574 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vt 0.1875 1 +vt 0.1875 0.625 +vt 0.25 1 +vt 0.1875 0.625 +vt 0.25 0.625 +vt 0.25 1 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 41/181/181 43/182/182 42/183/183 +f 43/184/184 44/185/185 42/186/186 +usemtl m_2 +f 45/187/187 47/188/188 46/189/189 +f 47/190/190 48/191/191 46/192/192 +usemtl m_2 +f 45/193/193 46/194/194 42/195/195 +f 46/196/196 41/197/197 42/198/198 +usemtl m_2 +f 48/199/199 47/200/200 43/201/201 +f 47/202/202 44/203/203 43/204/204 +usemtl m_2 +f 46/205/205 48/206/206 41/207/207 +f 48/208/208 43/209/209 41/210/210 +usemtl m_2 +f 42/211/211 44/212/212 45/213/213 +f 44/214/214 47/215/215 45/216/216 +o cube +v 0.28125 1.3042279411764715 -0.04411764705882426 +v 0.28125 1.3042279411764715 -0.23161764705882426 +v 0.28125 0.17922794117647123 -0.04411764705882426 +v 0.28125 0.17922794117647123 -0.23161764705882426 +v -0.28125 1.3042279411764715 -0.23161764705882426 +v -0.28125 1.3042279411764715 -0.04411764705882426 +v -0.28125 0.17922794117647123 -0.23161764705882426 +v -0.28125 0.17922794117647123 -0.04411764705882426 +vt 0 1 +vt 0 0.625 +vt 0.0625 1 +vt 0 0.625 +vt 0.0625 0.625 +vt 0.0625 1 +vt 0 1 +vt 0 0.625 +vt 0.0625 1 +vt 0 0.625 +vt 0.0625 0.625 +vt 0.0625 1 +vt 0 1 +vt 0 0.9375 +vt 0.1875 1 +vt 0 0.9375 +vt 0.1875 0.9375 +vt 0.1875 1 +vt 0 1 +vt 0 0.9375 +vt 0.1875 1 +vt 0 0.9375 +vt 0.1875 0.9375 +vt 0.1875 1 +vt 0 1 +vt 0 0.625 +vt 0.1875 1 +vt 0 0.625 +vt 0.1875 0.625 +vt 0.1875 1 +vt 0 1 +vt 0 0.625 +vt 0.1875 1 +vt 0 0.625 +vt 0.1875 0.625 +vt 0.1875 1 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 49/217/217 51/218/218 50/219/219 +f 51/220/220 52/221/221 50/222/222 +usemtl m_2 +f 53/223/223 55/224/224 54/225/225 +f 55/226/226 56/227/227 54/228/228 +usemtl m_2 +f 53/229/229 54/230/230 50/231/231 +f 54/232/232 49/233/233 50/234/234 +usemtl m_2 +f 56/235/235 55/236/236 51/237/237 +f 55/238/238 52/239/239 51/240/240 +usemtl m_2 +f 54/241/241 56/242/242 49/243/243 +f 56/244/244 51/245/245 49/246/246 +usemtl m_2 +f 50/247/247 52/248/248 53/249/249 +f 52/250/250 55/251/251 53/252/252 +o cube +v 0.28125 1.679227941176471 0.14338235294117574 +v 0.28125 1.679227941176471 -0.23161764705882426 +v 0.28125 1.491727941176471 0.14338235294117574 +v 0.28125 1.491727941176471 -0.23161764705882426 +v -0.28125 1.679227941176471 -0.23161764705882426 +v -0.28125 1.679227941176471 0.14338235294117574 +v -0.28125 1.491727941176471 -0.23161764705882426 +v -0.28125 1.491727941176471 0.14338235294117574 +vt 0.8125 1 +vt 0.8125 0.9375 +vt 1 1 +vt 0.8125 0.9375 +vt 1 0.9375 +vt 1 1 +vt 0.875 1 +vt 0.875 0.9375 +vt 1 1 +vt 0.875 0.9375 +vt 1 0.9375 +vt 1 1 +vt 0.8125 1 +vt 0.8125 0.875 +vt 1 1 +vt 0.8125 0.875 +vt 1 0.875 +vt 1 1 +vt 0 1 +vt 0 0.875 +vt 0.1875 1 +vt 0 0.875 +vt 0.1875 0.875 +vt 0.1875 1 +vt 0 1 +vt 0 0.9375 +vt 0.1875 1 +vt 0 0.9375 +vt 0.1875 0.9375 +vt 0.1875 1 +vt 0.8125 1 +vt 0.8125 0.9375 +vt 1 1 +vt 0.8125 0.9375 +vt 1 0.9375 +vt 1 1 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +vn 0 0 -1 +usemtl m_2 +f 57/253/253 59/254/254 58/255/255 +f 59/256/256 60/257/257 58/258/258 +usemtl m_2 +f 61/259/259 63/260/260 62/261/261 +f 63/262/262 64/263/263 62/264/264 +usemtl m_2 +f 61/265/265 62/266/266 58/267/267 +f 62/268/268 57/269/269 58/270/270 +usemtl m_2 +f 64/271/271 63/272/272 59/273/273 +f 63/274/274 60/275/275 59/276/276 +usemtl m_2 +f 62/277/277 64/278/278 57/279/279 +f 64/280/280 59/281/281 57/282/282 +usemtl m_2 +f 58/283/283 60/284/284 61/285/285 +f 60/286/286 63/287/287 61/288/288 +o cube +v 0.28125 1.679227941176471 0.5183823529411757 +v 0.28125 1.679227941176471 0.33088235294117574 +v 0.28125 1.491727941176471 0.5183823529411757 +v 0.28125 1.491727941176471 0.33088235294117574 +v 0.09375 1.679227941176471 0.33088235294117574 +v 0.09375 1.679227941176471 0.5183823529411757 +v 0.09375 1.491727941176471 0.33088235294117574 +v 0.09375 1.491727941176471 0.5183823529411757 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vt 0.9375 0.75 +vt 0.9375 0.6875 +vt 1 0.75 +vt 0.9375 0.6875 +vt 1 0.6875 +vt 1 0.75 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn 1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn -1 0 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 -1 0 +vn 0 0 |
