From 5444f57cade5b04a92dea47fc81cee5a8bfc2b68 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 11 Aug 2025 11:14:06 +0200 Subject: [PATCH 1/5] the glunch --- changelog | 23 +------ src/main/java/com/hbm/calc/EasyLocation.java | 14 ----- src/main/java/com/hbm/calc/Location.java | 33 ---------- src/main/java/com/hbm/qmaw/GuiQMAW.java | 58 +++++++++++++++++- src/main/java/com/hbm/qmaw/ManualElement.java | 2 +- src/main/java/com/hbm/qmaw/QMAWLoader.java | 7 ++- .../hbm/qmaw/components/QComponentLink.java | 7 ++- .../hbm/qmaw/components/QComponentText.java | 3 +- .../network/TileEntityConverterHeRf.java | 7 ++- .../assets/hbm/textures/gui/gui_wiki.png | Bin 1017 -> 1258 bytes 10 files changed, 74 insertions(+), 80 deletions(-) delete mode 100644 src/main/java/com/hbm/calc/EasyLocation.java delete mode 100644 src/main/java/com/hbm/calc/Location.java diff --git a/changelog b/changelog index 95f85136d..9e379b53c 100644 --- a/changelog +++ b/changelog @@ -1,23 +1,2 @@ -## Added -* QMAW (quick manual and wiki) - * It's a simple ingame manual that can be found by pressing F1 on items (like the WIAJ presentations) - * Supports text and links and not much else - * Easy to make entries for, the system scans `assets/manual` for valid `.json` format files - * Should also work in resource packs (no recent tests for that, not going to make promises) - * Still WIP, many new info pages are yet to be made -* `/ntmlocate` - * Finds structures - * Only works on the new component structures, the old crusty ones like the factors and powerplant aren't supported - ## Changed -* Updated chinese and russian localization -* All the never completed missile parts (20/20 fuselage, 20 warhead, 10 and 15 tec kerosene thrusters) have been removed -* The electric arc furnace now scrapes the vanilla furnace recipe list on server start in addition to postinit, making sure recipes added during postinit after NTM loads (like Thermal's ingots) are covered too -* The shredder's sound will now start immediately when processing instead of with random delay -* The assembly machine can now make nuclear waste into barrels -* Capacitors now have OpenComputers integration - -## Fixed -* Fixed GT6 compatibility watz pellets crashing due to misconfigured recipes -* Removed failed attempt at fixing the gun desync dupe which made things worse -* Fixed a potential crash regarding structure blocks \ No newline at end of file +* QMAW now has buttons for returning to previously viewed pages \ No newline at end of file diff --git a/src/main/java/com/hbm/calc/EasyLocation.java b/src/main/java/com/hbm/calc/EasyLocation.java deleted file mode 100644 index 8e4755c1b..000000000 --- a/src/main/java/com/hbm/calc/EasyLocation.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.hbm.calc; - -public class EasyLocation { - - public double posX; - public double posY; - public double posZ; - - public EasyLocation(double x, double y, double z) { - posX = x; - posY = y; - posZ = z; - } -} diff --git a/src/main/java/com/hbm/calc/Location.java b/src/main/java/com/hbm/calc/Location.java deleted file mode 100644 index 6c1d7235d..000000000 --- a/src/main/java/com/hbm/calc/Location.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.calc; - -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class Location { - - public int x; - public int y; - public int z; - public World world; - - public Location(World world, int x, int y, int z) { - this.world = world; - this.x = x; - this.y = y; - this.z = z; - } - - public Location add(int xa, int ya, int za) { - return new Location(world, x + xa, y + ya, z + za); - } - - public Location add(ForgeDirection dir) { - return add(dir.offsetX, dir.offsetY, dir.offsetZ); - } - - public TileEntity getTileEntity() { - return world.getTileEntity(x, y, z); - } - -} diff --git a/src/main/java/com/hbm/qmaw/GuiQMAW.java b/src/main/java/com/hbm/qmaw/GuiQMAW.java index b4d60c42b..c59834957 100644 --- a/src/main/java/com/hbm/qmaw/GuiQMAW.java +++ b/src/main/java/com/hbm/qmaw/GuiQMAW.java @@ -3,13 +3,16 @@ package com.hbm.qmaw; import java.util.ArrayList; import java.util.List; +import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; import com.hbm.qmaw.components.*; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.resources.LanguageManager; @@ -22,8 +25,12 @@ public class GuiQMAW extends GuiScreen { protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_wiki.png"); public String title; + public String qmawID; public ItemStack icon; public List> lines = new ArrayList(); + /** History for returning via button */ + public List back = new ArrayList(); + public List forward = new ArrayList(); protected int xSize = 340; protected int ySize = 224; @@ -38,6 +45,7 @@ public class GuiQMAW extends GuiScreen { public static final String EN_US = "en_US"; public GuiQMAW(QuickManualAndWiki qmaw) { + qmawID = qmaw.name; parseQMAW(qmaw); } @@ -163,6 +171,43 @@ public class GuiQMAW extends GuiScreen { this.lastClickX = x; this.lastClickY = y; } + + if(guiLeft + 3 <= x && guiLeft + 3 + 18 > x && guiTop + 3 < y && guiTop + 3 + 18 >= y) back(); + if(guiLeft + 21 <= x && guiLeft + 21 + 18 > x && guiTop + 3 < y && guiTop + 3 + 18 >= y) forward(); + } + + public void back() { + if(this.back.isEmpty()) return; + + String prev = back.get(back.size() - 1); + + QuickManualAndWiki qmaw = QMAWLoader.qmaw.get(prev); + if(qmaw != null) { + Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + GuiQMAW screen = new GuiQMAW(qmaw); + screen.back.addAll(back); + screen.back.remove(screen.back.size() - 1); + screen.forward.addAll(forward); + screen.forward.add(qmawID); + FMLCommonHandler.instance().showGuiScreen(screen); + } + } + + public void forward() { + if(this.forward.isEmpty()) return; + + String next = forward.get(forward.size() - 1); + + QuickManualAndWiki qmaw = QMAWLoader.qmaw.get(next); + if(qmaw != null) { + Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + GuiQMAW screen = new GuiQMAW(qmaw); + screen.back.addAll(back); + screen.back.add(qmawID); + screen.forward.addAll(forward); + screen.forward.remove(screen.forward.size() - 1); + FMLCommonHandler.instance().showGuiScreen(screen); + } } public int getSliderPosition() { @@ -213,7 +258,7 @@ public class GuiQMAW extends GuiScreen { private void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { - int x = 7; + int x = 43; int y = 4; if(this.icon != null) { @@ -242,7 +287,11 @@ public class GuiQMAW extends GuiScreen { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, 170, ySize); - drawTexturedModalRect(guiLeft + 170, guiTop, 22, 0, 170, ySize); + drawTexturedModalRect(guiLeft + 170, guiTop, 52, 0, 30, ySize); + drawTexturedModalRect(guiLeft + 200, guiTop, 52, 0, 140, ySize); + + if(!back.isEmpty()) drawTexturedModalRect(guiLeft + 3, guiTop + 3, 204, 0, 18, 18); + if(!forward.isEmpty()) drawTexturedModalRect(guiLeft + 21, guiTop + 3, 222, 0, 18, 18); // scroll bar drawTexturedModalRect(guiLeft + xSize - 15, guiTop + getSliderPosition(), 192, 0, 12, 16); @@ -273,7 +322,7 @@ public class GuiQMAW extends GuiScreen { boolean mouseOver = (elementX <= mouseX && elementX + element.getWidth() > mouseX && elementY < mouseY && elementY + element.getHeight() >= mouseY); element.render(mouseOver, elementX, elementY, mouseX, mouseY); if(elementX <= lastClickX && elementX + element.getWidth() > lastClickX && elementY < lastClickY && elementY + element.getHeight() >= lastClickY) - element.onClick(); + element.onClick(this); inset += element.getWidth(); } @@ -283,6 +332,9 @@ public class GuiQMAW extends GuiScreen { @Override protected void keyTyped(char typedChar, int keyCode) { + + if(keyCode == Keyboard.KEY_LEFT) back(); + if(keyCode == Keyboard.KEY_RIGHT) forward(); if(keyCode == 1 || keyCode == this.mc.gameSettings.keyBindInventory.getKeyCode()) { this.mc.displayGuiScreen((GuiScreen) null); diff --git a/src/main/java/com/hbm/qmaw/ManualElement.java b/src/main/java/com/hbm/qmaw/ManualElement.java index 7d5c640d5..92ab74a13 100644 --- a/src/main/java/com/hbm/qmaw/ManualElement.java +++ b/src/main/java/com/hbm/qmaw/ManualElement.java @@ -5,5 +5,5 @@ public abstract class ManualElement { public abstract int getWidth(); public abstract int getHeight(); public abstract void render(boolean isMouseOver, int x, int y, int mouseX, int mouseY); - public abstract void onClick(); + public abstract void onClick(GuiQMAW gui); } diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java index f085aeba4..3bf265372 100644 --- a/src/main/java/com/hbm/qmaw/QMAWLoader.java +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -60,6 +60,7 @@ public class QMAWLoader implements IResourceManagerReloadListener { //no fucking null check, if this fails then the entire game will sink along with the ship String path = QMAWLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath(); // exclude .class in the case of a dev env + MainRegistry.logger.info("[QMAW] Current running file: " + path); if(!path.endsWith(".class")) registerModFileURL(new File(path)); // i am going to shit myself qmaw.clear(); @@ -76,7 +77,10 @@ public class QMAWLoader implements IResourceManagerReloadListener { * */ public static void agonyEngine() { - for(File modFile : registeredModFiles) dissectZip(modFile); + for(File modFile : registeredModFiles) { + logJarAttempt(modFile.getName()); + dissectZip(modFile); + } File devEnvManualFolder = new File(Minecraft.getMinecraft().mcDataDir.getAbsolutePath().replace("/eclipse/.".replace('/', File.separatorChar), "") + "/src/main/resources/assets/hbm/manual".replace('/', File.separatorChar)); if(devEnvManualFolder.exists() && devEnvManualFolder.isDirectory()) { @@ -102,6 +106,7 @@ public class QMAWLoader implements IResourceManagerReloadListener { } } + public static void logJarAttempt(String name) { MainRegistry.logger.info("[QMAW] Dissecting jar " + name); } public static void logPackAttempt(String name) { MainRegistry.logger.info("[QMAW] Dissecting resource " + name); } public static void logFoundManual(String name) { MainRegistry.logger.info("[QMAW] Found manual " + name); } diff --git a/src/main/java/com/hbm/qmaw/components/QComponentLink.java b/src/main/java/com/hbm/qmaw/components/QComponentLink.java index c2816835e..acb4a4c9b 100644 --- a/src/main/java/com/hbm/qmaw/components/QComponentLink.java +++ b/src/main/java/com/hbm/qmaw/components/QComponentLink.java @@ -81,11 +81,14 @@ public class QComponentLink extends ManualElement { font.drawString(text, x, y, isMouseOver ? hoverColor : color); } - @Override public void onClick() { + @Override public void onClick(GuiQMAW gui) { QuickManualAndWiki qmaw = QMAWLoader.qmaw.get(link); if(qmaw != null) { Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - FMLCommonHandler.instance().showGuiScreen(new GuiQMAW(qmaw)); + GuiQMAW screen = new GuiQMAW(qmaw); + screen.back.addAll(gui.back); + screen.back.add(gui.qmawID); + FMLCommonHandler.instance().showGuiScreen(screen); } } } diff --git a/src/main/java/com/hbm/qmaw/components/QComponentText.java b/src/main/java/com/hbm/qmaw/components/QComponentText.java index 30fd266b5..efcb0ffd8 100644 --- a/src/main/java/com/hbm/qmaw/components/QComponentText.java +++ b/src/main/java/com/hbm/qmaw/components/QComponentText.java @@ -1,5 +1,6 @@ package com.hbm.qmaw.components; +import com.hbm.qmaw.GuiQMAW; import com.hbm.qmaw.ManualElement; import net.minecraft.client.Minecraft; @@ -40,5 +41,5 @@ public class QComponentText extends ManualElement { font.drawString(text, x, y, color); } - @Override public void onClick() { } + @Override public void onClick(GuiQMAW gui) { } } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java index 3d7072304..f6dc1fdff 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterHeRf.java @@ -2,9 +2,10 @@ package com.hbm.tileentity.network; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; -import com.hbm.calc.Location; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.Compat; +import com.hbm.util.fauxpointtwelve.BlockPos; import api.hbm.energymk2.IEnergyReceiverMK2; import cofh.api.energy.EnergyStorage; @@ -41,8 +42,8 @@ public class TileEntityConverterHeRf extends TileEntityLoadedBase implements IEn for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); - Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir); - TileEntity entity = loc.getTileEntity(); + BlockPos loc = new BlockPos(xCoord, yCoord, zCoord).offset(dir); + TileEntity entity = Compat.getTileStandard(worldObj, loc.getX(), loc.getY(), loc.getZ()); if (entity != null && entity instanceof IEnergyReceiver) { IEnergyReceiver receiver = (IEnergyReceiver) entity; diff --git a/src/main/resources/assets/hbm/textures/gui/gui_wiki.png b/src/main/resources/assets/hbm/textures/gui/gui_wiki.png index 48c92d1c46ca12cf5d22954dbccfe040f2e43d86..9f8c2d655a66fcc3422ab635e9e2e608eefec5b7 100644 GIT binary patch literal 1258 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIGxWLQfaR zkcv5P@A&53c4KG=TzVmP6W6Ah%rD$-elT+l6mffZkU1kcW$NWE+Tzyxm78zBz4zwpb&2Pt9zdc$)|w|VoiZBOXg_)Tw*^zFm?mS-iBC(h_GG^_vrwYJf=Y5B6uUr%p;zmWcI zvD@S641ad~ue{iB*(CSd@4rfqIT)@R`CeXK|9{2ulil)+2XuF(H0c-G?Z0OBFQUeU zBQnXf{%o!#Q^VQHY=-M|{`7C(`DEgOgA6r4fBk&)`RDfyycK6xW;2{u|G&}D!sMLc zw4MX28Gn5G`dLZZvW;WIvi@Bs%1`7o7o0u$zhbu10o{r^)B8IaEx*-z=e$JmYh literal 1017 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|G$6%N?Bp530R%N1DIE+9%o{vi z978JRyuIt#H!DG+A#vG5519t(oevvi8hT%@TAnH1+v__!$Tv-*a(?s@@GZS24NI{oz1w>sh4J%ti=`wUmy+?G4z`Op2^|L5MmSH6I`XFGd( zP4Nfw%O?7K@HuDudFkt=vfFa4tN4KV6EFBNrH&!&LHw8X)q3kd3O!x@ KT-G@yGywq1n>$(n From b374f4088be4845b1cf1106e2123f1c226f8700e Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 11 Aug 2025 11:52:48 +0200 Subject: [PATCH 2/5] agony --- src/main/java/com/hbm/main/MainRegistry.java | 3 +++ src/main/java/com/hbm/qmaw/QMAWLoader.java | 16 ++++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e5c2ca63d..20fc7b204 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -40,6 +40,7 @@ import com.hbm.lib.HbmWorld; import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; +import com.hbm.qmaw.QMAWLoader; import com.hbm.saveddata.satellites.Satellite; import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityLaunchPadBase; @@ -253,6 +254,8 @@ public class MainRegistry { @EventHandler public void PreLoad(FMLPreInitializationEvent PreEvent) { CrashHelper.init(); + + QMAWLoader.registerModFileURL(FMLCommonHandler.instance().findContainerFor(RefStrings.MODID).getSource()); startupTime = System.currentTimeMillis(); configDir = PreEvent.getModConfigurationDirectory(); diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java index 3bf265372..ee1596b3f 100644 --- a/src/main/java/com/hbm/qmaw/QMAWLoader.java +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -48,7 +48,7 @@ public class QMAWLoader implements IResourceManagerReloadListener { MainRegistry.logger.info("[QMAW] Loaded " + qmaw.size() + " manual entries! (" + (System.currentTimeMillis() - timestamp) + "ms)"); } - /** For the like 2 people who might consider making an NTM addon and want to include manual pages */ + /** For the like 2 people who might consider making an NTM addon and want to include manual pages. Requires the mod's actual JAR file as the parameter. */ public static void registerModFileURL(File file) { registeredModFiles.add(file); } @@ -56,12 +56,14 @@ public class QMAWLoader implements IResourceManagerReloadListener { /** Searches the asset folder for QMAW format JSON files and adds entries based on that */ public static void init() { - //the mod's file, assuming the mod is a file (not the case in a dev env, fuck!) + /*//the mod's file, assuming the mod is a file (not the case in a dev env, fuck!) //no fucking null check, if this fails then the entire game will sink along with the ship String path = QMAWLoader.class.getProtectionDomain().getCodeSource().getLocation().getPath(); // exclude .class in the case of a dev env MainRegistry.logger.info("[QMAW] Current running file: " + path); - if(!path.endsWith(".class")) registerModFileURL(new File(path)); // i am going to shit myself + if(!path.endsWith(".class")) registerModFileURL(new File(path)); // i am going to shit myself*/ // deactivated because it likely doesn't even fucking work + + // registering of the mod file now happens in the MainRegistry during preinit qmaw.clear(); triggers.clear(); @@ -153,7 +155,7 @@ public class QMAWLoader implements IResourceManagerReloadListener { /** Opens a resource pack folder, skips to the manual folder, then tries to dissect that */ public static void dissectFolder(File folder) { - File manualFolder = new File(folder, "/assets/manual"); + File manualFolder = new File(folder, "/assets/hbm/manual"); if(manualFolder.exists() && manualFolder.isDirectory()) dissectManualFolder(manualFolder); } @@ -180,6 +182,12 @@ public class QMAWLoader implements IResourceManagerReloadListener { public static void registerJson(String file, JsonObject json) { String name = json.get("name").getAsString(); + + if(QMAWLoader.qmaw.containsKey(name)) { + MainRegistry.logger.info("[QMAW] Skipping existing entry " + file); + return; + } + QuickManualAndWiki qmaw = new QuickManualAndWiki(name); if(json.has("icon")) { From 938c28f293c6c3a1077bbdac8f6bbd821cecbbf0 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 11 Aug 2025 11:59:28 +0200 Subject: [PATCH 3/5] work, whore --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 15aedca55..13f49a3ec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,6 +12,7 @@ name: Java CI with Gradle on: schedule: - cron: "0 0 * * *" + workflow_dispatch: jobs: build: From 9cfdc171156b80fa27f0e35c3010cb277cf37742 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 14 Aug 2025 16:20:39 +0200 Subject: [PATCH 4/5] multidimensional time crystal --- changelog | 10 ++++++++- .../hbm/entity/item/EntityDeliveryDrone.java | 4 +++- .../com/hbm/entity/logic/EntityBalefire.java | 21 +++++++++---------- .../gui/LoadingScreenRendererNT.java | 2 +- .../com/hbm/main/ModEventHandlerClient.java | 5 +++++ src/main/java/com/hbm/qmaw/QMAWLoader.java | 2 ++ .../hbm/tileentity/TileEntityProxyCombo.java | 2 +- .../tileentity/machine/TileEntityITER.java | 10 ++++----- .../machine/TileEntityReactorZirnox.java | 6 +++--- .../machine/TileEntityRefueler.java | 1 - .../hbm/manual/{ => material}/alloy.json | 0 .../assets/hbm/manual/material/aluminium.json | 11 ++++++++++ .../hbm/manual/{ => material}/arsenic.json | 0 .../manual/{ => material}/arsenic_bronze.json | 0 .../hbm/manual/{ => material}/bakelite.json | 0 .../hbm/manual/{ => material}/bismuth.json | 0 .../manual/{ => material}/bismuth_bronze.json | 0 .../hbm/manual/{ => material}/bscco.json | 0 .../hbm/manual/{ => material}/cadmium.json | 0 .../hbm/manual/material/cadmium_steel.json | 11 ++++++++++ .../assets/hbm/manual/material/cinnabar.json | 11 ++++++++++ .../assets/hbm/manual/material/coke.json | 11 ++++++++++ .../assets/hbm/manual/material/copper.json | 11 ++++++++++ .../assets/hbm/manual/material/desh.json | 11 ++++++++++ .../manual/{ => material}/ferrouranium.json | 0 .../assets/hbm/manual/material/graphite.json | 11 ++++++++++ .../assets/hbm/manual/material/gunmetal.json | 11 ++++++++++ .../assets/hbm/manual/material/hss.json | 11 ++++++++++ .../assets/hbm/manual/material/latex.json | 11 ++++++++++ .../assets/hbm/manual/material/lead.json | 11 ++++++++++ .../hbm/manual/{ => material}/mingrade.json | 0 .../assets/hbm/manual/material/neptunium.json | 11 ++++++++++ .../manual/{ => material}/plutonium-238.json | 0 .../manual/{ => material}/plutonium-239.json | 0 .../manual/{ => material}/plutonium-240.json | 0 .../manual/{ => material}/plutonium-241.json | 0 .../manual/{ => material}/plutonium-rg.json | 0 .../hbm/manual/{ => material}/plutonium.json | 0 .../hbm/manual/{ => material}/polonium.json | 0 .../hbm/manual/{ => material}/polymer.json | 0 .../hbm/manual/{ => material}/radium.json | 0 .../assets/hbm/manual/material/rubber.json | 11 ++++++++++ .../hbm/manual/{ => material}/silicon.json | 0 .../assets/hbm/manual/material/sodium.json | 11 ++++++++++ .../hbm/manual/{ => material}/steel.json | 0 .../assets/hbm/manual/material/sulfur.json | 11 ++++++++++ .../hbm/manual/{ => material}/tantalium.json | 0 .../hbm/manual/{ => material}/technetium.json | 0 .../{ => material}/technetium_steel.json | 0 .../hbm/manual/{ => material}/thorium.json | 0 .../manual/{ => material}/uranium-233.json | 0 .../manual/{ => material}/uranium-235.json | 0 .../manual/{ => material}/uranium-238.json | 0 .../hbm/manual/{ => material}/uranium.json | 0 .../hbm/manual/material/weaponsteel.json | 11 ++++++++++ 55 files changed, 215 insertions(+), 24 deletions(-) rename src/main/resources/assets/hbm/manual/{ => material}/alloy.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/aluminium.json rename src/main/resources/assets/hbm/manual/{ => material}/arsenic.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/arsenic_bronze.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/bakelite.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/bismuth.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/bismuth_bronze.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/bscco.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/cadmium.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/cadmium_steel.json create mode 100644 src/main/resources/assets/hbm/manual/material/cinnabar.json create mode 100644 src/main/resources/assets/hbm/manual/material/coke.json create mode 100644 src/main/resources/assets/hbm/manual/material/copper.json create mode 100644 src/main/resources/assets/hbm/manual/material/desh.json rename src/main/resources/assets/hbm/manual/{ => material}/ferrouranium.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/graphite.json create mode 100644 src/main/resources/assets/hbm/manual/material/gunmetal.json create mode 100644 src/main/resources/assets/hbm/manual/material/hss.json create mode 100644 src/main/resources/assets/hbm/manual/material/latex.json create mode 100644 src/main/resources/assets/hbm/manual/material/lead.json rename src/main/resources/assets/hbm/manual/{ => material}/mingrade.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/neptunium.json rename src/main/resources/assets/hbm/manual/{ => material}/plutonium-238.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/plutonium-239.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/plutonium-240.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/plutonium-241.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/plutonium-rg.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/plutonium.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/polonium.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/polymer.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/radium.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/rubber.json rename src/main/resources/assets/hbm/manual/{ => material}/silicon.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/sodium.json rename src/main/resources/assets/hbm/manual/{ => material}/steel.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/sulfur.json rename src/main/resources/assets/hbm/manual/{ => material}/tantalium.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/technetium.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/technetium_steel.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/thorium.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/uranium-233.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/uranium-235.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/uranium-238.json (100%) rename src/main/resources/assets/hbm/manual/{ => material}/uranium.json (100%) create mode 100644 src/main/resources/assets/hbm/manual/material/weaponsteel.json diff --git a/changelog b/changelog index 9e379b53c..d29339e12 100644 --- a/changelog +++ b/changelog @@ -1,2 +1,10 @@ ## Changed -* QMAW now has buttons for returning to previously viewed pages \ No newline at end of file +* QMAW now has buttons for returning to previously viewed pages +* QMAW file detection now includes subfolders to `manual` +* OpenComputers integration for the ZIRNOX should now return values in °C and bar instead of unexplained weird internal units + +## Fixed +* Fixed QMAW not working at all +* Potentially fixed a bug where proxy tile entities would reference unloaded core tile entities which would cause bizarre item voiding/duping issues in rare cases +* Fixed fusion reactor automation being able to remove items other than the breeding output slot +* Fixed chunkloading transport drones getting stuck due to off-by-one rounding errors \ No newline at end of file diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index db9e90da3..f733f99ca 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -200,9 +200,11 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, } // This is the lowest padding that worked with my drone waypoint path. if they stop getting loaded crank up paddingSize - for (ChunkCoordIntPair chunk : ChunkShapeHelper.getChunksAlongLineSegment((int) this.posX, (int) this.posZ, (int) (this.posX + this.motionX), (int) (this.posZ + this.motionZ), 4)){ + for (ChunkCoordIntPair chunk : ChunkShapeHelper.getChunksAlongLineSegment((int) Math.floor(this.posX), (int) Math.floor(this.posZ), (int) Math.floor(this.posX + this.motionX), (int) Math.floor(this.posZ + this.motionZ), 8)){ ForgeChunkManager.forceChunk(loaderTicket, chunk); } + + System.out.println("guhhh"); } } diff --git a/src/main/java/com/hbm/entity/logic/EntityBalefire.java b/src/main/java/com/hbm/entity/logic/EntityBalefire.java index b368e171d..369a4aba9 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBalefire.java +++ b/src/main/java/com/hbm/entity/logic/EntityBalefire.java @@ -10,8 +10,8 @@ import com.hbm.main.MainRegistry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityBalefire extends EntityExplosionChunkloading { - +public class EntityBalefire extends EntityExplosionChunkloading { + public int age = 0; public int destructionRange = 0; public ExplosionBalefire exp; @@ -24,13 +24,11 @@ public class EntityBalefire extends EntityExplosionChunkloading { destructionRange = nbt.getInteger("destructionRange"); speed = nbt.getInteger("speed"); did = nbt.getBoolean("did"); - - - exp = new ExplosionBalefire((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange); + + exp = new ExplosionBalefire((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange); exp.readFromNbt(nbt, "exp_"); - - this.did = true; - + + this.did = true; } @Override @@ -39,10 +37,10 @@ public class EntityBalefire extends EntityExplosionChunkloading { nbt.setInteger("destructionRange", destructionRange); nbt.setInteger("speed", speed); nbt.setBoolean("did", did); - + if(exp != null) exp.saveToNbt(nbt, "exp_"); - + } public EntityBalefire(World p_i1582_1_) { @@ -53,7 +51,8 @@ public class EntityBalefire extends EntityExplosionChunkloading { public void onUpdate() { super.onUpdate(); - if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); + if(!worldObj.isRemote) + loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); if(!this.did) { if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) diff --git a/src/main/java/com/hbm/inventory/gui/LoadingScreenRendererNT.java b/src/main/java/com/hbm/inventory/gui/LoadingScreenRendererNT.java index 8dd24c319..10c4624ee 100644 --- a/src/main/java/com/hbm/inventory/gui/LoadingScreenRendererNT.java +++ b/src/main/java/com/hbm/inventory/gui/LoadingScreenRendererNT.java @@ -37,7 +37,7 @@ public class LoadingScreenRendererNT extends LoadingScreenRenderer { } private String chooseTip() { - if(HTTPHandler.tipOfTheDay.isEmpty()) return "null"; + if(HTTPHandler.tipOfTheDay.isEmpty()) return "Explore! There's tons of free stuff to find."; return HTTPHandler.tipOfTheDay.get(new Random().nextInt(HTTPHandler.tipOfTheDay.size())); } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index c82f7b1b2..36081693c 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -114,6 +114,8 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; import net.minecraftforge.client.event.sound.PlaySoundEvent17; import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.oredict.OreDictionary; + import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.GL11; @@ -753,6 +755,9 @@ public class ModEventHandlerClient { try { QuickManualAndWiki qmaw = QMAWLoader.triggers.get(comp); + if(qmaw == null) { + qmaw = QMAWLoader.triggers.get(new ComparableStack(comp.item, 1, OreDictionary.WILDCARD_VALUE)); + } if(qmaw != null) { list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("qmaw.tab", Keyboard.getKeyName(HbmKeybinds.qmaw.getKeyCode()))); lastQMAW = qmaw; diff --git a/src/main/java/com/hbm/qmaw/QMAWLoader.java b/src/main/java/com/hbm/qmaw/QMAWLoader.java index ee1596b3f..b84cf594e 100644 --- a/src/main/java/com/hbm/qmaw/QMAWLoader.java +++ b/src/main/java/com/hbm/qmaw/QMAWLoader.java @@ -174,6 +174,8 @@ public class QMAWLoader implements IResourceManagerReloadListener { } catch(Exception ex) { MainRegistry.logger.info("[QMAW] Error reading manual " + name + ": " + ex); } + } else if(file.isDirectory()) { + dissectManualFolder(file); // scrape subfolders too lmao } } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index fb80aa785..dc30ea5b3 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -77,7 +77,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy /** Returns the actual tile entity that represents the core. Only for internal use, and EnergyControl. */ public TileEntity getTile() { - if(tile == null || tile.isInvalid()) { + if(tile == null || tile.isInvalid() || (tile instanceof TileEntityLoadedBase && !((TileEntityLoadedBase) tile).isLoaded)) { tile = this.getTE(); } return tile; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index 1b75df130..93f8675ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -317,19 +317,19 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyRece } @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return slot == 2; // only allow removing breeder outputs } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + public int[] getAccessibleSlotsFromSide(int side) { return new int[] { 1, 2, 4 }; } @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { + public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 1 && BreederRecipes.getOutput(itemStack) != null) + if(i == 1 && BreederRecipes.getOutput(stack) != null) return true; return false; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 3f3ae011a..a7ec9973f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -468,13 +468,13 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getTemp(Context context, Arguments args) { - return new Object[] {heat}; + return new Object[] {Math.round(heat * 1.0E-5D * 780.0D + 20.0D)}; } @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getPressure(Context context, Arguments args) { - return new Object[] {pressure}; + return new Object[] {Math.round(pressure * 1.0E-5D * 30.0D)}; } @Callback(direct = true) @@ -504,7 +504,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IC @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, pressure, water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; + return new Object[] {Math.round(heat * 1.0E-5D * 780.0D + 20.0D), Math.round(pressure * 1.0E-5D * 30.0D), water.getFill(), steam.getFill(), carbonDioxide.getFill(), isOn}; } @Callback(direct = true, limit = 4) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java index 22c3cf0d2..62f01a1e2 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java @@ -153,5 +153,4 @@ public class TileEntityRefueler extends TileEntityLoadedBase implements IFluidSt public FluidTank[] getReceivingTanks() { return new FluidTank[] { tank }; } - } diff --git a/src/main/resources/assets/hbm/manual/alloy.json b/src/main/resources/assets/hbm/manual/material/alloy.json similarity index 100% rename from src/main/resources/assets/hbm/manual/alloy.json rename to src/main/resources/assets/hbm/manual/material/alloy.json diff --git a/src/main/resources/assets/hbm/manual/material/aluminium.json b/src/main/resources/assets/hbm/manual/material/aluminium.json new file mode 100644 index 000000000..9e5732336 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/aluminium.json @@ -0,0 +1,11 @@ +{ + "name": "Aluminium", + "icon": ["hbm:item.ingot_aluminium", 1, 0], + "trigger": [["hbm:item.ingot_aluminium"], ["hbm:item.plate_aluminium"], ["hbm:item.powder_aluminium"]], + "title": { + "en_US": "Aluminium" + }, + "content": { + "en_US": "Common, lightweight metal. Available early on from smelting cryolite ('aluminium-bearing ore') in a [[combination oven|Combination Oven]]. Can be made later by processing [[bauxite|Bauxite]], and [[electrolyzing|Electrolysis Machine]] the resulting alumina solution.

Used in piping, general fluid handling, as part of [[gunmetal|Gunmetal]] and missile fuselages." + } +} diff --git a/src/main/resources/assets/hbm/manual/arsenic.json b/src/main/resources/assets/hbm/manual/material/arsenic.json similarity index 100% rename from src/main/resources/assets/hbm/manual/arsenic.json rename to src/main/resources/assets/hbm/manual/material/arsenic.json diff --git a/src/main/resources/assets/hbm/manual/arsenic_bronze.json b/src/main/resources/assets/hbm/manual/material/arsenic_bronze.json similarity index 100% rename from src/main/resources/assets/hbm/manual/arsenic_bronze.json rename to src/main/resources/assets/hbm/manual/material/arsenic_bronze.json diff --git a/src/main/resources/assets/hbm/manual/bakelite.json b/src/main/resources/assets/hbm/manual/material/bakelite.json similarity index 100% rename from src/main/resources/assets/hbm/manual/bakelite.json rename to src/main/resources/assets/hbm/manual/material/bakelite.json diff --git a/src/main/resources/assets/hbm/manual/bismuth.json b/src/main/resources/assets/hbm/manual/material/bismuth.json similarity index 100% rename from src/main/resources/assets/hbm/manual/bismuth.json rename to src/main/resources/assets/hbm/manual/material/bismuth.json diff --git a/src/main/resources/assets/hbm/manual/bismuth_bronze.json b/src/main/resources/assets/hbm/manual/material/bismuth_bronze.json similarity index 100% rename from src/main/resources/assets/hbm/manual/bismuth_bronze.json rename to src/main/resources/assets/hbm/manual/material/bismuth_bronze.json diff --git a/src/main/resources/assets/hbm/manual/bscco.json b/src/main/resources/assets/hbm/manual/material/bscco.json similarity index 100% rename from src/main/resources/assets/hbm/manual/bscco.json rename to src/main/resources/assets/hbm/manual/material/bscco.json diff --git a/src/main/resources/assets/hbm/manual/cadmium.json b/src/main/resources/assets/hbm/manual/material/cadmium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/cadmium.json rename to src/main/resources/assets/hbm/manual/material/cadmium.json diff --git a/src/main/resources/assets/hbm/manual/material/cadmium_steel.json b/src/main/resources/assets/hbm/manual/material/cadmium_steel.json new file mode 100644 index 000000000..70cb3644b --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/cadmium_steel.json @@ -0,0 +1,11 @@ +{ + "name": "Cadmium Steel", + "icon": ["hbm:item.ingot_cdalloy", 1, 0], + "trigger": [["hbm:item.ingot_cdalloy"]], + "title": { + "en_US": "Cadmium Steel" + }, + "content": { + "en_US": "Corrosion-resistant alloy, made from [[steel|Steel]] and [[cadmium|Cadmium]]. Alternative to [[technetium steel|Technetium Steel]] in most recipes." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/cinnabar.json b/src/main/resources/assets/hbm/manual/material/cinnabar.json new file mode 100644 index 000000000..c142e7ff9 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/cinnabar.json @@ -0,0 +1,11 @@ +{ + "name": "Cinnabar", + "icon": ["hbm:item.cinnebar", 1, 0], + "trigger": [["hbm:item.cinnebar"]], + "title": { + "en_US": "Cinnabar" + }, + "content": { + "en_US": "Rare ore. Can be [[acidized|Ore Acidizer]] into 375mB worth of [[mercury|Mercury]] drops, or [[combination smelted|Combination Oven]] into 100mB of mercury and some sulfur. Mainly exists as an early means to get mercury for [[desh|Desh]] production." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/coke.json b/src/main/resources/assets/hbm/manual/material/coke.json new file mode 100644 index 000000000..fbf8d8631 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/coke.json @@ -0,0 +1,11 @@ +{ + "name": "Coke", + "icon": ["hbm:item.coke", 1, 0], + "trigger": [["hbm:item.coke", 1, 32767]], + "title": { + "en_US": "Coke" + }, + "content": { + "en_US": "High-purity carbon, has twice the burn value of coal. Can be pressed into [[graphite|Graphite]], used in various [[steel|Steel]] recipes or as a source of carbon for the [[crucible|Crucible]].

Coal coke can be made by smelting coal briquettes, or combination smelting coal in its various forms.

Lignite coke is made from the much cheaper and less powerful lignite in much the same way, despite this it has the same characteristics.

Petroleum coke is made either from non-coal tars in a [[combination oven|Combination Oven]], or by coking various types of oil in a [[coker|Coking Unit]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/copper.json b/src/main/resources/assets/hbm/manual/material/copper.json new file mode 100644 index 000000000..e56f6d71d --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/copper.json @@ -0,0 +1,11 @@ +{ + "name": "Copper", + "icon": ["hbm:item.ingot_copper", 1, 0], + "trigger": [["hbm:item.ingot_copper"], ["hbm:item.plate_copper"], ["hbm:item.powder_copper"]], + "title": { + "en_US": "Copper" + }, + "content": { + "en_US": "Common resource. In its raw form, mostly used as a structural material, and in things that handle high temperatures (as a heat conductor). Strongly used in various alloyed forms.

[[Minecraft grade copper|Minecraft Grade Copper]] is an alloy made from redstone that is used in almost all electrical things.

[[Advanced alloy|Advanced Alloy]] is a powerful early tool material which surpasses diamond.

[[Gunmetal]] is a vital component of many guns, as well as casings for ammunition.

[[Bismuth bronze|Bismuth Bronze]] and [[arsenic bronze|Arsenic Bronze]] are post-[[RBMK]] materials used in many late-game machines.

[[BSCCO]] is a [[bismuth|Bismuth]]-derived super conductor needed for high-tier quantum circuits and [[particle accelerator|Particle Accelerator]] coils." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/desh.json b/src/main/resources/assets/hbm/manual/material/desh.json new file mode 100644 index 000000000..4de099c5a --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/desh.json @@ -0,0 +1,11 @@ +{ + "name": "Desh", + "icon": ["hbm:item.ingot_desh", 1, 0], + "trigger": [["hbm:item.ingot_desh"], ["hbm:item.powder_desh"]], + "title": { + "en_US": "Desh" + }, + "content": { + "en_US": "High-strength working alloy made in a [[chemical plant|Chemical Plant]]. Requires [[light oil|Light oil]] from basic [[oil|Crude Oil]] refining, [[mercury|Mercury]], a byproduct of [[centrifuging|Centrifuge]] redstone ore and desh blend, which is just [[shredded|Shredder]] rare earth ore chunks.

Used in a variety of things, especially tools and weapons. Desh tools are slow and only iron tier, but are the first available ones to be unbreakable and offer many tool abilities." + } +} diff --git a/src/main/resources/assets/hbm/manual/ferrouranium.json b/src/main/resources/assets/hbm/manual/material/ferrouranium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/ferrouranium.json rename to src/main/resources/assets/hbm/manual/material/ferrouranium.json diff --git a/src/main/resources/assets/hbm/manual/material/graphite.json b/src/main/resources/assets/hbm/manual/material/graphite.json new file mode 100644 index 000000000..9d0624a78 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/graphite.json @@ -0,0 +1,11 @@ +{ + "name": "Graphite", + "icon": ["hbm:item.ingot_graphite", 1, 0], + "trigger": [["hbm:item.ingot_graphite"]], + "title": { + "en_US": "Graphite" + }, + "content": { + "en_US": "Made from pressing coke. Used in nuclear reactors, graphite electrodes for the [[electric arc furnace|Electric Arc Furnace]] or as a source for carbon in various [[crucible|Crucible]] recipes." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/gunmetal.json b/src/main/resources/assets/hbm/manual/material/gunmetal.json new file mode 100644 index 000000000..bf6ee920e --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/gunmetal.json @@ -0,0 +1,11 @@ +{ + "name": "Gunmetal", + "icon": ["hbm:item.ingot_gunmetal", 1, 0], + "trigger": [["hbm:item.ingot_gunmetal"], ["hbm:item.plate_gunmetal"]], + "title": { + "en_US": "Gunmetal" + }, + "content": { + "en_US": "Alloy of [[aluminium|Aluminium]] and [[copper|Copper]]. Can be made in an anvil, or more efficiently in a [[rotary furnace|Rotary Furnace]]. Used mainly for weapon parts, as well as casings for most ammunition." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/hss.json b/src/main/resources/assets/hbm/manual/material/hss.json new file mode 100644 index 000000000..a74dfddaf --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/hss.json @@ -0,0 +1,11 @@ +{ + "name": "High-Speed Steel", + "icon": ["hbm:item.ingot_dura_steel", 1, 0], + "trigger": [["hbm:item.ingot_dura_steel"], ["hbm:item.powder_dura_steel"], ["hbm:item.plate_dura_steel"]], + "title": { + "en_US": "High-Speed Steel" + }, + "content": { + "en_US": "Alloy made from [[steel|Steel]], [[tungsten|Tungsten]] and [[cobalt|Cobalt]] in a [[curcible|Crucible]]. Created as liquid metal, needs to be cast into ingot or plate shape before being usable." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/latex.json b/src/main/resources/assets/hbm/manual/material/latex.json new file mode 100644 index 000000000..c070e21e3 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/latex.json @@ -0,0 +1,11 @@ +{ + "name": "Latex", + "icon": ["hbm:item.ingot_biorubber", 1, 0], + "trigger": [["hbm:item.ingot_biorubber"], ["hbm:item.ball_resin"]], + "title": { + "en_US": "Latex" + }, + "content": { + "en_US": "Natural form of rubber, obtainable from dandelions or by pressing jungle wood. Can be replaced in all recipes by [[rubber|Rubber]], but not vice versa." + } +} diff --git a/src/main/resources/assets/hbm/manual/material/lead.json b/src/main/resources/assets/hbm/manual/material/lead.json new file mode 100644 index 000000000..9735111c3 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/lead.json @@ -0,0 +1,11 @@ +{ + "name": "Lead", + "icon": ["hbm:item.ingot_lead", 1, 0], + "trigger": [["hbm:item.ingot_lead"], ["hbm:item.nugget_lead"], ["hbm:item.powder_lead"]], + "title": { + "en_US": "Lead" + }, + "content": { + "en_US": "Common resource. Mainly used for things that involve radiation, as well as ammunition, and as solder for many circuits." + } +} diff --git a/src/main/resources/assets/hbm/manual/mingrade.json b/src/main/resources/assets/hbm/manual/material/mingrade.json similarity index 100% rename from src/main/resources/assets/hbm/manual/mingrade.json rename to src/main/resources/assets/hbm/manual/material/mingrade.json diff --git a/src/main/resources/assets/hbm/manual/material/neptunium.json b/src/main/resources/assets/hbm/manual/material/neptunium.json new file mode 100644 index 000000000..a730ab7cd --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/neptunium.json @@ -0,0 +1,11 @@ +{ + "name": "Neptunium", + "icon": ["hbm:item.ingot_neptunium", 1, 0], + "trigger": [["hbm:item.ingot_neptunium"], ["hbm:item.billet_neptunium"], ["hbm:item.nugget_neptunium"], ["hbm:item.powder_neptunium"]], + "title": { + "en_US": "Neptunium" + }, + "content": { + "en_US": "Fissile isotope, usually found in spent [[uranium-235|Uranium-235]] fuel. Mostly used for nuclear reactors, either pure as high enriched neptunium fuel, or combined with [[uranium-238|Uranium-238]] as medium enriched neptunium fuel. Usable in the [[PWR]] and [[RBMK]]." + } +} diff --git a/src/main/resources/assets/hbm/manual/plutonium-238.json b/src/main/resources/assets/hbm/manual/material/plutonium-238.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium-238.json rename to src/main/resources/assets/hbm/manual/material/plutonium-238.json diff --git a/src/main/resources/assets/hbm/manual/plutonium-239.json b/src/main/resources/assets/hbm/manual/material/plutonium-239.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium-239.json rename to src/main/resources/assets/hbm/manual/material/plutonium-239.json diff --git a/src/main/resources/assets/hbm/manual/plutonium-240.json b/src/main/resources/assets/hbm/manual/material/plutonium-240.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium-240.json rename to src/main/resources/assets/hbm/manual/material/plutonium-240.json diff --git a/src/main/resources/assets/hbm/manual/plutonium-241.json b/src/main/resources/assets/hbm/manual/material/plutonium-241.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium-241.json rename to src/main/resources/assets/hbm/manual/material/plutonium-241.json diff --git a/src/main/resources/assets/hbm/manual/plutonium-rg.json b/src/main/resources/assets/hbm/manual/material/plutonium-rg.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium-rg.json rename to src/main/resources/assets/hbm/manual/material/plutonium-rg.json diff --git a/src/main/resources/assets/hbm/manual/plutonium.json b/src/main/resources/assets/hbm/manual/material/plutonium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/plutonium.json rename to src/main/resources/assets/hbm/manual/material/plutonium.json diff --git a/src/main/resources/assets/hbm/manual/polonium.json b/src/main/resources/assets/hbm/manual/material/polonium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/polonium.json rename to src/main/resources/assets/hbm/manual/material/polonium.json diff --git a/src/main/resources/assets/hbm/manual/polymer.json b/src/main/resources/assets/hbm/manual/material/polymer.json similarity index 100% rename from src/main/resources/assets/hbm/manual/polymer.json rename to src/main/resources/assets/hbm/manual/material/polymer.json diff --git a/src/main/resources/assets/hbm/manual/radium.json b/src/main/resources/assets/hbm/manual/material/radium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/radium.json rename to src/main/resources/assets/hbm/manual/material/radium.json diff --git a/src/main/resources/assets/hbm/manual/material/rubber.json b/src/main/resources/assets/hbm/manual/material/rubber.json new file mode 100644 index 000000000..9db9ddc37 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/rubber.json @@ -0,0 +1,11 @@ +{ + "name": "Rubber", + "icon": ["hbm:item.ingot_rubber", 1, 0], + "trigger": [["hbm:item.ingot_rubber"]], + "title": { + "en_US": "Rubber" + }, + "content": { + "en_US": "Oil product, derived from [[unsaturated hydrocabons|Unsaturated Hydrocarbons]] and [[sulfur|Sulfur]]. Requires at least a [[cracking tower|Catalytic Cracking Tower]] to make. Can replace [[latex|Latex]] in every recipe." + } +} diff --git a/src/main/resources/assets/hbm/manual/silicon.json b/src/main/resources/assets/hbm/manual/material/silicon.json similarity index 100% rename from src/main/resources/assets/hbm/manual/silicon.json rename to src/main/resources/assets/hbm/manual/material/silicon.json diff --git a/src/main/resources/assets/hbm/manual/material/sodium.json b/src/main/resources/assets/hbm/manual/material/sodium.json new file mode 100644 index 000000000..5165042e0 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/sodium.json @@ -0,0 +1,11 @@ +{ + "name": "Sodium", + "icon": ["hbm:item.powder_sodium", 1, 0], + "trigger": [["hbm:item.powder_sodium"]], + "title": { + "en_US": "Sodium" + }, + "content": { + "en_US": "Mainly derived from sodalite, a gem which is found as a [[centrifuge|Centrifuge]] byproduct of many ores. Used in liquid form as a powerful [[PWR]] coolant." + } +} diff --git a/src/main/resources/assets/hbm/manual/steel.json b/src/main/resources/assets/hbm/manual/material/steel.json similarity index 100% rename from src/main/resources/assets/hbm/manual/steel.json rename to src/main/resources/assets/hbm/manual/material/steel.json diff --git a/src/main/resources/assets/hbm/manual/material/sulfur.json b/src/main/resources/assets/hbm/manual/material/sulfur.json new file mode 100644 index 000000000..32a07b988 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/sulfur.json @@ -0,0 +1,11 @@ +{ + "name": "Sulfur", + "icon": ["hbm:item.sulfur", 1, 0], + "trigger": [["hbm:item.sulfur"]], + "title": { + "en_US": "Sulfur" + }, + "content": { + "en_US": "Common ore, found in even larger numbers in the nether. Used in a variety of things, like [[sulfuric acid|Sulfuric Acid]], [[rubber|Rubber]] and in yellowcake for [[uranium|Uranium]] hexafluoride. Can also make gunpowder, matchsticks, or act as yellow dye." + } +} diff --git a/src/main/resources/assets/hbm/manual/tantalium.json b/src/main/resources/assets/hbm/manual/material/tantalium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/tantalium.json rename to src/main/resources/assets/hbm/manual/material/tantalium.json diff --git a/src/main/resources/assets/hbm/manual/technetium.json b/src/main/resources/assets/hbm/manual/material/technetium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/technetium.json rename to src/main/resources/assets/hbm/manual/material/technetium.json diff --git a/src/main/resources/assets/hbm/manual/technetium_steel.json b/src/main/resources/assets/hbm/manual/material/technetium_steel.json similarity index 100% rename from src/main/resources/assets/hbm/manual/technetium_steel.json rename to src/main/resources/assets/hbm/manual/material/technetium_steel.json diff --git a/src/main/resources/assets/hbm/manual/thorium.json b/src/main/resources/assets/hbm/manual/material/thorium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/thorium.json rename to src/main/resources/assets/hbm/manual/material/thorium.json diff --git a/src/main/resources/assets/hbm/manual/uranium-233.json b/src/main/resources/assets/hbm/manual/material/uranium-233.json similarity index 100% rename from src/main/resources/assets/hbm/manual/uranium-233.json rename to src/main/resources/assets/hbm/manual/material/uranium-233.json diff --git a/src/main/resources/assets/hbm/manual/uranium-235.json b/src/main/resources/assets/hbm/manual/material/uranium-235.json similarity index 100% rename from src/main/resources/assets/hbm/manual/uranium-235.json rename to src/main/resources/assets/hbm/manual/material/uranium-235.json diff --git a/src/main/resources/assets/hbm/manual/uranium-238.json b/src/main/resources/assets/hbm/manual/material/uranium-238.json similarity index 100% rename from src/main/resources/assets/hbm/manual/uranium-238.json rename to src/main/resources/assets/hbm/manual/material/uranium-238.json diff --git a/src/main/resources/assets/hbm/manual/uranium.json b/src/main/resources/assets/hbm/manual/material/uranium.json similarity index 100% rename from src/main/resources/assets/hbm/manual/uranium.json rename to src/main/resources/assets/hbm/manual/material/uranium.json diff --git a/src/main/resources/assets/hbm/manual/material/weaponsteel.json b/src/main/resources/assets/hbm/manual/material/weaponsteel.json new file mode 100644 index 000000000..87d951ce6 --- /dev/null +++ b/src/main/resources/assets/hbm/manual/material/weaponsteel.json @@ -0,0 +1,11 @@ +{ + "name": "Weapon Steel", + "icon": ["hbm:item.ingot_weaponsteel", 1, 0], + "trigger": [["hbm:item.ingot_weaponsteel"], ["hbm:item.plate_weaponsteel"]], + "title": { + "en_US": "Weapon Steel" + }, + "content": { + "en_US": "High-purity version of [[steel|Steel]] made in a [[rotary furnace|Rotary Furnace]]. Requires [[coker gas|Coker Gas]], and therefore a [[coker unit|Coker Unit]]. Used in many mid-game weapons, weapon modifications and missile warheads." + } +} From ba24ed64aae75f2fd988da70b111f21e26deb487 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 15 Aug 2025 17:59:39 +0200 Subject: [PATCH 5/5] pink one detected --- changelog | 9 +- .../com/hbm/blocks/generic/BlockPlushie.java | 10 +- .../hbm/entity/item/EntityDeliveryDrone.java | 2 - .../com/hbm/inventory/OreDictManager.java | 19 +- .../ContainerMachineArcFurnaceLarge.java | 4 +- src/main/java/com/hbm/main/MainRegistry.java | 11 +- .../com/hbm/module/ModulePatternMatcher.java | 4 +- .../render/tileentity/RenderNukeFstbmb.java | 80 +- .../hbm/render/tileentity/RenderPlushie.java | 14 +- .../bomb/TileEntityNukeBalefire.java | 12 +- .../machine/TileEntityMachineAutocrafter.java | 2 +- .../assets/hbm/models/trinkets/hundun.obj | 1538 +++++++++++++++++ .../assets/hbm/models/trinkets/pooh.obj | 334 ---- src/main/resources/assets/hbm/sounds.json | 1 + .../sounds/block/hunduns_magnificent_howl.ogg | Bin 0 -> 62398 bytes .../assets/hbm/textures/items/fluid_tank.png | Bin 337 -> 270 bytes .../hbm/textures/items/fluid_tank_overlay.png | Bin 181 -> 153 bytes .../hbm/textures/models/trinkets/hundun.png | Bin 0 -> 1336 bytes .../hbm/textures/models/trinkets/pooh.png | Bin 409 -> 0 bytes 19 files changed, 1630 insertions(+), 410 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/trinkets/hundun.obj delete mode 100644 src/main/resources/assets/hbm/models/trinkets/pooh.obj create mode 100644 src/main/resources/assets/hbm/sounds/block/hunduns_magnificent_howl.ogg create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/hundun.png delete mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/pooh.png diff --git a/changelog b/changelog index d29339e12..a06979124 100644 --- a/changelog +++ b/changelog @@ -2,9 +2,16 @@ * QMAW now has buttons for returning to previously viewed pages * QMAW file detection now includes subfolders to `manual` * OpenComputers integration for the ZIRNOX should now return values in °C and bar instead of unexplained weird internal units +* The sodium and strontium autogen ingots now have their correct hazard tags +* Pattern matchers, like the one used on the automatic crafting table, no longer care about NBT data of an item + * This means that RBMK fuel rods can now be automatically disassembled without the depletion number having to be a 100% match + * Due to the way the RBMK uncrafting handler works, a single autocrafter now correctly supports RBMK fuel of one type of any depletion level, yielding the correct recycling pellets ## Fixed * Fixed QMAW not working at all * Potentially fixed a bug where proxy tile entities would reference unloaded core tile entities which would cause bizarre item voiding/duping issues in rare cases * Fixed fusion reactor automation being able to remove items other than the breeding output slot -* Fixed chunkloading transport drones getting stuck due to off-by-one rounding errors \ No newline at end of file +* Fixed chunkloading transport drones getting stuck due to off-by-one rounding errors +* Fixed shift-click handling on the electric arc furnace not working with upgrades, and putting electrodes in the wrong slot +* Fixed issue with the load order where custom fluids wouldn't work properly for fluid loading/unloading and in custom recipes +* Fixed balefire bomb not rendering the egg when fully loaded \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockPlushie.java b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java index 877d784e7..946961fc4 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPlushie.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPlushie.java @@ -96,12 +96,16 @@ public class BlockPlushie extends BlockContainer implements IBlockMulti, IToolti @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + TileEntityPlushie plushie = (TileEntityPlushie) world.getTileEntity(x, y, z); if(world.isRemote) { - TileEntityPlushie plushie = (TileEntityPlushie) world.getTileEntity(x, y, z); plushie.squishTimer = 11; return true; } else { - world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:block.squeakyToy", 0.25F, 1F); + if(plushie.type == PlushieType.HUNDUN) { + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:block.hunduns_magnificent_howl", 100F, 1F); + } else { + world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, "hbm:block.squeakyToy", 0.25F, 1F); + } return true; } } @@ -155,7 +159,7 @@ public class BlockPlushie extends BlockContainer implements IBlockMulti, IToolti NONE( "NONE", null), YOMI( "Yomi", "Hi! Can I be your rabbit friend?"), NUMBERNINE( "Number Nine", "None of y'all deserve coal."), - POOH( "Winnie the Pooh", "Beloved children's character with no malicious intent."); + HUNDUN( "Hundun", "混沌"); public String label; public String inscription; diff --git a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java index f733f99ca..78ec2e81f 100644 --- a/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java +++ b/src/main/java/com/hbm/entity/item/EntityDeliveryDrone.java @@ -203,8 +203,6 @@ public class EntityDeliveryDrone extends EntityDroneBase implements IInventory, for (ChunkCoordIntPair chunk : ChunkShapeHelper.getChunksAlongLineSegment((int) Math.floor(this.posX), (int) Math.floor(this.posZ), (int) Math.floor(this.posX + this.motionX), (int) Math.floor(this.posZ + this.motionZ), 8)){ ForgeChunkManager.forceChunk(loaderTicket, chunk); } - - System.out.println("guhhh"); } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 3e85fdfb4..b279bcfc2 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -454,7 +454,7 @@ public class OreDictManager { * HAZARDS, MISC */ LI .hydro(1F) .ingot(lithium) .dustSmall(powder_lithium_tiny) .dust(powder_lithium) .block(block_lithium) .ore(ore_gneiss_lithium); - NA .hydro(1F) .dust(powder_sodium); + NA .hydro(1F) .hazIngot() .dust(powder_sodium); /* * PHOSPHORUS @@ -494,7 +494,7 @@ public class OreDictManager { /* * FISSION FRAGMENTS */ - SR .hot(1F) .hydro(1F) .dust(powder_strontium); + SR .hot(1F) .hydro(1F) .hazIngot() .dust(powder_strontium); SR90 .rad(HazardRegistry.sr90) .hot(1F) .hydro(1F) .dustSmall(powder_sr90_tiny) .dust(powder_sr90) .ingot(ingot_sr90) .billet(billet_sr90) .nugget(nugget_sr90); I131 .rad(HazardRegistry.i131) .hot(1F) .dustSmall(powder_i131_tiny) .dust(powder_i131); XE135 .rad(HazardRegistry.xe135) .hot(10F) .dustSmall(powder_xe135_tiny) .dust(powder_xe135); @@ -912,6 +912,21 @@ public class OreDictManager { for(Block b : blocks) registerStack(tag, new ItemStack(b)); return this; } + + public DictFrame hazIngot() { + hazMult = HazardRegistry.ingot; + return autoRegHazard(INGOT); + } + + // TODO: rethink this. currently, keys are only registered on-demand if the dict frame has a valid entry, even though we can maximize compatibility + // by simply registereing all known shapes in the haz reg, whether it exists or not + public DictFrame autoRegHazard(MaterialShapes shape) { + String tag = shape.name(); + for(String mat : mats) { + registerHazards(hazards, hazMult, tag + mat); + } + return this; + } public static void registerHazards(List hazards, float hazMult, String dictKey) { diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java index 942f3cfcb..12318fe1d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineArcFurnaceLarge.java @@ -61,9 +61,9 @@ public class ContainerMachineArcFurnaceLarge extends Container { if(rStack.getItem() instanceof IBatteryItem || rStack.getItem() == ModItems.battery_creative) { if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 3, 4, false)) return null; } else if(rStack.getItem() == ModItems.arc_electrode) { - if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 4, 5, false)) return null; - } else if(rStack.getItem() instanceof ItemMachineUpgrade) { if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 0, 3, false)) return null; + } else if(rStack.getItem() instanceof ItemMachineUpgrade) { + if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 4, 5, false)) return null; } else { if(!InventoryUtil.mergeItemStack(this.inventorySlots, stack, 5, 25, false)) return null; } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 20fc7b204..d8e10dac7 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -851,6 +851,12 @@ public class MainRegistry { @EventHandler public static void PostLoad(FMLPostInitializationEvent PostEvent) { + // to make sure that foreign registered fluids are accounted for, + // even when the reload listener is registered too late due to load order + // IMPORTANT: fluids have to load before recipes. weird shit happens if not. + Fluids.reloadFluids(); + FluidContainerRegistry.register(); + MagicRecipes.register(); LemegetonRecipes.register(); SILEXRecipes.register(); @@ -879,7 +885,6 @@ public class MainRegistry { ArmorUtil.register(); HazmatRegistry.registerHazmats(); DamageResistanceHandler.init(); - FluidContainerRegistry.register(); BlockToolConversion.registerRecipes(); AchievementHandler.register(); @@ -912,10 +917,6 @@ public class MainRegistry { SuicideThreadDump.register(); CommandReloadClient.register(); - // to make sure that foreign registered fluids are accounted for, - // even when the reload listener is registered too late due to load order - Fluids.reloadFluids(); - //ExplosionTests.runTest(); } diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index ecde925fa..37004116d 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -139,8 +139,8 @@ public class ModulePatternMatcher { } switch(mode) { - case MODE_EXACT: return input.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(input, filter); - case MODE_WILDCARD: return input.getItem() == filter.getItem() && ItemStack.areItemStackTagsEqual(input, filter); + case MODE_EXACT: return input.isItemEqual(filter)/* && ItemStack.areItemStackTagsEqual(input, filter)*/; + case MODE_WILDCARD: return input.getItem() == filter.getItem()/* && ItemStack.areItemStackTagsEqual(input, filter)*/; case MODE_BEDROCK: if(input.getItem() != filter.getItem()) return false; if(!(input.getItem() instanceof ItemBedrockOreNew)) return false; diff --git a/src/main/java/com/hbm/render/tileentity/RenderNukeFstbmb.java b/src/main/java/com/hbm/render/tileentity/RenderNukeFstbmb.java index 82bf299b6..960f37f31 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderNukeFstbmb.java +++ b/src/main/java/com/hbm/render/tileentity/RenderNukeFstbmb.java @@ -15,50 +15,44 @@ import net.minecraft.util.ResourceLocation; public class RenderNukeFstbmb extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_CULL_FACE); - switch(tileEntity.getBlockMetadata()) - { - case 2: - GL11.glRotatef(90, 0F, 1F, 0F); break; - case 4: - GL11.glRotatef(180, 0F, 1F, 0F); break; - case 3: - GL11.glRotatef(270, 0F, 1F, 0F); break; - case 5: - GL11.glRotatef(0, 0F, 1F, 0F); break; + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + switch(tileEntity.getBlockMetadata()) { + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; } - GL11.glShadeModel(GL11.GL_SMOOTH); - bindTexture(ResourceManager.fstbmb_tex); - ResourceManager.fstbmb.renderPart("Body"); - ResourceManager.fstbmb.renderPart("Balefire"); - - TileEntityNukeBalefire bf = (TileEntityNukeBalefire)tileEntity; - - if(bf.loaded) { - bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/misc/glintBF.png")); - RenderMiscEffects.renderClassicGlint(tileEntity.getWorldObj(), f, ResourceManager.fstbmb, "Balefire", 0.0F, 0.8F, 0.15F, 5, 2F); - - FontRenderer font = Minecraft.getMinecraft().fontRenderer; - float f3 = 0.04F; - GL11.glTranslatef(0.815F, 0.9275F, 0.5F); - GL11.glScalef(f3, -f3, f3); - GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); - GL11.glRotatef(90, 0, 1, 0); - GL11.glDepthMask(false); - GL11.glTranslatef(0, 1, 0); - font.drawString(bf.getMinutes() + ":" + bf.getSeconds(), 0, 0, 0xff0000); - GL11.glDepthMask(true); - } - - GL11.glShadeModel(GL11.GL_FLAT); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.fstbmb_tex); + ResourceManager.fstbmb.renderPart("Body"); + ResourceManager.fstbmb.renderPart("Balefire"); - GL11.glPopMatrix(); - } + TileEntityNukeBalefire bf = (TileEntityNukeBalefire) tileEntity; + + if(bf.loaded) { + bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/misc/glintBF.png")); + RenderMiscEffects.renderClassicGlint(tileEntity.getWorldObj(), f, ResourceManager.fstbmb, "Balefire", 0.0F, 0.8F, 0.15F, 5, 2F); + + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + float f3 = 0.04F; + GL11.glTranslatef(0.815F, 0.9275F, 0.5F); + GL11.glScalef(f3, -f3, f3); + GL11.glNormal3f(0.0F, 0.0F, -1.0F * f3); + GL11.glRotatef(90, 0, 1, 0); + GL11.glDepthMask(false); + GL11.glTranslatef(0, 1, 0); + font.drawString(bf.getMinutes() + ":" + bf.getSeconds(), 0, 0, 0xff0000); + GL11.glDepthMask(true); + } + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderPlushie.java b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java index 702817abe..a482eba91 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderPlushie.java +++ b/src/main/java/com/hbm/render/tileentity/RenderPlushie.java @@ -30,10 +30,10 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRendererProvider { public static final IModelCustom yomiModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/yomi.obj"), false).asVBO(); - public static final IModelCustom poohModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/pooh.obj"), false).asVBO(); + public static final IModelCustom hundunModel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/trinkets/hundun.obj"), false).asVBO(); public static final ResourceLocation yomiTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/yomi.png"); public static final ResourceLocation numbernineTex = new ResourceLocation(RefStrings.MODID, "textures/models/horse/numbernine.png"); - public static final ResourceLocation poohTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/pooh.png"); + public static final ResourceLocation hundunTex = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/hundun.png"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { @@ -53,7 +53,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen case NONE: break; case YOMI: GL11.glScaled(0.5, 0.5, 0.5); break; case NUMBERNINE: GL11.glScaled(0.75, 0.75, 0.75); break; - case POOH: GL11.glScaled(0.75, 0.75, 0.75); break; + case HUNDUN: GL11.glScaled(1, 1, 1); break; } renderPlushie(te.type); @@ -110,9 +110,9 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen IIcon icon = stack.getIconIndex(); ItemRenderer.renderItemIn2D(Tessellator.instance, icon.getMaxU(), icon.getMinV(), icon.getMinU(), icon.getMaxV(), icon.getIconWidth(), icon.getIconHeight(), 0.0625F); break; - case POOH: - Minecraft.getMinecraft().getTextureManager().bindTexture(poohTex); - poohModel.renderAll(); + case HUNDUN: + Minecraft.getMinecraft().getTextureManager().bindTexture(hundunTex); + hundunModel.renderPart("goober_posed"); break; } } @@ -138,7 +138,7 @@ public class RenderPlushie extends TileEntitySpecialRenderer implements IItemRen case NONE: break; case YOMI: GL11.glScaled(1.25, 1.25, 1.25); break; case NUMBERNINE: GL11.glTranslated(0, 0.25, 0.25); GL11.glScaled(1.25, 1.25, 1.25); break; - case POOH: GL11.glTranslated(0, 0.25, 0); GL11.glScaled(1.5, 1.5, 1.5); break; + case HUNDUN: GL11.glTranslated(0.5, 0.5, 0); GL11.glScaled(1.25, 1.25, 1.25); break; } renderPlushie(type); }}; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java index f88b7070b..3e9875521 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityNukeBalefire.java @@ -40,7 +40,9 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU if(!worldObj.isRemote) { - if(!this.isLoaded()) { + this.loaded = this.isLoaded(); + + if(!loaded) { started = false; } @@ -89,21 +91,15 @@ public class TileEntityNukeBalefire extends TileEntityMachineBase implements IGU } public boolean isLoaded() { - return hasEgg() && hasBattery(); } public boolean hasEgg() { - - if(slots[0] != null && slots[0].getItem() == ModItems.egg_balefire) { - return true; - } - + if(slots[0] != null && slots[0].getItem() == ModItems.egg_balefire) return true; return false; } public boolean hasBattery() { - return getBattery() > 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java index a9bc5fc86..eafcb988c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAutocrafter.java @@ -239,7 +239,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen ItemStack valid = slots[i]; if(valid == null) return false; //null? since slots[slot] is not null by now, this other slot needs the item more - if(!(valid.isItemEqual(stack) && ItemStack.areItemStackTagsEqual(valid, stack))) continue; //different item anyway? out with it + if(!(valid.isItemEqual(stack)/* && ItemStack.areItemStackTagsEqual(valid, stack)*/)) continue; //different item anyway? out with it //if there is another slot that actually does need the same item more, cancel if(valid.stackSize < size) diff --git a/src/main/resources/assets/hbm/models/trinkets/hundun.obj b/src/main/resources/assets/hbm/models/trinkets/hundun.obj new file mode 100644 index 000000000..4f241b676 --- /dev/null +++ b/src/main/resources/assets/hbm/models/trinkets/hundun.obj @@ -0,0 +1,1538 @@ +# Blender v2.79 (sub 0) OBJ File: 'hundun.blend' +# www.blender.org +o goober_posed +v 0.147740 1.125000 0.270838 +v 0.645838 1.125000 0.227260 +v 0.104162 1.125000 -0.227260 +v 0.602260 1.125000 -0.270838 +v 0.147740 1.625000 0.270838 +v 0.645838 1.625000 0.227260 +v 0.104162 1.625000 -0.227260 +v 0.602260 1.625000 -0.270838 +v 0.632220 1.156250 0.071604 +v 0.615878 1.156250 -0.115182 +v 0.632220 1.343750 0.071604 +v 0.615878 1.343750 -0.115182 +v 0.819006 1.156250 0.055263 +v 0.802664 1.156250 -0.131524 +v 0.819006 1.343750 0.055263 +v 0.802664 1.343750 -0.131524 +v 0.462946 1.625000 -0.070433 +v 0.452052 1.625000 -0.194957 +v 0.276160 1.625000 -0.054091 +v 0.265265 1.625000 -0.178616 +v 0.276160 1.875000 -0.054091 +v 0.462946 1.875000 -0.070433 +v 0.452052 1.875000 -0.194957 +v 0.265265 1.875000 -0.178616 +v 0.484735 1.625000 0.178616 +v 0.473840 1.625000 0.054091 +v 0.297948 1.625000 0.194957 +v 0.287054 1.625000 0.070433 +v 0.297948 1.875000 0.194957 +v 0.484735 1.875000 0.178616 +v 0.473840 1.875000 0.054091 +v 0.287054 1.875000 0.070433 +v -0.374080 0.062119 0.250000 +v 0.509803 0.946002 0.250000 +v -0.374080 0.062119 -0.250000 +v 0.509803 0.946002 -0.250000 +v -0.727633 0.415672 -0.250000 +v -0.727633 0.415672 0.250000 +v 0.156250 1.299556 0.250000 +v 0.156250 1.299556 -0.250000 +v 0.250000 0.875000 0.312500 +v 0.500000 0.125000 -0.062500 +v 0.250000 0.875000 0.062500 +v 0.500000 0.125000 -0.312500 +v 0.250000 0.875000 -0.312500 +v 0.250000 0.875000 -0.062500 +v 0.500000 0.875000 -0.062500 +v 0.500000 0.875000 -0.312500 +v 0.250000 0.000000 -0.312500 +v 0.250000 0.000000 -0.062500 +v 0.500000 0.125000 0.062500 +v 0.500000 0.125000 0.312500 +v 0.625000 0.125000 -0.062500 +v 0.625000 0.125000 -0.312500 +v 0.625000 0.000000 -0.062500 +v 0.625000 0.000000 -0.312500 +v 0.500000 0.875000 0.312500 +v 0.500000 0.875000 0.062500 +v 0.250000 0.000000 0.062500 +v 0.250000 0.000000 0.312500 +v 0.625000 0.125000 0.312500 +v 0.625000 0.125000 0.062500 +v 0.625000 0.000000 0.312500 +v 0.625000 0.000000 0.062500 +v 0.087399 0.282874 -0.062500 +v 0.087399 0.282874 -0.312500 +v 0.087399 0.282874 0.062500 +v 0.087399 0.282874 0.312500 +v -0.637046 0.476988 -0.062500 +v -0.637046 0.476988 -0.312500 +v 0.143435 0.009040 -0.312500 +v 0.143435 0.009040 -0.062500 +v 0.119751 0.403615 -0.062500 +v 0.119751 0.403615 -0.312500 +v 0.240492 0.371262 -0.062500 +v 0.240492 0.371262 -0.312500 +v -0.218788 0.106097 -0.062500 +v -0.218788 0.106097 -0.312500 +v -0.734103 0.114766 -0.312500 +v -0.734103 0.114766 -0.062500 +v -0.251140 -0.014643 -0.062500 +v -0.251140 -0.014643 -0.312500 +v -0.637046 0.476988 0.312500 +v -0.637046 0.476988 0.062500 +v 0.143435 0.009040 0.062500 +v 0.143435 0.009040 0.312500 +v 0.119751 0.403615 0.312500 +v 0.119751 0.403615 0.062500 +v 0.240492 0.371262 0.312500 +v 0.240492 0.371262 0.062500 +v -0.218788 0.106097 0.312500 +v -0.218788 0.106097 0.062500 +v -0.734103 0.114766 0.062500 +v -0.734103 0.114766 0.312500 +v -0.251140 -0.014643 0.312500 +v -0.251140 -0.014643 0.062500 +v 0.023667 0.415672 0.281250 +v 0.553998 0.946002 0.281250 +v 0.023667 0.415672 -0.281250 +v 0.553998 0.946002 -0.281250 +v -0.374080 0.813420 -0.281250 +v -0.374080 0.813420 0.281250 +v 0.156250 1.343750 0.281250 +v 0.156250 1.343750 -0.281250 +v 0.119333 1.093750 0.304692 +v 0.679692 1.093750 0.255667 +v 0.070308 1.093750 -0.255667 +v 0.630667 1.093750 -0.304692 +v 0.119333 1.656250 0.304692 +v 0.679692 1.656250 0.255667 +v 0.070308 1.656250 -0.255667 +v 0.630667 1.656250 -0.304692 +v -0.669194 0.312500 0.044194 +v -0.580806 0.312500 -0.044194 +v -0.631503 0.414894 -0.094892 +v -0.719892 0.414894 -0.006503 +v -0.870420 0.025712 -0.333808 +v -0.958808 0.025712 -0.245420 +v -0.921117 0.128106 -0.384506 +v -1.009506 0.128106 -0.296117 +v -0.978553 0.062500 -0.228553 +v -0.853553 0.062500 -0.228553 +v -0.853553 0.187500 -0.228553 +v -0.978553 0.187500 -0.228553 +v -0.853553 0.062500 -0.728553 +v -0.978553 0.062500 -0.728553 +v -0.853553 0.187500 -0.728553 +v -0.978553 0.187500 -0.728553 +v -0.960248 0.062500 -0.772748 +v -0.871859 0.062500 -0.684359 +v -0.871859 0.187500 -0.684359 +v -0.960248 0.187500 -0.772748 +v -0.518306 0.062500 -1.037912 +v -0.606694 0.062500 -1.126301 +v -0.518306 0.187500 -1.037912 +v -0.606694 0.187500 -1.126301 +v -0.562500 0.000000 -0.957107 +v -0.562500 0.000000 -1.207107 +v -0.562500 0.250000 -0.957107 +v -0.562500 0.250000 -1.207107 +v -0.062500 0.000000 -0.957107 +v -0.062500 0.000000 -1.207107 +v -0.062500 0.250000 -0.957107 +v -0.062500 0.250000 -1.207107 +v -0.130233 0.999672 -0.187500 +v -0.153109 1.022549 -0.308241 +v -0.041844 1.088061 -0.187500 +v -0.064721 1.110937 -0.308241 +v 0.125897 0.743543 -0.284557 +v 0.103020 0.766419 -0.405298 +v 0.214285 0.831931 -0.284557 +v 0.191409 0.854808 -0.405298 +v -0.266158 0.428491 -0.367025 +v -0.254720 0.417053 -0.306654 +v -0.479599 0.641932 -0.286144 +v -0.468161 0.630494 -0.225773 +v -0.114608 0.984047 -0.225773 +v -0.126046 0.995486 -0.286144 +v 0.098834 0.770606 -0.306654 +v 0.087396 0.782044 -0.367025 +v -0.153109 1.022549 0.308241 +v -0.130233 0.999672 0.187500 +v -0.064721 1.110937 0.308241 +v -0.041844 1.088061 0.187500 +v 0.103020 0.766419 0.405298 +v 0.125897 0.743543 0.284557 +v 0.191409 0.854808 0.405298 +v 0.214285 0.831931 0.284557 +v -0.254720 0.417053 0.306654 +v -0.266158 0.428491 0.367025 +v -0.468161 0.630494 0.225773 +v -0.479599 0.641932 0.286144 +v -0.126046 0.995486 0.286144 +v -0.114608 0.984047 0.225773 +v 0.087396 0.782044 0.367025 +v 0.098834 0.770606 0.306654 +vt 0.187500 0.875000 +vt 0.125000 1.000000 +vt 0.125000 0.875000 +vt 0.062500 0.875000 +vt 0.125000 1.000000 +vt 0.062500 1.000000 +vt 0.125000 0.750000 +vt 0.062500 0.750000 +vt 0.250000 0.750000 +vt 0.187500 0.875000 +vt 0.187500 0.750000 +vt 0.125000 0.875000 +vt 0.000000 0.875000 +vt 0.000000 0.750000 +vt 0.250000 0.968750 +vt 0.226562 0.937500 +vt 0.250000 0.937500 +vt 0.484375 0.640625 +vt 0.460938 0.687500 +vt 0.460938 0.640625 +vt 0.437500 0.640625 +vt 0.437500 0.687500 +vt 0.460938 0.734375 +vt 0.484375 0.687500 +vt 0.484375 0.734375 +vt 0.507812 0.687500 +vt 0.507812 0.640625 +vt 0.484375 0.593750 +vt 0.460938 0.593750 +vt 0.226562 0.937500 +vt 0.250000 0.968750 +vt 0.226562 0.968750 +vt 0.250000 0.875000 +vt 0.226562 0.875000 +vt 0.210938 0.875000 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.265625 0.875000 +vt 0.250000 0.937500 +vt 0.210938 0.937500 +vt 0.210938 0.875000 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.250000 0.875000 +vt 0.226562 0.875000 +vt 0.210938 0.937500 +vt 0.265625 0.875000 +vt 0.218750 0.375000 +vt 0.062500 0.250000 +vt 0.218750 0.250000 +vt 0.062500 0.625000 +vt 0.218750 0.500000 +vt 0.218750 0.625000 +vt 0.281250 0.625000 +vt 0.281250 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.375000 +vt 0.062500 0.750000 +vt 0.218750 0.750000 +vt -0.000000 0.500000 +vt -0.000000 0.625000 +vt 0.546875 0.937500 +vt 0.578125 1.000000 +vt 0.546875 1.000000 +vt 0.703125 0.937500 +vt 0.734375 1.000000 +vt 0.703125 1.000000 +vt 0.734375 0.750000 +vt 0.703125 0.750000 +vt 0.578125 0.687500 +vt 0.546875 0.593750 +vt 0.578125 0.593750 +vt 0.734375 0.687500 +vt 0.703125 0.593750 +vt 0.734375 0.593750 +vt 0.578125 0.750000 +vt 0.546875 0.750000 +vt 0.703125 0.687500 +vt 0.703125 0.718750 +vt 0.687500 0.718750 +vt 0.625000 0.687500 +vt 0.593750 0.718750 +vt 0.546875 0.718750 +vt 0.578125 0.718750 +vt 0.734375 0.718750 +vt 0.781250 0.687500 +vt 0.750000 0.718750 +vt 0.546875 0.687500 +vt 0.531250 0.718750 +vt 0.812500 0.906250 +vt 0.781250 0.906250 +vt 0.656250 0.906250 +vt 0.625000 0.906250 +vt 0.640625 0.343750 +vt 0.640625 0.250000 +vt 0.671875 0.281250 +vt 0.718750 0.312500 +vt 0.687500 0.500000 +vt 0.687500 0.312500 +vt 0.718750 0.250000 +vt 0.687500 0.156250 +vt 0.718750 0.156250 +vt 0.765625 0.343750 +vt 0.734375 0.281250 +vt 0.765625 0.250000 +vt 0.687500 0.281250 +vt 0.718750 0.281250 +vt 0.453125 0.343750 +vt 0.453125 0.250000 +vt 0.484375 0.281250 +vt 0.781250 0.218750 +vt 0.812500 0.312500 +vt 0.781250 0.312500 +vt 0.781250 0.343750 +vt 0.812500 0.468750 +vt 0.781250 0.468750 +vt 0.578125 0.343750 +vt 0.546875 0.281250 +vt 0.578125 0.250000 +vt 0.531250 0.250000 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.312500 +vt 0.500000 0.500000 +vt 0.500000 0.312500 +vt 0.718750 0.593750 +vt 0.718750 0.500000 +vt 0.500000 0.281250 +vt 0.531250 0.281250 +vt 0.593750 0.218750 +vt 0.625000 0.312500 +vt 0.593750 0.312500 +vt 0.593750 0.343750 +vt 0.625000 0.468750 +vt 0.593750 0.468750 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.429688 0.375000 +vt 0.343750 0.250000 +vt 0.429688 0.250000 +vt 0.343750 0.625000 +vt 0.429688 0.500000 +vt 0.429688 0.625000 +vt 0.343750 0.500000 +vt 0.343750 0.375000 +vt 0.429688 0.750000 +vt 0.281250 0.500000 +vt 0.281250 0.625000 +vt 0.437500 0.875000 +vt 0.375000 1.000000 +vt 0.375000 0.875000 +vt 0.312500 0.875000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.375000 0.750000 +vt 0.312500 0.750000 +vt 0.500000 0.750000 +vt 0.437500 0.875000 +vt 0.437500 0.750000 +vt 0.375000 0.875000 +vt 0.250000 0.875000 +vt 0.250000 0.750000 +vt 0.046875 0.093750 +vt 0.031250 0.062500 +vt 0.046875 0.062500 +vt 0.031250 0.250000 +vt 0.046875 0.218750 +vt 0.046875 0.250000 +vt 0.031250 0.093750 +vt 0.015625 0.218750 +vt 0.015625 0.093750 +vt 0.000000 0.093750 +vt 0.000000 0.218750 +vt 0.062500 0.218750 +vt 0.031250 0.218750 +vt 0.109375 0.093750 +vt 0.093750 0.062500 +vt 0.109375 0.062500 +vt 0.093750 0.250000 +vt 0.109375 0.218750 +vt 0.109375 0.250000 +vt 0.093750 0.093750 +vt 0.078125 0.218750 +vt 0.078125 0.093750 +vt 0.062500 0.218750 +vt 0.062500 0.093750 +vt 0.125000 0.093750 +vt 0.093750 0.218750 +vt 0.171875 0.093750 +vt 0.156250 0.062500 +vt 0.171875 0.062500 +vt 0.156250 0.250000 +vt 0.171875 0.218750 +vt 0.171875 0.250000 +vt 0.156250 0.093750 +vt 0.140625 0.218750 +vt 0.140625 0.093750 +vt 0.125000 0.218750 +vt 0.125000 0.093750 +vt 0.187500 0.093750 +vt 0.156250 0.218750 +vt 0.281250 0.125000 +vt 0.250000 0.062500 +vt 0.281250 0.062500 +vt 0.250000 0.312500 +vt 0.281250 0.250000 +vt 0.281250 0.312500 +vt 0.312500 0.125000 +vt 0.250000 0.125000 +vt 0.250000 0.250000 +vt 0.218750 0.250000 +vt 0.218750 0.125000 +vt 0.187500 0.250000 +vt 0.187500 0.125000 +vt 0.046875 0.468750 +vt 0.031250 0.500000 +vt 0.031250 0.468750 +vt 0.031250 0.375000 +vt 0.046875 0.343750 +vt 0.046875 0.375000 +vt 0.062500 0.375000 +vt 0.062500 0.468750 +vt -0.000000 0.468750 +vt 0.015625 0.375000 +vt 0.015625 0.468750 +vt 0.218750 0.406250 +vt 0.281250 0.421875 +vt 0.218750 0.421875 +vt 0.218750 0.328125 +vt 0.281250 0.406250 +vt 0.218750 0.312500 +vt 0.281250 0.328125 +vt 0.289062 0.328125 +vt 0.289062 0.406250 +vt 0.218750 0.500000 +vt 0.281250 0.500000 +vt 0.046875 0.468750 +vt 0.031250 0.500000 +vt 0.046875 0.500000 +vt 0.031250 0.343750 +vt 0.046875 0.375000 +vt 0.046875 0.343750 +vt 0.000000 0.468750 +vt 0.015625 0.375000 +vt 0.000000 0.375000 +vt 0.062500 0.468750 +vt 0.031250 0.375000 +vt 0.031250 0.468750 +vt 0.015625 0.468750 +vt 0.218750 0.406250 +vt 0.281250 0.421875 +vt 0.281250 0.406250 +vt 0.218750 0.500000 +vt 0.218750 0.421875 +vt 0.218750 0.328125 +vt 0.281250 0.312500 +vt 0.218750 0.312500 +vt 0.289062 0.328125 +vt 0.281250 0.328125 +vt 0.187500 1.000000 +vt 0.250000 0.875000 +vt 0.226562 0.968750 +vt 0.265625 0.937500 +vt 0.265625 0.937500 +vt 0.578125 0.937500 +vt 0.734375 0.937500 +vt 0.687500 0.906250 +vt 0.656250 0.906250 +vt 0.656250 0.687500 +vt 0.593750 0.906250 +vt 0.750000 0.906250 +vt 0.531250 0.906250 +vt 0.500000 0.906250 +vt 0.500000 0.687500 +vt 0.812500 0.687500 +vt 0.656250 0.687500 +vt 0.671875 0.468750 +vt 0.625000 0.468750 +vt 0.625000 0.343750 +vt 0.687500 0.250000 +vt 0.734375 0.468750 +vt 0.484375 0.468750 +vt 0.437500 0.468750 +vt 0.437500 0.343750 +vt 0.500000 0.250000 +vt 0.812500 0.218750 +vt 0.812500 0.343750 +vt 0.546875 0.468750 +vt 0.687500 0.593750 +vt 0.625000 0.218750 +vt 0.625000 0.343750 +vt 0.500000 0.593750 +vt 0.343750 0.750000 +vt 0.437500 1.000000 +vt 0.500000 0.875000 +vt 0.062500 0.093750 +vt 0.125000 0.218750 +vt 0.187500 0.218750 +vt 0.312500 0.250000 +vt 0.046875 0.500000 +vt 0.031250 0.343750 +vt -0.000000 0.375000 +vt 0.281250 0.312500 +vt 0.062500 0.375000 +vt 0.281250 0.500000 +vt 0.289062 0.406250 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.9962 0.0000 -0.0872 +vn -0.9962 0.0000 0.0872 +vn -0.0872 0.0000 -0.9962 +vn 0.0872 0.0000 0.9962 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.2588 0.9659 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.9659 0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn 0.5792 0.5736 0.5792 +vn -0.5792 -0.5736 -0.5792 +vn -0.7071 -0.0000 0.7071 +vn 0.4056 -0.8192 0.4056 +vn 0.7071 -0.0000 -0.7071 +vn -0.4056 0.8192 -0.4056 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.6830 0.6830 0.2588 +vn 0.6830 -0.6830 -0.2588 +vn -0.1830 0.1830 -0.9659 +vn 0.1830 -0.1830 0.9659 +vn -0.6830 0.6830 -0.2588 +vn 0.6830 -0.6830 0.2588 +vn 0.1830 -0.1830 -0.9659 +vn -0.1830 0.1830 0.9659 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 4/7/3 6/4/3 2/8/3 +f 1/9/4 7/10/4 3/11/4 +f 3/11/5 8/12/5 4/7/5 +f 2/8/6 5/13/6 1/14/6 +f 31/15/2 29/16/2 30/17/2 +f 14/18/3 15/19/3 13/20/3 +f 9/21/6 15/19/6 11/22/6 +f 11/23/2 16/24/2 12/25/2 +f 12/26/5 14/18/5 10/27/5 +f 10/28/1 13/20/1 9/29/1 +f 23/30/2 21/31/2 22/32/2 +f 20/33/5 23/30/5 18/34/5 +f 17/35/6 21/36/6 19/37/6 +f 19/38/4 24/39/4 20/33/4 +f 18/34/3 22/40/3 17/35/3 +f 28/41/5 31/42/5 26/43/5 +f 25/44/6 29/16/6 27/45/6 +f 27/45/4 32/46/4 28/41/4 +f 26/47/3 30/17/3 25/44/3 +f 35/48/7 34/49/7 33/50/7 +f 39/51/8 37/52/8 38/53/8 +f 33/54/9 37/52/9 35/55/9 +f 35/48/10 40/56/10 36/57/10 +f 34/58/11 38/53/11 33/59/11 +f 36/60/12 39/51/12 34/61/12 +f 57/62/2 43/63/2 41/64/2 +f 47/65/2 45/66/2 46/67/2 +f 44/68/13 47/65/13 42/69/13 +f 64/70/1 60/71/1 59/72/1 +f 56/73/1 50/74/1 49/75/1 +f 51/76/13 57/62/13 52/77/13 +f 55/78/11 53/79/11 42/80/11 +f 59/81/10 51/82/10 64/70/10 +f 61/83/13 64/70/13 62/84/13 +f 52/77/2 62/84/2 51/76/2 +f 53/79/13 56/73/13 54/85/13 +f 42/69/2 54/85/2 44/68/2 +f 49/86/10 44/87/10 56/73/10 +f 63/88/11 61/83/11 52/89/11 +f 49/86/14 46/90/14 45/91/14 +f 59/81/14 41/92/14 43/93/14 +f 77/94/11 72/95/11 65/96/11 +f 66/97/15 69/98/15 65/99/15 +f 76/100/16 72/101/16 71/102/16 +f 78/103/10 66/104/10 71/105/10 +f 73/106/15 76/100/15 74/107/15 +f 65/99/17 74/107/17 66/97/17 +f 91/108/11 86/109/11 68/110/11 +f 71/111/18 77/112/18 78/113/18 +f 77/112/16 82/114/16 78/113/16 +f 82/114/18 80/115/18 79/116/18 +f 92/117/10 67/118/10 85/119/10 +f 90/120/16 86/121/16 85/122/16 +f 67/123/15 83/124/15 68/125/15 +f 79/126/17 69/98/17 70/127/17 +f 87/128/15 90/120/15 88/129/15 +f 68/125/17 88/129/17 67/123/17 +f 85/130/18 91/131/18 92/132/18 +f 91/131/16 96/133/16 92/132/16 +f 96/133/18 94/134/18 93/135/18 +f 93/136/17 83/124/17 84/137/17 +f 99/138/7 98/139/7 97/140/7 +f 103/141/8 101/142/8 102/143/8 +f 99/138/10 104/144/10 100/145/10 +f 97/146/11 103/141/11 102/143/11 +f 100/147/12 103/141/12 98/148/12 +f 107/149/1 106/150/1 105/151/1 +f 110/152/2 111/153/2 109/154/2 +f 108/155/3 110/152/3 106/156/3 +f 105/157/4 111/158/4 107/159/4 +f 107/159/5 112/160/5 108/155/5 +f 106/156/6 109/161/6 105/162/6 +f 115/163/19 113/164/19 114/165/19 +f 118/166/20 119/167/20 117/168/20 +f 116/169/21 118/170/21 113/171/21 +f 114/172/22 118/170/22 117/173/22 +f 115/163/23 117/174/23 119/167/23 +f 116/169/24 119/167/24 120/175/24 +f 123/176/11 121/177/11 122/178/11 +f 126/179/10 127/180/10 125/181/10 +f 124/182/14 126/183/14 121/184/14 +f 121/184/1 125/185/1 122/186/1 +f 122/187/13 127/180/13 123/176/13 +f 123/176/2 128/188/2 124/182/2 +f 131/189/21 129/190/21 130/191/21 +f 134/192/23 135/193/23 133/194/23 +f 132/195/25 134/196/25 129/197/25 +f 129/197/1 133/198/1 130/199/1 +f 130/200/26 135/193/26 131/189/26 +f 131/189/2 136/201/2 132/195/2 +f 139/202/14 138/203/14 137/204/14 +f 142/205/13 143/206/13 141/207/13 +f 137/208/11 143/206/11 139/202/11 +f 140/209/2 143/206/2 144/210/2 +f 140/209/10 142/211/10 138/212/10 +f 138/212/1 141/213/1 137/214/1 +f 146/215/27 147/216/27 148/217/27 +f 152/218/28 149/219/28 150/220/28 +f 146/215/29 152/218/29 150/220/29 +f 146/215/9 149/221/9 145/222/9 +f 145/223/30 151/224/30 147/225/30 +f 147/225/12 152/218/12 148/217/12 +f 158/226/27 156/227/27 157/228/27 +f 160/229/29 155/230/29 158/226/29 +f 159/231/28 153/232/28 160/229/28 +f 155/230/9 154/233/9 156/234/9 +f 159/235/30 156/227/30 154/236/30 +f 161/237/31 164/238/31 162/239/31 +f 168/240/32 165/241/32 166/242/32 +f 162/243/33 168/244/33 166/245/33 +f 162/246/9 165/241/9 161/237/9 +f 161/237/34 167/247/34 163/248/34 +f 164/249/12 167/247/12 168/244/12 +f 173/250/31 171/251/31 172/252/31 +f 176/253/33 171/251/33 174/254/33 +f 175/255/32 169/256/32 176/257/32 +f 172/252/9 169/258/9 170/259/9 +f 175/255/34 172/252/34 170/259/34 +f 3/1/1 4/260/1 2/2/1 +f 6/4/2 8/12/2 7/5/2 +f 4/7/3 8/12/3 6/4/3 +f 1/9/4 5/261/4 7/10/4 +f 3/11/5 7/10/5 8/12/5 +f 2/8/6 6/4/6 5/13/6 +f 31/15/2 32/262/2 29/16/2 +f 14/18/3 16/24/3 15/19/3 +f 9/21/6 13/20/6 15/19/6 +f 11/23/2 15/19/2 16/24/2 +f 12/26/5 16/24/5 14/18/5 +f 10/28/1 14/18/1 13/20/1 +f 23/30/2 24/39/2 21/31/2 +f 20/33/5 24/39/5 23/30/5 +f 17/35/6 22/40/6 21/36/6 +f 19/38/4 21/263/4 24/39/4 +f 18/34/3 23/30/3 22/40/3 +f 28/41/5 32/46/5 31/42/5 +f 25/44/6 30/17/6 29/16/6 +f 27/45/4 29/16/4 32/46/4 +f 26/47/3 31/264/3 30/17/3 +f 35/48/7 36/57/7 34/49/7 +f 39/51/8 40/56/8 37/52/8 +f 33/54/9 38/53/9 37/52/9 +f 35/48/10 37/52/10 40/56/10 +f 34/58/11 39/51/11 38/53/11 +f 36/60/12 40/56/12 39/51/12 +f 57/62/2 58/265/2 43/63/2 +f 47/65/2 48/266/2 45/66/2 +f 44/68/13 48/266/13 47/65/13 +f 64/70/1 63/88/1 60/71/1 +f 56/73/1 55/78/1 50/74/1 +f 51/76/13 58/265/13 57/62/13 +f 47/267/11 46/268/11 42/80/11 +f 46/268/11 50/269/11 42/80/11 +f 50/269/11 55/78/11 42/80/11 +f 59/81/10 43/93/10 51/82/10 +f 43/93/10 58/270/10 51/82/10 +f 51/82/10 62/84/10 64/70/10 +f 61/83/13 63/88/13 64/70/13 +f 52/77/2 61/83/2 62/84/2 +f 53/79/13 55/78/13 56/73/13 +f 42/69/2 53/79/2 54/85/2 +f 49/86/10 45/91/10 44/87/10 +f 45/91/10 48/271/10 44/87/10 +f 44/87/10 54/85/10 56/73/10 +f 57/272/11 41/273/11 52/89/11 +f 41/273/11 60/274/11 52/89/11 +f 60/274/11 63/88/11 52/89/11 +f 49/86/14 50/275/14 46/90/14 +f 59/81/14 60/276/14 41/92/14 +f 65/96/11 69/277/11 77/94/11 +f 69/277/11 80/278/11 77/94/11 +f 80/278/11 81/279/11 77/94/11 +f 72/95/11 75/280/11 65/96/11 +f 75/280/11 73/106/11 65/96/11 +f 66/97/15 70/127/15 69/98/15 +f 76/100/16 75/280/16 72/101/16 +f 78/103/10 82/114/10 79/116/10 +f 79/116/10 70/281/10 78/103/10 +f 70/281/10 66/104/10 78/103/10 +f 66/104/10 74/107/10 76/100/10 +f 66/104/10 76/100/10 71/105/10 +f 73/106/15 75/280/15 76/100/15 +f 65/99/17 73/106/17 74/107/17 +f 68/110/11 83/282/11 91/108/11 +f 83/282/11 94/283/11 91/108/11 +f 94/283/11 95/284/11 91/108/11 +f 86/109/11 89/285/11 68/110/11 +f 89/285/11 87/128/11 68/110/11 +f 71/111/18 72/286/18 77/112/18 +f 77/112/16 81/287/16 82/114/16 +f 82/114/18 81/287/18 80/115/18 +f 92/117/10 96/133/10 93/135/10 +f 93/135/10 84/288/10 92/117/10 +f 84/288/10 67/118/10 92/117/10 +f 67/118/10 88/129/10 90/120/10 +f 67/118/10 90/120/10 85/119/10 +f 90/120/16 89/285/16 86/121/16 +f 67/123/15 84/137/15 83/124/15 +f 79/126/17 80/289/17 69/98/17 +f 87/128/15 89/285/15 90/120/15 +f 68/125/17 87/128/17 88/129/17 +f 85/130/18 86/290/18 91/131/18 +f 91/131/16 95/291/16 96/133/16 +f 96/133/18 95/291/18 94/134/18 +f 93/136/17 94/292/17 83/124/17 +f 99/138/7 100/145/7 98/139/7 +f 103/141/8 104/144/8 101/142/8 +f 99/138/10 101/142/10 104/144/10 +f 97/146/11 98/293/11 103/141/11 +f 100/147/12 104/144/12 103/141/12 +f 107/149/1 108/294/1 106/150/1 +f 110/152/2 112/160/2 111/153/2 +f 108/155/3 112/160/3 110/152/3 +f 105/157/4 109/295/4 111/158/4 +f 107/159/5 111/158/5 112/160/5 +f 106/156/6 110/152/6 109/161/6 +f 115/163/19 116/169/19 113/164/19 +f 118/166/20 120/175/20 119/167/20 +f 116/169/21 120/175/21 118/170/21 +f 114/172/22 113/171/22 118/170/22 +f 115/163/23 114/296/23 117/174/23 +f 116/169/24 115/163/24 119/167/24 +f 123/176/11 124/182/11 121/177/11 +f 126/179/10 128/188/10 127/180/10 +f 124/182/14 128/188/14 126/183/14 +f 121/184/1 126/183/1 125/185/1 +f 122/187/13 125/297/13 127/180/13 +f 123/176/2 127/180/2 128/188/2 +f 131/189/21 132/195/21 129/190/21 +f 134/192/23 136/201/23 135/193/23 +f 132/195/25 136/201/25 134/196/25 +f 129/197/1 134/196/1 133/198/1 +f 130/200/26 133/298/26 135/193/26 +f 131/189/2 135/193/2 136/201/2 +f 139/202/14 140/209/14 138/203/14 +f 142/205/13 144/210/13 143/206/13 +f 137/208/11 141/299/11 143/206/11 +f 140/209/2 139/202/2 143/206/2 +f 140/209/10 144/210/10 142/211/10 +f 138/212/1 142/211/1 141/213/1 +f 146/215/27 145/300/27 147/216/27 +f 152/218/28 151/301/28 149/219/28 +f 146/215/29 148/217/29 152/218/29 +f 146/215/9 150/220/9 149/221/9 +f 145/223/30 149/302/30 151/224/30 +f 147/225/12 151/224/12 152/218/12 +f 158/226/27 155/230/27 156/227/27 +f 160/229/29 153/232/29 155/230/29 +f 159/231/28 154/303/28 153/232/28 +f 155/230/9 153/232/9 154/233/9 +f 159/235/30 157/228/30 156/227/30 +f 161/237/31 163/248/31 164/238/31 +f 168/240/32 167/247/32 165/241/32 +f 162/243/33 164/249/33 168/244/33 +f 162/246/9 166/304/9 165/241/9 +f 161/237/34 165/241/34 167/247/34 +f 164/249/12 163/248/12 167/247/12 +f 173/250/31 174/254/31 171/251/31 +f 176/253/33 169/305/33 171/251/33 +f 175/255/32 170/259/32 169/256/32 +f 172/252/9 171/306/9 169/258/9 +f 175/255/34 173/250/34 172/252/34 +o goober +v 0.250000 1.000000 3.250000 +v 0.750000 1.000000 3.250000 +v 0.250000 1.000000 2.750000 +v 0.750000 1.000000 2.750000 +v 0.250000 1.500000 3.250000 +v 0.750000 1.500000 3.250000 +v 0.250000 1.500000 2.750000 +v 0.750000 1.500000 2.750000 +v 0.750000 1.031250 3.093750 +v 0.750000 1.031250 2.906250 +v 0.750000 1.218750 3.093750 +v 0.750000 1.218750 2.906250 +v 0.937500 1.031250 3.093750 +v 0.937500 1.031250 2.906250 +v 0.937500 1.218750 3.093750 +v 0.937500 1.218750 2.906250 +v 0.593750 1.500000 2.937500 +v 0.593750 1.500000 2.812500 +v 0.406250 1.500000 2.937500 +v 0.406250 1.500000 2.812500 +v 0.406250 1.750000 2.937500 +v 0.593750 1.750000 2.937500 +v 0.593750 1.750000 2.812500 +v 0.406250 1.750000 2.812500 +v 0.593750 1.500000 3.187500 +v 0.593750 1.500000 3.062500 +v 0.406250 1.500000 3.187500 +v 0.406250 1.500000 3.062500 +v 0.406250 1.750000 3.187500 +v 0.593750 1.750000 3.187500 +v 0.593750 1.750000 3.062500 +v 0.406250 1.750000 3.062500 +v -0.625000 0.500000 3.250000 +v 0.625000 0.500000 3.250000 +v -0.625000 0.500000 2.750000 +v 0.625000 0.500000 2.750000 +v -0.625000 1.000000 2.750000 +v -0.625000 1.000000 3.250000 +v 0.625000 1.000000 3.250000 +v 0.625000 1.000000 2.750000 +v 0.250000 0.875000 3.312500 +v 0.500000 0.125000 2.937500 +v 0.250000 0.875000 3.062500 +v 0.500000 0.125000 2.687500 +v 0.250000 0.875000 2.687500 +v 0.250000 0.875000 2.937500 +v 0.500000 0.875000 2.937500 +v 0.500000 0.875000 2.687500 +v 0.250000 0.000000 2.687500 +v 0.250000 0.000000 2.937500 +v 0.500000 0.125000 3.062500 +v 0.500000 0.125000 3.312500 +v 0.625000 0.125000 2.937500 +v 0.625000 0.125000 2.687500 +v 0.625000 0.000000 2.937500 +v 0.625000 0.000000 2.687500 +v 0.500000 0.875000 3.312500 +v 0.500000 0.875000 3.062500 +v 0.250000 0.000000 3.062500 +v 0.250000 0.000000 3.312500 +v 0.625000 0.125000 3.312500 +v 0.625000 0.125000 3.062500 +v 0.625000 0.000000 3.312500 +v 0.625000 0.000000 3.062500 +v -0.312500 0.125000 2.937500 +v -0.312500 0.125000 2.687500 +v -0.312500 0.125000 3.062500 +v -0.312500 0.125000 3.312500 +v -0.312500 0.875000 2.937500 +v -0.312500 0.875000 2.687500 +v -0.562500 0.000000 2.687500 +v -0.562500 0.000000 2.937500 +v -0.187500 0.125000 2.937500 +v -0.187500 0.125000 2.687500 +v -0.187500 0.000000 2.937500 +v -0.187500 0.000000 2.687500 +v -0.562500 0.375000 2.937500 +v -0.562500 0.375000 2.687500 +v -0.687500 0.875000 2.687500 +v -0.687500 0.875000 2.937500 +v -0.687500 0.375000 2.937500 +v -0.687500 0.375000 2.687500 +v -0.312500 0.875000 3.312500 +v -0.312500 0.875000 3.062500 +v -0.562500 0.000000 3.062500 +v -0.562500 0.000000 3.312500 +v -0.187500 0.125000 3.312500 +v -0.187500 0.125000 3.062500 +v -0.187500 0.000000 3.312500 +v -0.187500 0.000000 3.062500 +v -0.562500 0.375000 3.312500 +v -0.562500 0.375000 3.062500 +v -0.687500 0.875000 3.062500 +v -0.687500 0.875000 3.312500 +v -0.687500 0.375000 3.312500 +v -0.687500 0.375000 3.062500 +v -0.093750 0.468750 3.281250 +v 0.656250 0.468750 3.281250 +v -0.093750 0.468750 2.718750 +v 0.656250 0.468750 2.718750 +v -0.093750 1.031250 2.718750 +v -0.093750 1.031250 3.281250 +v 0.656250 1.031250 3.281250 +v 0.656250 1.031250 2.718750 +v 0.218750 0.968750 3.281250 +v 0.781250 0.968750 3.281250 +v 0.218750 0.968750 2.718750 +v 0.781250 0.968750 2.718750 +v 0.218750 1.531250 3.281250 +v 0.781250 1.531250 3.281250 +v 0.218750 1.531250 2.718750 +v 0.781250 1.531250 2.718750 +v -0.625000 0.812500 3.062500 +v -0.625000 0.812500 2.937500 +v -0.625000 0.937500 2.937500 +v -0.625000 0.937500 3.062500 +v -1.125000 0.812500 2.937500 +v -1.125000 0.812500 3.062500 +v -1.125000 0.937500 2.937500 +v -1.125000 0.937500 3.062500 +v -1.125000 0.812500 3.062500 +v -1.125000 0.812500 2.937500 +v -1.125000 0.937500 2.937500 +v -1.125000 0.937500 3.062500 +v -1.625000 0.812500 2.937500 +v -1.625000 0.812500 3.062500 +v -1.625000 0.937500 2.937500 +v -1.625000 0.937500 3.062500 +v -1.625000 0.812500 3.062500 +v -1.625000 0.812500 2.937500 +v -1.625000 0.937500 2.937500 +v -1.625000 0.937500 3.062500 +v -2.125000 0.812500 2.937500 +v -2.125000 0.812500 3.062500 +v -2.125000 0.937500 2.937500 +v -2.125000 0.937500 3.062500 +v -2.125000 0.750000 2.875000 +v -2.125000 0.750000 3.125000 +v -2.125000 1.000000 2.875000 +v -2.125000 1.000000 3.125000 +v -2.625000 0.750000 2.875000 +v -2.625000 0.750000 3.125000 +v -2.625000 1.000000 2.875000 +v -2.625000 1.000000 3.125000 +v 0.187500 1.000000 2.750000 +v 0.187500 1.000000 2.625000 +v 0.312500 1.000000 2.750000 +v 0.312500 1.000000 2.625000 +v 0.187500 0.625000 2.750000 +v 0.187500 0.625000 2.625000 +v 0.312500 0.625000 2.750000 +v 0.312500 0.625000 2.625000 +v -0.312500 0.656250 2.656250 +v -0.312500 0.656250 2.718750 +v -0.312500 0.968750 2.656250 +v -0.312500 0.968750 2.718750 +v 0.187500 0.968750 2.718750 +v 0.187500 0.968750 2.656250 +v 0.187500 0.656250 2.718750 +v 0.187500 0.656250 2.656250 +v 0.187500 1.000000 3.375000 +v 0.187500 1.000000 3.250000 +v 0.312500 1.000000 3.375000 +v 0.312500 1.000000 3.250000 +v 0.187500 0.625000 3.375000 +v 0.187500 0.625000 3.250000 +v 0.312500 0.625000 3.375000 +v 0.312500 0.625000 3.250000 +v -0.312500 0.656250 3.281250 +v -0.312500 0.656250 3.343750 +v -0.312500 0.968750 3.281250 +v -0.312500 0.968750 3.343750 +v 0.187500 0.968750 3.343750 +v 0.187500 0.968750 3.281250 +v 0.187500 0.656250 3.343750 +v 0.187500 0.656250 3.281250 +vt 0.187500 0.875000 +vt 0.125000 1.000000 +vt 0.125000 0.875000 +vt 0.062500 0.875000 +vt 0.125000 1.000000 +vt 0.062500 1.000000 +vt 0.125000 0.750000 +vt 0.062500 0.750000 +vt 0.250000 0.750000 +vt 0.187500 0.875000 +vt 0.187500 0.750000 +vt 0.125000 0.875000 +vt 0.000000 0.875000 +vt 0.000000 0.750000 +vt 0.250000 0.968750 +vt 0.226562 0.937500 +vt 0.250000 0.937500 +vt 0.484375 0.640625 +vt 0.460938 0.687500 +vt 0.460938 0.640625 +vt 0.437500 0.640625 +vt 0.437500 0.687500 +vt 0.460938 0.734375 +vt 0.484375 0.687500 +vt 0.484375 0.734375 +vt 0.507812 0.687500 +vt 0.507812 0.640625 +vt 0.484375 0.593750 +vt 0.460938 0.593750 +vt 0.226562 0.937500 +vt 0.250000 0.968750 +vt 0.226562 0.968750 +vt 0.250000 0.875000 +vt 0.226562 0.875000 +vt 0.210938 0.875000 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.265625 0.875000 +vt 0.250000 0.937500 +vt 0.210938 0.937500 +vt 0.210938 0.875000 +vt 0.187500 0.937500 +vt 0.187500 0.875000 +vt 0.250000 0.875000 +vt 0.226562 0.875000 +vt 0.210938 0.937500 +vt 0.265625 0.875000 +vt 0.218750 0.375000 +vt 0.062500 0.250000 +vt 0.218750 0.250000 +vt 0.062500 0.625000 +vt 0.218750 0.500000 +vt 0.218750 0.625000 +vt 0.281250 0.625000 +vt 0.281250 0.500000 +vt 0.062500 0.500000 +vt 0.062500 0.375000 +vt 0.062500 0.750000 +vt 0.218750 0.750000 +vt -0.000000 0.500000 +vt -0.000000 0.625000 +vt 0.546875 0.937500 +vt 0.578125 1.000000 +vt 0.546875 1.000000 +vt 0.703125 0.937500 +vt 0.734375 1.000000 +vt 0.703125 1.000000 +vt 0.734375 0.750000 +vt 0.703125 0.750000 +vt 0.578125 0.687500 +vt 0.546875 0.593750 +vt 0.578125 0.593750 +vt 0.734375 0.687500 +vt 0.703125 0.593750 +vt 0.734375 0.593750 +vt 0.578125 0.750000 +vt 0.546875 0.750000 +vt 0.703125 0.687500 +vt 0.703125 0.718750 +vt 0.687500 0.718750 +vt 0.625000 0.687500 +vt 0.593750 0.718750 +vt 0.546875 0.718750 +vt 0.578125 0.718750 +vt 0.734375 0.718750 +vt 0.781250 0.687500 +vt 0.750000 0.718750 +vt 0.546875 0.687500 +vt 0.531250 0.718750 +vt 0.812500 0.906250 +vt 0.781250 0.906250 +vt 0.656250 0.906250 +vt 0.625000 0.906250 +vt 0.640625 0.343750 +vt 0.640625 0.250000 +vt 0.671875 0.281250 +vt 0.718750 0.312500 +vt 0.687500 0.500000 +vt 0.687500 0.312500 +vt 0.718750 0.250000 +vt 0.687500 0.156250 +vt 0.718750 0.156250 +vt 0.765625 0.343750 +vt 0.734375 0.281250 +vt 0.765625 0.250000 +vt 0.687500 0.281250 +vt 0.718750 0.281250 +vt 0.453125 0.343750 +vt 0.453125 0.250000 +vt 0.484375 0.281250 +vt 0.781250 0.218750 +vt 0.812500 0.312500 +vt 0.781250 0.312500 +vt 0.781250 0.343750 +vt 0.812500 0.468750 +vt 0.781250 0.468750 +vt 0.578125 0.343750 +vt 0.546875 0.281250 +vt 0.578125 0.250000 +vt 0.531250 0.250000 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.312500 +vt 0.500000 0.500000 +vt 0.500000 0.312500 +vt 0.718750 0.593750 +vt 0.718750 0.500000 +vt 0.500000 0.281250 +vt 0.531250 0.281250 +vt 0.593750 0.218750 +vt 0.625000 0.312500 +vt 0.593750 0.312500 +vt 0.593750 0.343750 +vt 0.625000 0.468750 +vt 0.593750 0.468750 +vt 0.531250 0.593750 +vt 0.531250 0.500000 +vt 0.429688 0.375000 +vt 0.343750 0.250000 +vt 0.429688 0.250000 +vt 0.343750 0.625000 +vt 0.429688 0.500000 +vt 0.429688 0.625000 +vt 0.343750 0.500000 +vt 0.343750 0.375000 +vt 0.343750 0.750000 +vt 0.429688 0.750000 +vt 0.281250 0.500000 +vt 0.281250 0.625000 +vt 0.437500 0.875000 +vt 0.375000 1.000000 +vt 0.375000 0.875000 +vt 0.312500 0.875000 +vt 0.375000 1.000000 +vt 0.312500 1.000000 +vt 0.375000 0.750000 +vt 0.312500 0.750000 +vt 0.500000 0.750000 +vt 0.437500 0.875000 +vt 0.437500 0.750000 +vt 0.375000 0.875000 +vt 0.250000 0.875000 +vt 0.250000 0.750000 +vt 0.046875 0.093750 +vt 0.031250 0.062500 +vt 0.046875 0.062500 +vt 0.031250 0.250000 +vt 0.046875 0.218750 +vt 0.046875 0.250000 +vt 0.031250 0.093750 +vt 0.015625 0.218750 +vt 0.015625 0.093750 +vt 0.000000 0.218750 +vt 0.000000 0.093750 +vt 0.062500 0.093750 +vt 0.031250 0.218750 +vt 0.109375 0.093750 +vt 0.093750 0.062500 +vt 0.109375 0.062500 +vt 0.093750 0.250000 +vt 0.109375 0.218750 +vt 0.109375 0.250000 +vt 0.093750 0.093750 +vt 0.078125 0.218750 +vt 0.078125 0.093750 +vt 0.062500 0.218750 +vt 0.062500 0.093750 +vt 0.125000 0.093750 +vt 0.093750 0.218750 +vt 0.171875 0.093750 +vt 0.156250 0.062500 +vt 0.171875 0.062500 +vt 0.156250 0.250000 +vt 0.171875 0.218750 +vt 0.171875 0.250000 +vt 0.156250 0.093750 +vt 0.140625 0.218750 +vt 0.140625 0.093750 +vt 0.125000 0.218750 +vt 0.125000 0.093750 +vt 0.187500 0.093750 +vt 0.156250 0.218750 +vt 0.281250 0.125000 +vt 0.250000 0.062500 +vt 0.281250 0.062500 +vt 0.250000 0.312500 +vt 0.281250 0.250000 +vt 0.281250 0.312500 +vt 0.312500 0.125000 +vt 0.250000 0.250000 +vt 0.250000 0.125000 +vt 0.218750 0.250000 +vt 0.218750 0.125000 +vt 0.187500 0.250000 +vt 0.187500 0.125000 +vt 0.046875 0.500000 +vt 0.031250 0.468750 +vt 0.046875 0.468750 +vt 0.031250 0.375000 +vt 0.046875 0.343750 +vt 0.046875 0.375000 +vt 0.062500 0.375000 +vt 0.062500 0.468750 +vt -0.000000 0.468750 +vt 0.015625 0.375000 +vt 0.015625 0.468750 +vt 0.218750 0.406250 +vt 0.281250 0.421875 +vt 0.218750 0.421875 +vt 0.218750 0.328125 +vt 0.281250 0.406250 +vt 0.218750 0.312500 +vt 0.281250 0.328125 +vt 0.289062 0.328125 +vt 0.289062 0.406250 +vt 0.281250 0.500000 +vt 0.218750 0.500000 +vt 0.046875 0.468750 +vt 0.031250 0.500000 +vt 0.046875 0.500000 +vt 0.031250 0.343750 +vt 0.046875 0.375000 +vt 0.046875 0.343750 +vt 0.015625 0.468750 +vt 0.000000 0.375000 +vt 0.000000 0.468750 +vt 0.062500 0.468750 +vt 0.031250 0.375000 +vt 0.031250 0.468750 +vt 0.015625 0.375000 +vt 0.218750 0.421875 +vt 0.281250 0.406250 +vt 0.218750 0.406250 +vt 0.218750 0.500000 +vt 0.281250 0.421875 +vt 0.218750 0.328125 +vt 0.281250 0.312500 +vt 0.218750 0.312500 +vt 0.289062 0.406250 +vt 0.281250 0.328125 +vt 0.187500 1.000000 +vt 0.250000 0.875000 +vt 0.226562 0.968750 +vt 0.265625 0.937500 +vt 0.265625 0.937500 +vt 0.578125 0.937500 +vt 0.734375 0.937500 +vt 0.687500 0.906250 +vt 0.656250 0.906250 +vt 0.656250 0.687500 +vt 0.593750 0.906250 +vt 0.750000 0.906250 +vt 0.531250 0.906250 +vt 0.500000 0.906250 +vt 0.500000 0.687500 +vt 0.812500 0.687500 +vt 0.656250 0.687500 +vt 0.671875 0.468750 +vt 0.625000 0.468750 +vt 0.625000 0.343750 +vt 0.687500 0.250000 +vt 0.734375 0.468750 +vt 0.484375 0.468750 +vt 0.437500 0.468750 +vt 0.437500 0.343750 +vt 0.500000 0.250000 +vt 0.812500 0.218750 +vt 0.812500 0.343750 +vt 0.546875 0.468750 +vt 0.687500 0.593750 +vt 0.625000 0.218750 +vt 0.625000 0.343750 +vt 0.500000 0.593750 +vt 0.437500 1.000000 +vt 0.500000 0.875000 +vt 0.062500 0.218750 +vt 0.125000 0.218750 +vt 0.187500 0.218750 +vt 0.312500 0.250000 +vt 0.031250 0.500000 +vt 0.031250 0.343750 +vt -0.000000 0.375000 +vt 0.281250 0.312500 +vt 0.062500 0.375000 +vt 0.281250 0.500000 +vt 0.289062 0.328125 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +s off +f 179/307/35 178/308/35 177/309/35 +f 182/310/36 183/311/36 181/312/36 +f 180/313/37 182/310/37 178/314/37 +f 177/315/38 183/316/38 179/317/38 +f 179/317/39 184/318/39 180/313/39 +f 178/314/40 181/319/40 177/320/40 +f 207/321/36 205/322/36 206/323/36 +f 190/324/37 191/325/37 189/326/37 +f 185/327/40 191/325/40 187/328/40 +f 187/329/36 192/330/36 188/331/36 +f 188/332/39 190/324/39 186/333/39 +f 186/334/35 189/326/35 185/335/35 +f 199/336/36 197/337/36 198/338/36 +f 196/339/39 199/336/39 194/340/39 +f 193/341/40 197/342/40 195/343/40 +f 195/344/38 200/345/38 196/339/38 +f 194/340/37 198/346/37 193/341/37 +f 204/347/39 207/348/39 202/349/39 +f 201/350/40 205/322/40 203/351/40 +f 203/351/38 208/352/38 204/347/38 +f 202/353/37 206/323/37 201/350/37 +f 211/354/35 210/355/35 209/356/35 +f 215/357/36 213/358/36 214/359/36 +f 209/360/38 213/358/38 211/361/38 +f 211/354/39 216/362/39 212/363/39 +f 210/364/40 214/359/40 209/365/40 +f 212/366/37 215/357/37 210/367/37 +f 233/368/36 219/369/36 217/370/36 +f 223/371/36 221/372/36 222/373/36 +f 220/374/37 223/371/37 218/375/37 +f 240/376/35 236/377/35 235/378/35 +f 232/379/35 226/380/35 225/381/35 +f 227/382/37 233/368/37 228/383/37 +f 231/384/40 229/385/40 218/386/40 +f 235/387/39 227/388/39 240/376/39 +f 237/389/37 240/376/37 238/390/37 +f 228/383/36 238/390/36 227/382/36 +f 229/385/37 232/379/37 230/391/37 +f 218/375/36 230/391/36 220/374/36 +f 225/392/39 220/393/39 232/379/39 +f 239/394/40 237/389/40 228/395/40 +f 225/392/38 222/396/38 221/397/38 +f 235/387/38 217/398/38 219/399/38 +f 253/400/40 248/401/40 241/402/40 +f 242/403/37 245/404/37 241/405/37 +f 252/406/35 248/407/35 247/408/35 +f 254/409/39 242/410/39 247/411/39 +f 249/412/37 252/406/37 250/413/37 +f 241/405/36 250/413/36 242/403/36 +f 267/414/40 262/415/40 244/416/40 +f 247/417/38 253/418/38 254/419/38 +f 253/418/35 258/420/35 254/419/35 +f 258/420/38 256/421/38 255/422/38 +f 268/423/39 243/424/39 261/425/39 +f 266/426/35 262/427/35 261/428/35 +f 243/429/37 259/430/37 244/431/37 +f 255/432/36 245/404/36 246/433/36 +f 263/434/37 266/426/37 264/435/37 +f 244/431/36 264/435/36 243/429/36 +f 261/436/38 267/437/38 268/438/38 +f 267/437/35 272/439/35 268/438/35 +f 272/439/38 270/440/38 269/441/38 +f 269/442/36 259/430/36 260/443/36 +f 275/444/35 274/445/35 273/446/35 +f 279/447/36 277/448/36 278/449/36 +f 275/444/39 280/450/39 276/451/39 +f 274/452/40 278/449/40 273/453/40 +f 276/454/37 279/447/37 274/455/37 +f 283/456/35 282/457/35 281/458/35 +f 286/459/36 287/460/36 285/461/36 +f 284/462/37 286/459/37 282/463/37 +f 281/464/38 287/465/38 283/466/38 +f 283/466/39 288/467/39 284/462/39 +f 282/463/40 285/468/40 281/469/40 +f 291/470/37 289/471/37 290/472/37 +f 294/473/38 295/474/38 293/475/38 +f 292/476/40 294/477/40 289/478/40 +f 289/478/35 293/479/35 290/480/35 +f 290/481/39 295/474/39 291/470/39 +f 291/470/36 296/482/36 292/476/36 +f 299/483/37 297/484/37 298/485/37 +f 302/486/38 303/487/38 301/488/38 +f 300/489/40 302/490/40 297/491/40 +f 297/491/35 301/492/35 298/493/35 +f 298/494/39 303/487/39 299/483/39 +f 299/483/36 304/495/36 300/489/36 +f 307/496/37 305/497/37 306/498/37 +f 310/499/38 311/500/38 309/501/38 +f 308/502/40 310/503/40 305/504/40 +f 305/504/35 309/505/35 306/506/35 +f 306/507/39 311/500/39 307/496/39 +f 307/496/36 312/508/36 308/502/36 +f 315/509/37 314/510/37 313/511/37 +f 318/512/38 319/513/38 317/514/38 +f 313/515/39 319/513/39 315/509/39 +f 315/509/36 320/516/36 316/517/36 +f 316/517/40 318/518/40 314/519/40 +f 314/519/35 317/520/35 313/521/35 +f 321/522/36 324/523/36 322/524/36 +f 328/525/35 325/526/35 326/527/35 +f 324/523/39 326/527/39 322/524/39 +f 322/524/38 325/528/38 321/529/38 +f 321/530/40 327/531/40 323/532/40 +f 323/532/37 328/525/37 324/523/37 +f 334/533/36 332/534/36 333/535/36 +f 336/536/39 331/537/39 334/533/39 +f 335/538/35 329/539/35 336/536/35 +f 331/537/38 330/540/38 332/541/38 +f 333/535/40 330/542/40 335/543/40 +f 337/544/36 340/545/36 338/546/36 +f 344/547/35 341/548/35 342/549/35 +f 340/550/39 342/551/39 338/552/39 +f 338/553/38 341/548/38 337/544/38 +f 337/544/40 343/554/40 339/555/40 +f 339/555/37 344/556/37 340/550/37 +f 350/557/36 348/558/36 349/559/36 +f 352/560/39 347/561/39 350/557/39 +f 351/562/35 345/563/35 352/564/35 +f 347/565/38 346/566/38 348/558/38 +f 349/559/40 346/566/40 351/562/40 +f 179/307/35 180/567/35 178/308/35 +f 182/310/36 184/318/36 183/311/36 +f 180/313/37 184/318/37 182/310/37 +f 177/315/38 181/568/38 183/316/38 +f 179/317/39 183/316/39 184/318/39 +f 178/314/40 182/310/40 181/319/40 +f 207/321/36 208/569/36 205/322/36 +f 190/324/37 192/330/37 191/325/37 +f 185/327/40 189/326/40 191/325/40 +f 187/329/36 191/325/36 192/330/36 +f 188/332/39 192/330/39 190/324/39 +f 186/334/35 190/324/35 189/326/35 +f 199/336/36 200/345/36 197/337/36 +f 196/339/39 200/345/39 199/336/39 +f 193/341/40 198/346/40 197/342/40 +f 195/344/38 197/570/38 200/345/38 +f 194/340/37 199/336/37 198/346/37 +f 204/347/39 208/352/39 207/348/39 +f 201/350/40 206/323/40 205/322/40 +f 203/351/38 205/322/38 208/352/38 +f 202/353/37 207/571/37 206/323/37 +f 211/354/35 212/363/35 210/355/35 +f 215/357/36 216/362/36 213/358/36 +f 209/360/38 214/359/38 213/358/38 +f 211/354/39 213/358/39 216/362/39 +f 210/364/40 215/357/40 214/359/40 +f 212/366/37 216/362/37 215/357/37 +f 233/368/36 234/572/36 219/369/36 +f 223/371/36 224/573/36 221/372/36 +f 220/374/37 224/573/37 223/371/37 +f 240/376/35 239/394/35 236/377/35 +f 232/379/35 231/384/35 226/380/35 +f 227/382/37 234/572/37 233/368/37 +f 223/574/40 222/575/40 218/386/40 +f 222/575/40 226/576/40 218/386/40 +f 226/576/40 231/384/40 218/386/40 +f 235/387/39 219/399/39 227/388/39 +f 219/399/39 234/577/39 227/388/39 +f 227/388/39 238/390/39 240/376/39 +f 237/389/37 239/394/37 240/376/37 +f 228/383/36 237/389/36 238/390/36 +f 229/385/37 231/384/37 232/379/37 +f 218/375/36 229/385/36 230/391/36 +f 225/392/39 221/397/39 220/393/39 +f 221/397/39 224/578/39 220/393/39 +f 220/393/39 230/391/39 232/379/39 +f 233/579/40 217/580/40 228/395/40 +f 217/580/40 236/581/40 228/395/40 +f 236/581/40 239/394/40 228/395/40 +f 225/392/38 226/582/38 222/396/38 +f 235/387/38 236/583/38 217/398/38 +f 241/402/40 245/584/40 253/400/40 +f 245/584/40 256/585/40 253/400/40 +f 256/585/40 257/586/40 253/400/40 +f 248/401/40 251/587/40 241/402/40 +f 251/587/40 249/412/40 241/402/40 +f 242/403/37 246/433/37 245/404/37 +f 252/406/35 251/587/35 248/407/35 +f 254/409/39 258/420/39 255/422/39 +f 255/422/39 246/588/39 254/409/39 +f 246/588/39 242/410/39 254/409/39 +f 242/410/39 250/413/39 252/406/39 +f 242/410/39 252/406/39 247/411/39 +f 249/412/37 251/587/37 252/406/37 +f 241/405/36 249/412/36 250/413/36 +f 244/416/40 259/589/40 267/414/40 +f 259/589/40 270/590/40 267/414/40 +f 270/590/40 271/591/40 267/414/40 +f 262/415/40 265/592/40 244/416/40 +f 265/592/40 263/434/40 244/416/40 +f 247/417/38 248/593/38 253/418/38 +f 253/418/35 257/594/35 258/420/35 +f 258/420/38 257/594/38 256/421/38 +f 268/423/39 272/439/39 269/441/39 +f 269/441/39 260/595/39 268/423/39 +f 260/595/39 243/424/39 268/423/39 +f 243/424/39 264/435/39 266/426/39 +f 243/424/39 266/426/39 261/425/39 +f 266/426/35 265/592/35 262/427/35 +f 243/429/37 260/443/37 259/430/37 +f 255/432/36 256/596/36 245/404/36 +f 263/434/37 265/592/37 266/426/37 +f 244/431/36 263/434/36 264/435/36 +f 261/436/38 262/597/38 267/437/38 +f 267/437/35 271/598/35 272/439/35 +f 272/439/38 271/598/38 270/440/38 +f 269/442/36 270/599/36 259/430/36 +f 275/444/35 276/451/35 274/445/35 +f 279/447/36 280/450/36 277/448/36 +f 275/444/39 277/448/39 280/450/39 +f 274/452/40 279/447/40 278/449/40 +f 276/454/37 280/450/37 279/447/37 +f 283/456/35 284/600/35 282/457/35 +f 286/459/36 288/467/36 287/460/36 +f 284/462/37 288/467/37 286/459/37 +f 281/464/38 285/601/38 287/465/38 +f 283/466/39 287/465/39 288/467/39 +f 282/463/40 286/459/40 285/468/40 +f 291/470/37 292/476/37 289/471/37 +f 294/473/38 296/482/38 295/474/38 +f 292/476/40 296/482/40 294/477/40 +f 289/478/35 294/477/35 293/479/35 +f 290/481/39 293/602/39 295/474/39 +f 291/470/36 295/474/36 296/482/36 +f 299/483/37 300/489/37 297/484/37 +f 302/486/38 304/495/38 303/487/38 +f 300/489/40 304/495/40 302/490/40 +f 297/491/35 302/490/35 301/492/35 +f 298/494/39 301/603/39 303/487/39 +f 299/483/36 303/487/36 304/495/36 +f 307/496/37 308/502/37 305/497/37 +f 310/499/38 312/508/38 311/500/38 +f 308/502/40 312/508/40 310/503/40 +f 305/504/35 310/503/35 309/505/35 +f 306/507/39 309/604/39 311/500/39 +f 307/496/36 311/500/36 312/508/36 +f 315/509/37 316/517/37 314/510/37 +f 318/512/38 320/516/38 319/513/38 +f 313/515/39 317/605/39 319/513/39 +f 315/509/36 319/513/36 320/516/36 +f 316/517/40 320/516/40 318/518/40 +f 314/519/35 318/518/35 317/520/35 +f 321/522/36 323/606/36 324/523/36 +f 328/525/35 327/607/35 325/526/35 +f 324/523/39 328/525/39 326/527/39 +f 322/524/38 326/527/38 325/528/38 +f 321/530/40 325/608/40 327/531/40 +f 323/532/37 327/531/37 328/525/37 +f 334/533/36 331/537/36 332/534/36 +f 336/536/39 329/539/39 331/537/39 +f 335/538/35 330/609/35 329/539/35 +f 331/537/38 329/539/38 330/540/38 +f 333/535/40 332/534/40 330/542/40 +f 337/544/36 339/555/36 340/545/36 +f 344/547/35 343/554/35 341/548/35 +f 340/550/39 344/556/39 342/551/39 +f 338/553/38 342/610/38 341/548/38 +f 337/544/40 341/548/40 343/554/40 +f 339/555/37 343/554/37 344/556/37 +f 350/557/36 347/561/36 348/558/36 +f 352/560/39 345/611/39 347/561/39 +f 351/562/35 346/566/35 345/563/35 +f 347/565/38 345/612/38 346/566/38 +f 349/559/40 348/558/40 346/566/40 diff --git a/src/main/resources/assets/hbm/models/trinkets/pooh.obj b/src/main/resources/assets/hbm/models/trinkets/pooh.obj deleted file mode 100644 index 958bfc3e9..000000000 --- a/src/main/resources/assets/hbm/models/trinkets/pooh.obj +++ /dev/null @@ -1,334 +0,0 @@ -# Blender v2.79 (sub 0) OBJ File: 'pooh.blend' -# www.blender.org -o Cube_Cube.001 -v -0.250000 0.062500 0.250000 -v 0.250000 0.062500 0.250000 -v -0.250000 0.062500 -0.250000 -v 0.250000 0.062500 -0.250000 -v -0.250000 0.437500 0.250000 -v 0.250000 0.437500 0.250000 -v -0.250000 0.437500 -0.250000 -v 0.250000 0.437500 -0.250000 -v -0.187500 0.437500 0.187500 -v 0.187500 0.437500 0.187500 -v -0.187500 0.437500 -0.187500 -v 0.187500 0.437500 -0.187500 -v -0.187500 0.625000 -0.187500 -v -0.187500 0.625000 0.187500 -v 0.187500 0.625000 0.187500 -v 0.187500 0.625000 -0.187500 -v -0.250000 0.625000 0.250000 -v 0.250000 0.625000 0.250000 -v -0.250000 0.625000 -0.250000 -v 0.250000 0.625000 -0.250000 -v -0.250000 1.125000 -0.250000 -v -0.250000 1.125000 0.250000 -v 0.250000 1.125000 0.250000 -v 0.250000 1.125000 -0.250000 -v -0.125000 0.000000 -0.062500 -v 0.500000 0.000000 -0.062500 -v -0.125000 0.000000 -0.187500 -v 0.500000 0.000000 -0.187500 -v -0.125000 0.125000 -0.187500 -v -0.125000 0.125000 -0.062500 -v 0.500000 0.125000 -0.062500 -v 0.500000 0.125000 -0.187500 -v -0.125000 0.000000 0.187500 -v 0.500000 0.000000 0.187500 -v -0.125000 0.000000 0.062500 -v 0.500000 0.000000 0.062500 -v -0.125000 0.125000 0.062500 -v -0.125000 0.125000 0.187500 -v 0.500000 0.125000 0.187500 -v 0.500000 0.125000 0.062500 -v -0.062500 0.606694 -0.169194 -v 0.062500 0.606694 -0.169194 -v -0.062500 0.518306 -0.080806 -v 0.062500 0.518306 -0.080806 -v -0.062500 0.253141 -0.345971 -v -0.062500 0.341529 -0.434359 -v 0.062500 0.341529 -0.434359 -v 0.062500 0.253141 -0.345971 -v -0.062500 0.606694 0.169194 -v 0.062500 0.606694 0.169194 -v -0.062500 0.518306 0.080806 -v 0.062500 0.518306 0.080806 -v -0.062500 0.253141 0.345971 -v -0.062500 0.341529 0.434359 -v 0.062500 0.341529 0.434359 -v 0.062500 0.253141 0.345971 -v 0.250000 0.781250 0.031250 -v 0.250000 0.718750 0.031250 -v 0.250000 0.781250 -0.031250 -v 0.250000 0.718750 -0.031250 -v 0.312500 0.781250 -0.031250 -v 0.312500 0.781250 0.031250 -v 0.312500 0.718750 0.031250 -v 0.312500 0.718750 -0.031250 -v -0.093750 1.062500 -0.125000 -v 0.093750 1.062500 -0.125000 -v -0.093750 1.062500 -0.312500 -v 0.093750 1.062500 -0.312500 -v -0.093750 1.250000 -0.312500 -v -0.093750 1.250000 -0.125000 -v 0.093750 1.250000 -0.125000 -v 0.093750 1.250000 -0.312500 -v -0.093750 1.062500 0.312500 -v 0.093750 1.062500 0.312500 -v -0.093750 1.062500 0.125000 -v 0.093750 1.062500 0.125000 -v -0.093750 1.250000 0.125000 -v -0.093750 1.250000 0.312500 -v 0.093750 1.250000 0.312500 -v 0.093750 1.250000 0.125000 -vt 0.400000 -0.000000 -vt 0.200000 0.173913 -vt 0.200000 -0.000000 -vt 0.200000 0.304348 -vt 0.400000 0.478261 -vt 0.200000 0.478261 -vt 0.600000 0.173913 -vt 0.400000 0.304348 -vt 0.400000 0.173913 -vt 0.000000 0.304348 -vt 0.000000 0.173913 -vt 0.800000 0.173913 -vt 0.600000 0.304348 -vt 0.700000 0.304348 -vt 0.550000 0.369565 -vt 0.550000 0.304348 -vt 1.000000 0.304348 -vt 0.850000 0.369565 -vt 0.850000 0.304348 -vt 0.700000 0.369565 -vt 0.400000 0.369565 -vt 0.400000 0.304348 -vt 0.400000 0.478261 -vt 0.200000 0.652174 -vt 0.200000 0.478261 -vt 0.200000 0.826087 -vt 0.400000 1.000000 -vt 0.200000 1.000000 -vt 0.600000 0.652174 -vt 0.400000 0.826087 -vt 0.400000 0.652174 -vt -0.000000 0.826087 -vt -0.000000 0.652174 -vt 0.800000 0.652174 -vt 0.600000 0.826087 -vt 0.900000 0.260870 -vt 0.950000 0.043478 -vt 0.950000 0.260870 -vt 0.800000 0.043478 -vt 0.850000 0.260870 -vt 0.800000 0.260870 -vt 0.850000 -0.000000 -vt 0.800000 0.000000 -vt 0.800000 0.304348 -vt 0.850000 0.304348 -vt 0.850000 0.043478 -vt 0.900000 0.043478 -vt 1.000000 0.260870 -vt 0.900000 0.260870 -vt 0.950000 0.043478 -vt 0.950000 0.260870 -vt 0.800000 0.043478 -vt 0.850000 0.260870 -vt 0.800000 0.260870 -vt 0.850000 -0.000000 -vt 0.800000 0.000000 -vt 0.800000 0.304348 -vt 0.850000 0.304348 -vt 0.850000 0.043478 -vt 0.900000 0.043478 -vt 1.000000 0.260870 -vt 0.550000 0.369565 -vt 0.475000 0.434783 -vt 0.475000 0.369565 -vt 0.400000 0.043478 -vt 0.450000 0.000000 -vt 0.450000 0.043478 -vt 0.600000 0.173913 -vt 0.550000 0.043478 -vt 0.600000 0.043478 -vt 0.450000 0.173913 -vt 0.500000 0.043478 -vt 0.500000 0.173913 -vt 0.550000 0.173913 -vt 0.400000 0.173913 -vt 0.400000 0.000000 -vt 0.450000 0.043478 -vt 0.400000 0.043478 -vt 0.500000 0.173913 -vt 0.450000 0.173913 -vt 0.550000 0.043478 -vt 0.600000 0.173913 -vt 0.550000 0.173913 -vt 0.500000 0.043478 -vt 0.400000 0.173913 -vt 0.425000 0.521739 -vt 0.450000 0.543478 -vt 0.425000 0.543478 -vt 0.425000 0.565217 -vt 0.450000 0.565217 -vt 0.475000 0.543478 -vt 0.450000 0.521739 -vt 0.475000 0.521739 -vt 0.400000 0.521739 -vt 0.400000 0.543478 -vt 0.450000 0.500000 -vt 0.425000 0.500000 -vt 0.475000 0.500000 -vt 0.550000 0.565217 -vt 0.475000 0.565217 -vt 0.550000 0.434783 -vt 0.700000 0.434783 -vt 0.625000 0.500000 -vt 0.625000 0.434783 -vt 0.550000 0.500000 -vt 0.400000 0.500000 -vt 0.400000 0.434783 -vt 0.550000 0.369565 -vt 0.475000 0.434783 -vt 0.475000 0.369565 -vt 0.475000 0.500000 -vt 0.550000 0.565217 -vt 0.475000 0.565217 -vt 0.550000 0.434783 -vt 0.700000 0.434783 -vt 0.625000 0.500000 -vt 0.625000 0.434783 -vt 0.550000 0.500000 -vt 0.400000 0.500000 -vt 0.400000 0.434783 -vt 0.800000 0.304348 -vt 1.000000 0.369565 -vt 0.800000 0.826087 -vt 1.000000 0.043478 -vt 1.000000 0.043478 -vt 0.400000 0.000000 -vt 0.450000 0.000000 -vt 0.600000 0.043478 -vt 0.700000 0.500000 -vt 0.700000 0.500000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 -0.7071 -0.7071 -vn 0.0000 -0.7071 0.7071 -vn 0.0000 0.7071 -0.7071 -vn 0.0000 0.7071 0.7071 -s off -f 3/1/1 2/2/1 1/3/1 -f 6/4/2 7/5/2 5/6/2 -f 3/7/3 8/8/3 4/9/3 -f 2/2/4 5/10/4 1/11/4 -f 4/9/5 6/4/5 2/2/5 -f 1/12/6 7/13/6 3/7/6 -f 12/14/5 15/15/5 10/16/5 -f 9/17/6 13/18/6 11/19/6 -f 11/19/3 16/20/3 12/14/3 -f 10/16/4 14/21/4 9/22/4 -f 19/23/1 18/24/1 17/25/1 -f 23/26/2 21/27/2 22/28/2 -f 19/29/3 24/30/3 20/31/3 -f 18/24/4 22/32/4 17/33/4 -f 20/31/5 23/26/5 18/24/5 -f 17/34/6 21/35/6 19/29/6 -f 27/36/1 26/37/1 25/38/1 -f 31/39/2 29/40/2 30/41/2 -f 28/42/5 31/39/5 26/43/5 -f 25/44/6 29/40/6 27/45/6 -f 27/36/3 32/46/3 28/47/3 -f 26/37/4 30/48/4 25/38/4 -f 35/49/1 34/50/1 33/51/1 -f 39/52/2 37/53/2 38/54/2 -f 36/55/5 39/52/5 34/56/5 -f 33/57/6 37/53/6 35/58/6 -f 35/49/3 40/59/3 36/60/3 -f 34/50/4 38/61/4 33/51/4 -f 67/62/1 66/63/1 65/64/1 -f 47/65/7 45/66/7 46/67/7 -f 42/68/5 48/69/5 47/70/5 -f 41/71/6 45/72/6 43/73/6 -f 43/73/8 48/69/8 44/74/8 -f 42/75/9 46/67/9 41/71/9 -f 53/76/8 55/77/8 54/78/8 -f 55/77/5 52/79/5 50/80/5 -f 53/81/6 49/82/6 51/83/6 -f 56/84/7 51/83/7 52/79/7 -f 54/78/10 50/80/10 49/85/10 -f 63/86/5 61/87/5 62/88/5 -f 57/89/2 61/87/2 59/90/2 -f 59/91/3 64/92/3 60/93/3 -f 58/94/4 62/88/4 57/95/4 -f 60/96/1 63/86/1 58/97/1 -f 71/98/2 69/99/2 70/100/2 -f 68/101/5 71/98/5 66/63/5 -f 65/102/6 69/103/6 67/104/6 -f 67/104/3 72/105/3 68/101/3 -f 66/63/4 70/106/4 65/107/4 -f 75/108/1 74/109/1 73/110/1 -f 79/111/2 77/112/2 78/113/2 -f 76/114/5 79/111/5 74/109/5 -f 73/115/6 77/116/6 75/117/6 -f 75/117/3 80/118/3 76/114/3 -f 74/109/4 78/119/4 73/120/4 -f 3/1/1 4/9/1 2/2/1 -f 6/4/2 8/8/2 7/5/2 -f 3/7/3 7/13/3 8/8/3 -f 2/2/4 6/4/4 5/10/4 -f 4/9/5 8/8/5 6/4/5 -f 1/12/6 5/121/6 7/13/6 -f 12/14/5 16/20/5 15/15/5 -f 9/17/6 14/122/6 13/18/6 -f 11/19/3 13/18/3 16/20/3 -f 10/16/4 15/15/4 14/21/4 -f 19/23/1 20/31/1 18/24/1 -f 23/26/2 24/30/2 21/27/2 -f 19/29/3 21/35/3 24/30/3 -f 18/24/4 23/26/4 22/32/4 -f 20/31/5 24/30/5 23/26/5 -f 17/34/6 22/123/6 21/35/6 -f 27/36/1 28/47/1 26/37/1 -f 31/39/2 32/46/2 29/40/2 -f 28/42/5 32/46/5 31/39/5 -f 25/44/6 30/41/6 29/40/6 -f 27/36/3 29/40/3 32/46/3 -f 26/37/4 31/124/4 30/48/4 -f 35/49/1 36/60/1 34/50/1 -f 39/52/2 40/59/2 37/53/2 -f 36/55/5 40/59/5 39/52/5 -f 33/57/6 38/54/6 37/53/6 -f 35/49/3 37/53/3 40/59/3 -f 34/50/4 39/125/4 38/61/4 -f 67/62/1 68/101/1 66/63/1 -f 47/65/7 48/126/7 45/66/7 -f 42/68/5 44/74/5 48/69/5 -f 41/71/6 46/67/6 45/72/6 -f 43/73/8 45/72/8 48/69/8 -f 42/75/9 47/65/9 46/67/9 -f 53/76/8 56/127/8 55/77/8 -f 55/77/5 56/84/5 52/79/5 -f 53/81/6 54/128/6 49/82/6 -f 56/84/7 53/81/7 51/83/7 -f 54/78/10 55/77/10 50/80/10 -f 63/86/5 64/92/5 61/87/5 -f 57/89/2 62/88/2 61/87/2 -f 59/91/3 61/87/3 64/92/3 -f 58/94/4 63/86/4 62/88/4 -f 60/96/1 64/92/1 63/86/1 -f 71/98/2 72/105/2 69/99/2 -f 68/101/5 72/105/5 71/98/5 -f 65/102/6 70/129/6 69/103/6 -f 67/104/3 69/103/3 72/105/3 -f 66/63/4 71/98/4 70/106/4 -f 75/108/1 76/114/1 74/109/1 -f 79/111/2 80/118/2 77/112/2 -f 76/114/5 80/118/5 79/111/5 -f 73/115/6 78/130/6 77/116/6 -f 75/117/3 77/116/3 80/118/3 -f 74/109/4 79/111/4 78/119/4 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 1b5db22f5..f9d9b867d 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -64,6 +64,7 @@ "block.fel": {"category": "block", "sounds": [{"name": "block/fel", "stream": false}]}, "block.hephaestusRunning": {"category": "block", "sounds": [{"name": "block/hephaestusRunning", "stream": false}]}, "block.squeakyToy": {"category": "block", "sounds": [{"name": "block/squeakyToy", "stream": false}]}, + "block.hunduns_magnificent_howl": {"category": "block", "sounds": [{"name": "block/hunduns_magnificent_howl", "stream": false}]}, "block.pyroOperate": {"category": "block", "sounds": [{"name": "block/pyroOperate", "stream": false}]}, "block.motor": {"category": "block", "sounds": [{"name": "block/motor", "stream": false}]}, "block.engine": {"category": "block", "sounds": [{"name": "block/engine", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/hunduns_magnificent_howl.ogg b/src/main/resources/assets/hbm/sounds/block/hunduns_magnificent_howl.ogg new file mode 100644 index 0000000000000000000000000000000000000000..69ece8b82ef8e81660c373525082f946d1448b9b GIT binary patch literal 62398 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%0Ab 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 delta 295 zcmV+?0oeYI0?`7HGk*aHNklIYdY*^ty4|tZAPWGkwRA?uaR8|68l{vKvSmx~-E52jpns~W^&=Q#$nzYfRBuev z)Yiui0PuaEIF9>$5Cls>3xI=@Q|@kW2*a?C-x+uJ_9=>DeS*vB6~{-1{RsCDj{uxS z(Pkq6BuN55Gk^bF+t#YHzQRvxV?fn3zXvpJ%g%84PYGVXZvIadUC%^Bt95KbT@5`@G7 z3Gt4xVR4;h3hAAbKQuc)q0&1=1Rb~JH#25hpV+^#`Je&Q( rV@T>o?_IAtn7oi<2O{G7-e(2c+%)o31`!?r0000F>4e-6vyAn6^bAd4nmqhB&IZtLI@T%Vl6`O6Qt3gL`%sf zBG^Pxf);)Pi3G8ox08D_ z|9NkA=aPVd!_Do~bj~0~XQq=f@6U66-8Bw3x6`86$JeF)JIdOlqEU4NBKb%GvJR90 zB(`Op-AX#Z`<;`laW^N=l^zMIkzQ80d_y=<=V)EM$!={Fpl%Mw$d1ihk2{A7_6{IB zrrn$X0D$X1K4$eo4JeeL?wCfjT(43D6{l#LX3v=$x2n4I(2@eAvO}?R<$8Rs4yRMV z?9pDP0{Hc+u#L`br<$_%#QX8+w=L_aO$<}`L z(E0KmU}P#A{i=~j(KeF}p-8qWq*5{&YI^``$G0TO$LEt|0iE@Yf%RwSc;<4h4uL5; z{ZLO^MeMaepZfz4WC61C#}>xnU~RwexU;@N-U+a?Rb_zxouo|X7$yb4U`3G0n*|sZ zU~FN0;On9zP@;0IDwx6@p$NmI0NB|rMMfavfIJxhK#mS@u(q%51RT!CP)Fq$odTFf zq^$y!wYP#~9G6+L03q!shoXE%S?0hr`T=NG|At8cIPf+NG~LOg3J7iI-Xe3gOMA9d zwi1|!K~5f>nNGxy%Qn@G2KO8*({4_bUh}tUPoB;p-%X9`fY)BynOE-t0wC(rrM zUcBo0T?R^9lsJh2d~kkVbc#?^Da8A*<9$&cb_MXs`68>~TD=@byv+ir*j-#og~ONc z-R{2l`CS%EbY8E*h3Aj^Vg)=x%f>EO?>;59M+K___%QnA(Z2lhZO?C9A0ozHSayva z<2nl{`cyHs0#MtdqV`jO>|E6ir9p_m?ZN#!ByFL#M}hO_0Zh?vl}`tSNbMD%4Adjl zr;#rRssq@}^;C1TuXDe^>w5taeqsj*oY(;ZC#V=e1$WlrdsY(_AaMGg2f%yvsMiU^ zh-fz_l*cZgPl!~c0P-@i?l|IxhVlM4@f_yb`S|a{N~623P#W8IQQPNUH((0_bsIrN z9YFsyz|{^J`I;td&UIy<8rCdeP$zH&zJA^|3Fj1108abV#56FbfxOs$0KPmc7Ya_Y z0AEIdklZ}&u{qb3eGVEp%H&=L0C1c7$saJMLtWVCzYjEBHu!G<1d`bb1;X~7POS*8& zZ`FCeiFh{=Il@Q6op=6%ubDH~ zlgj`AR%NUJ)Nnty@B6+0_8<_CY+aqMJkQs(4DLO9KJEz=#2_$moTPzIzWo6JfJc{3 z7bZtb~G!mGk1te)vxwc7ca?>drYS%U~4zcRNwlEebd(BG^y25*b=qz_w4YYM~x;}?_ zur_VBo<;(###F(mP#aK!($~56DjYdjDo0j01PbNI3c1X5NAw|