big clicky guys

This commit is contained in:
Bob 2026-04-14 22:21:05 +02:00
parent cd82e6f159
commit 756e51f3e0
15 changed files with 1107 additions and 5 deletions

View File

@ -1,5 +1,8 @@
## Changed ## Changed
* All RoR panels now have basic item descriptions informing about the screwdriver requirement for configuration * All RoR panels now have basic item descriptions informing about the screwdriver requirement for configuration
* EMP grenades now deal 5x damage against anything with powered armor
* Decreased base damage to compensate
* EMP grenades now destroy machines in a small radius like an EMP missile would
## Fixed ## Fixed
* Fixed the grenade crafting handler not checking if a shell/filling combination is even valid, allowing weird combos * Fixed the grenade crafting handler not checking if a shell/filling combination is even valid, allowing weird combos

View File

@ -1096,6 +1096,7 @@ public class ModBlocks {
public static Block rbmk_gauge; public static Block rbmk_gauge;
public static Block rbmk_numitron; public static Block rbmk_numitron;
public static Block rbmk_graph; public static Block rbmk_graph;
public static Block rbmk_lever;
public static Block rbmk_autoloader; public static Block rbmk_autoloader;
public static Block rbmk_loader; public static Block rbmk_loader;
public static Block rbmk_steam_inlet; public static Block rbmk_steam_inlet;
@ -2118,6 +2119,7 @@ public class ModBlocks {
rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_gauge = new RBMKGauge().setBlockName("rbmk_gauge").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_numitron = new RBMKNumitron().setBlockName("rbmk_numitron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_numitron = new RBMKNumitron().setBlockName("rbmk_numitron").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_graph = new RBMKGraph().setBlockName("rbmk_graph").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display"); rbmk_graph = new RBMKGraph().setBlockName("rbmk_graph").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_lever = new RBMKLever().setBlockName("rbmk_lever").setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_display");
rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader"); rbmk_autoloader = new RBMKAutoloader().setBlockName("rbmk_autoloader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_autoloader");
rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader"); rbmk_loader = new RBMKLoader(Material.iron).setBlockName("rbmk_loader").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_loader");
rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet"); rbmk_steam_inlet = new RBMKInlet(Material.iron).setBlockName("rbmk_steam_inlet").setCreativeTab(MainRegistry.machineTab).setHardness(50.0F).setResistance(60.0F).setBlockTextureName(RefStrings.MODID + ":rbmk_steam_inlet");
@ -3107,6 +3109,7 @@ public class ModBlocks {
register(rbmk_display_blank); register(rbmk_display_blank);
register(rbmk_display); register(rbmk_display);
register(rbmk_key_pad); register(rbmk_key_pad);
register(rbmk_lever);
register(rbmk_gauge); register(rbmk_gauge);
register(rbmk_numitron); register(rbmk_numitron);
register(rbmk_graph); register(rbmk_graph);

View File

@ -0,0 +1,49 @@
package com.hbm.blocks.machine.rbmk;
import com.hbm.main.MainRegistry;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKLever;
import api.hbm.block.IToolable;
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
public class RBMKLever extends RBMKMiniPanelBase implements IToolable {
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityRBMKLever();
}
@Override
public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) {
if(tool != ToolType.SCREWDRIVER) return false;
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
return true;
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
if(world.isRemote) return true;
if(player.isSneaking()) return false;
if(hitX != 0 && hitX != 1 && hitZ != 0 && hitZ != 1 && side != 0 && side != 1) {
TileEntityRBMKLever tile = (TileEntityRBMKLever) world.getTileEntity(x, y, z);
int meta = world.getBlockMetadata(x, y, z);
int indexHit = 0;
if(meta == 2 && hitX < 0.5) indexHit = 1;
if(meta == 3 && hitX > 0.5) indexHit = 1;
if(meta == 4 && hitZ > 0.5) indexHit = 1;
if(meta == 5 && hitZ < 0.5) indexHit = 1;
if(!tile.levers[indexHit].active) return false;
tile.levers[indexHit].click();
}
return true;
}
}

View File

@ -0,0 +1,125 @@
package com.hbm.inventory.gui;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;
import com.hbm.lib.RefStrings;
import com.hbm.packet.PacketDispatcher;
import com.hbm.packet.toserver.NBTControlPacket;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKLever;
import com.hbm.util.i18n.I18nUtil;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
public class GUIScreenRBMKLever extends GuiScreen {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rbmk_lever.png");
public TileEntityRBMKLever lever;
protected int xSize;
protected int ySize;
protected int guiLeft;
protected int guiTop;
protected boolean[] active = new boolean[2];
protected boolean[] polling = new boolean[2];
public GUIScreenRBMKLever(TileEntityRBMKLever lever) {
this.lever = lever;
this.xSize = 256;
this.ySize = 150;
}
@Override
public void initGui() {
super.initGui();
this.guiLeft = (this.width - this.xSize) / 2;
this.guiTop = (this.height - this.ySize) / 2;
Keyboard.enableRepeatEvents(true);
int oX = 4;
int oY = 4;
for(int i = 0; i < 2; i++) {
active[i] = lever.levers[i].active;
polling[i] = lever.levers[i].polling;
}
}
@Override
public void drawScreen(int mouseX, int mouseY, float f) {
this.drawDefaultBackground();
this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY);
GL11.glDisable(GL11.GL_LIGHTING);
this.drawGuiContainerForegroundLayer(mouseX, mouseY);
GL11.glEnable(GL11.GL_LIGHTING);
}
private void drawGuiContainerForegroundLayer(int x, int y) {
String name = I18nUtil.resolveKey("container.rbmkLever");
this.fontRendererObj.drawString(name, this.guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, this.guiTop + 6, 4210752);
}
private void drawGuiContainerBackgroundLayer(float f, int mouseX, int mouseY) {
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
for(int i = 0; i < 2; i++) {
if(this.active[i]) drawTexturedModalRect(guiLeft + 111, guiTop + i * 54 + 54, 18, 150, 16, 16);
if(this.polling[i]) drawTexturedModalRect(guiLeft + 128, guiTop + i * 54 + 53, 0, 150, 18, 18);
}
for(int i = 0; i < 2; i++) {
}
}
@Override
protected void mouseClicked(int x, int y, int b) {
super.mouseClicked(x, y, b);
for(int i = 0; i < 2; i++) {
if(guiLeft + 111 <= x && guiLeft + 111 + 16 > x && guiTop + i * 54 + 54 < y && guiTop + i * 54 + 54 + 16 >= y) {
this.active[i] = !this.active[i];
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.active[i] ? 0.25F : 0F)));
return;
}
if(guiLeft + 128 <= x && guiLeft + 128 + 18 > x && guiTop + i * 54 + 53 < y && guiTop + i * 54 + 53 + 18 >= y) {
this.polling[i] = !this.polling[i];
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 0.5F + (this.polling[i] ? 0.25F : 0F)));
return;
}
}
if(guiLeft + 209 <= x && guiLeft + 209 + 18 > x && guiTop + 17 < y && guiTop + 17 + 18 >= y) {
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
NBTTagCompound data = new NBTTagCompound();
byte active = 0;
byte polling = 0;
for(int i = 0; i < 2; i++) {
if(this.active[i]) active |= 1 << i;
if(this.polling[i]) polling |= 1 << i;
}
data.setByte("active", active);
data.setByte("polling", polling);
for(int i = 0; i < 2; i++) {
/*data.setString("label" + i, this.label[i].getText());
data.setString("rtty" + i, this.rtty[i].getText());
data.setString("cmd" + i, this.cmd[i].getText());*/
}
PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, lever.xCoord, lever.yCoord, lever.zCoord));
return;
}
}
@Override public void onGuiClosed() { Keyboard.enableRepeatEvents(false); }
@Override public boolean doesGuiPauseGame() { return false; }
}

View File

@ -13,6 +13,7 @@ import com.hbm.entity.grenade.EntityGrenadeUniversal;
import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.logic.EntityNukeExplosionMK3;
import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.entity.projectile.EntityBulletBaseMK4;
import com.hbm.entity.projectile.EntityBulletBeamBase; import com.hbm.entity.projectile.EntityBulletBeamBase;
import com.hbm.explosion.ExplosionNukeGeneric;
import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.ExplosionVNT;
import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard;
import com.hbm.explosion.vanillant.standard.BlockMutatorFire; import com.hbm.explosion.vanillant.standard.BlockMutatorFire;
@ -168,7 +169,8 @@ public class ItemGrenadeFilling extends ItemEnumMulti {
}; };
public static Consumer<EntityGrenadeUniversal> EXPLODE_EMP = (grenade) -> { public static Consumer<EntityGrenadeUniversal> EXPLODE_EMP = (grenade) -> {
explodeStandardEnergy(grenade, 30F, 3F, DamageClass.ELECTRIC, 0.5F, 0.5F, 1F, 3F); explodeStandardEnergy(grenade, 15F, 3F, DamageClass.ELECTRIC, 0.5F, 0.5F, 1F, 3F);
ExplosionNukeGeneric.empBlast(grenade.worldObj, (int) Math.floor(grenade.posX), (int) Math.floor(grenade.posY), (int) Math.floor(grenade.posZ), 5);
}; };
public static Consumer<EntityGrenadeUniversal> EXPLODE_PLASMA = (grenade) -> { public static Consumer<EntityGrenadeUniversal> EXPLODE_PLASMA = (grenade) -> {

View File

@ -415,6 +415,7 @@ public class ClientProxy extends ServerProxy {
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGauge.class, new RenderRBMKGauge());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKNumitron.class, new RenderRBMKNumitron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKNumitron.class, new RenderRBMKNumitron());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGraph.class, new RenderRBMKGraph()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKGraph.class, new RenderRBMKGraph());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKLever.class, new RenderRBMKLever());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRod.class, new RenderRBMKFuelChannel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKRodReaSim.class, new RenderRBMKFuelChannel());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKAutoloader.class, new RenderRBMKAutoloader());

View File

@ -1643,6 +1643,7 @@ public class ResourceManager {
public static final HFRWavefrontObjectVBO rbmk_button = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/button.obj")).asVBO(); public static final HFRWavefrontObjectVBO rbmk_button = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/button.obj")).asVBO();
public static final HFRWavefrontObjectVBO rbmk_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO(); public static final HFRWavefrontObjectVBO rbmk_gauge = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/gauge.obj")).asVBO();
public static final HFRWavefrontObjectVBO rbmk_numitron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/numitron.obj")).asVBO(); public static final HFRWavefrontObjectVBO rbmk_numitron = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/numitron.obj")).asVBO();
public static final HFRWavefrontObjectVBO rbmk_lever = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/lever.obj")).asVBO();
public static final HFRWavefrontObject rbmk_debris = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")).noSmooth(); public static final HFRWavefrontObject rbmk_debris = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/rbmk/debris.obj")).noSmooth();
public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png"); public static final ResourceLocation rbmk_crane_console_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crane_console.png");
public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png"); public static final ResourceLocation rbmk_crane_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/rbmk_crane.png");
@ -1652,6 +1653,7 @@ public class ResourceManager {
public static final ResourceLocation rbmk_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png"); public static final ResourceLocation rbmk_gauge_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/gauge.png");
public static final ResourceLocation rbmk_numitron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron.png"); public static final ResourceLocation rbmk_numitron_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron.png");
public static final ResourceLocation rbmk_numitron_lights_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron_lights.png"); public static final ResourceLocation rbmk_numitron_lights_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/numitron_lights.png");
public static final ResourceLocation rbmk_lever_tex = new ResourceLocation(RefStrings.MODID, "textures/models/network/lever.png");
public static final HFRWavefrontObject hev_battery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")).noSmooth(); public static final HFRWavefrontObject hev_battery = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/battery.obj")).noSmooth();
public static final HFRWavefrontObject anvil = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")).noSmooth(); public static final HFRWavefrontObject anvil = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/anvil.obj")).noSmooth();
public static final HFRWavefrontObject crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth(); public static final HFRWavefrontObject crystal_power = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/crystals_power.obj")).noSmooth();

View File

@ -0,0 +1,73 @@
package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKLever;
import com.hbm.tileentity.machine.rbmk.TileEntityRBMKLever.LeverUnit;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
public class RenderRBMKLever extends TileEntitySpecialRenderer {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_LIGHTING);
switch(te.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;
}
TileEntityRBMKLever keypad = (TileEntityRBMKLever) te;
for(int i = 0; i < 2; i++) {
LeverUnit key = keypad.levers[i];
if(!key.active) continue;
GL11.glPushMatrix();
GL11.glTranslated(0.25, 0, i * -0.5 + 0.25);
GL11.glColor3f(1F, 1F, 1F);
this.bindTexture(ResourceManager.rbmk_lever_tex);
ResourceManager.rbmk_lever.renderPart("Base");
GL11.glPushMatrix();
GL11.glTranslated(0.125, 0.5625, 0);
GL11.glRotated(-180 * i, 0, 0, 1);
GL11.glTranslated(-0.125, -0.5625, 0);
ResourceManager.rbmk_lever.renderPart("Lever");
GL11.glPopMatrix();
FontRenderer font = Minecraft.getMinecraft().fontRenderer;
int height = font.FONT_HEIGHT;
if(key.label != null && !key.label.isEmpty()) {
GL11.glTranslated(0.01, 0.3125, 0);
int width = font.getStringWidth(key.label);
float f3 = Math.min(0.0125F, 0.4F / Math.max(width, 1));
GL11.glScalef(f3, -f3, f3);
GL11.glNormal3f(0.0F, 0.0F, -1.0F);
GL11.glRotatef(90, 0, 1, 0);
RenderArcFurnace.fullbright(true);
font.drawString(key.label, - width / 2, - height / 2, 0x00ff00);
RenderArcFurnace.fullbright(false);
}
GL11.glPopMatrix();
}
GL11.glPopMatrix();
}
}

View File

@ -407,6 +407,7 @@ public class TileMappings {
put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge"); put(TileEntityRBMKGauge.class, "tileentity_rbmk_gauge");
put(TileEntityRBMKNumitron.class, "tileentity_rbmk_numitron"); put(TileEntityRBMKNumitron.class, "tileentity_rbmk_numitron");
put(TileEntityRBMKGraph.class, "tileentity_rbmk_graph"); put(TileEntityRBMKGraph.class, "tileentity_rbmk_graph");
put(TileEntityRBMKLever.class, "tileentity_rbmk_lever");
put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet");
put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet");
put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader"); put(TileEntityRBMKAutoloader.class, "tileentity_rbmk_autoloader");

View File

@ -209,14 +209,14 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement
if((PREFIX_FUNCTION + "setrods").equals(name) && params.length > 0) { if((PREFIX_FUNCTION + "setrods").equals(name) && params.length > 0) {
int percent = IRORInteractive.parseInt(params[0], 0, 100); int percent = IRORInteractive.parseInt(params[0], 0, 100);
this.targetLevel = percent / 100D; this.setTarget(percent / 100D);
this.markDirty(); this.markDirty();
return null; return null;
} }
if((PREFIX_FUNCTION + "extendrods").equals(name) && params.length > 0) { if((PREFIX_FUNCTION + "extendrods").equals(name) && params.length > 0) {
int percent = IRORInteractive.parseInt(params[0], -100, 100); int percent = IRORInteractive.parseInt(params[0], -100, 100);
this.targetLevel = MathHelper.clamp_double(this.targetLevel + percent / 100D, 0D, 1D); this.setTarget(MathHelper.clamp_double(this.targetLevel + percent / 100D, 0D, 1D));
this.markDirty(); this.markDirty();
return null; return null;
} }

View File

@ -0,0 +1,187 @@
package com.hbm.tileentity.machine.rbmk;
import com.hbm.interfaces.IControlReceiver;
import com.hbm.inventory.gui.GUIScreenRBMKLever;
import com.hbm.tileentity.IGUIProvider;
import com.hbm.tileentity.TileEntityLoadedBase;
import com.hbm.tileentity.network.RTTYSystem;
import com.hbm.util.BufferUtil;
import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public class TileEntityRBMKLever extends TileEntityLoadedBase implements IGUIProvider, IControlReceiver {
/* __________
* / /|
* /________ / |
* | __ __ | |
* ||/\| |/\|| |
* ||--| |--|| |
* ||__| |__|| /
* |_________|/
*/
public LeverUnit[] levers = new LeverUnit[2];
public TileEntityRBMKLever() {
for(int i = 0; i < 2; i++) this.levers[i] = new LeverUnit(i);
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
for(int i = 0; i < 2; i++) this.levers[i].update();
this.networkPackNT(50);
}
}
@Override
public void serialize(ByteBuf buf) {
super.serialize(buf);
for(int i = 0; i < 2; i++) this.levers[i].serialize(buf);
}
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
for(int i = 0; i < 2; i++) this.levers[i].deserialize(buf);
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
for(int i = 0; i < 2; i++) this.levers[i].readFromNBT(nbt, i);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
for(int i = 0; i < 2; i++) this.levers[i].writeToNBT(nbt, i);
}
public class LeverUnit {
/** If the output should be per tick, allows the lever to lock in place */
public boolean polling;
/** If the lever is flipped, assuming polling is enabled */
public boolean isFlipped;
/** Label on the lever as rendered on the panel */
public String label = "";
/** What channel to send the command over */
public String rtty = "";
/** What to send when pressed */
public String command = "";
/** Whether this lever is enabled and can be pressed */
public boolean active;
/** For non-polling levers, the time until the lever returns */
public int holdTimer;
public LeverUnit(int initialIndex) {
label = "Lever " + (initialIndex + 1);
}
public void click() {
if(!active) return;
if(!polling) {
if(canSend()) RTTYSystem.broadcast(worldObj, rtty, command);
this.isFlipped = true;
this.holdTimer = 10;
} else {
this.isFlipped = !this.isFlipped;
TileEntityRBMKLever.this.markDirty();
}
worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.click", 1F, this.isFlipped ? 1F : 0.75F);
}
public void update() {
if(!active) return;
if(polling && isFlipped) {
if(canSend()) RTTYSystem.broadcast(worldObj, rtty, command);
}
if(!polling && isFlipped) {
if(this.holdTimer-- <= 0) {
this.isFlipped = false;
}
}
}
public boolean canSend() {
return rtty != null && !rtty.isEmpty() && command != null && !command.isEmpty();
}
public void serialize(ByteBuf buf) {
buf.writeBoolean(active);
buf.writeBoolean(polling);
buf.writeBoolean(isFlipped);
BufferUtil.writeString(buf, label);
BufferUtil.writeString(buf, rtty);
BufferUtil.writeString(buf, command);
}
public void deserialize(ByteBuf buf) {
active = buf.readBoolean();
polling = buf.readBoolean();
isFlipped = buf.readBoolean();
label = BufferUtil.readString(buf);
rtty = BufferUtil.readString(buf);
command = BufferUtil.readString(buf);
}
public void readFromNBT(NBTTagCompound nbt, int index) {
this.active = nbt.getBoolean("active" + index);
this.polling = nbt.getBoolean("polling" + index);
this.isFlipped = nbt.getBoolean("isFlipped" + index);
this.label = nbt.getString("label" + index);
this.rtty = nbt.getString("rtty" + index);
this.command = nbt.getString("command" + index);
}
public void writeToNBT(NBTTagCompound nbt, int index) {
nbt.setBoolean("active" + index, active);
nbt.setBoolean("polling" + index, polling);
nbt.setBoolean("isFlipped" + index, isFlipped);
nbt.setString("label" + index, label);
nbt.setString("rtty" + index, rtty);
nbt.setString("command" + index, command);
}
}
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
@Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIScreenRBMKLever(this); }
@Override
public boolean hasPermission(EntityPlayer player) {
return player.getDistanceSq(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) < 15 * 15;
}
@Override
public void receiveControl(NBTTagCompound data) {
int active = data.getByte("active");
int polling = data.getByte("polling");
for(int i = 0; i < 2; i++) {
this.levers[i].active = (active & (1 << i)) != 0;
this.levers[i].polling = (polling & (1 << i)) != 0;
}
for(int i = 0; i < 2; i++) {
LeverUnit lever = this.levers[i];
lever.label = data.getString("label" + i);
lever.rtty = data.getString("rtty" + i);
lever.command = data.getString("cmd" + i);
}
}
}

View File

@ -18,6 +18,7 @@ import com.google.gson.JsonObject;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.entity.mob.EntityCreeperNuclear;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.items.armor.ArmorFSBPowered;
import com.hbm.main.MainRegistry; import com.hbm.main.MainRegistry;
import com.hbm.util.Tuple.Quartet; import com.hbm.util.Tuple.Quartet;
import com.hbm.util.i18n.I18nUtil; import com.hbm.util.i18n.I18nUtil;
@ -446,10 +447,18 @@ public class DamageResistanceHandler {
@SubscribeEvent @SubscribeEvent
public void onEntityDamaged(LivingHurtEvent event) { public void onEntityDamaged(LivingHurtEvent event) {
event.ammount = calculateDamage(event.entityLiving, event.source, event.ammount, currentPDT, currentPDR); DamageSource source = event.source;
if(source.damageType.toLowerCase(Locale.US).equals(DamageClass.ELECTRIC.name().toLowerCase(Locale.US))) {
ItemStack chest = event.entityLiving.getEquipmentInSlot(3);
if(chest != null && chest.getItem() instanceof ArmorFSBPowered) {
event.ammount *= 5;
}
}
event.ammount = calculateDamage(event.entityLiving, source, event.ammount, currentPDT, currentPDR);
if(event.entityLiving instanceof IResistanceProvider) { if(event.entityLiving instanceof IResistanceProvider) {
IResistanceProvider irp = (IResistanceProvider) event.entityLiving; IResistanceProvider irp = (IResistanceProvider) event.entityLiving;
irp.onDamageDealt(event.source, event.ammount); irp.onDamageDealt(source, event.ammount);
} }
} }

View File

@ -0,0 +1,647 @@
# Blender v2.79 (sub 0) OBJ File: ''
# www.blender.org
o Lever
v 0.093750 0.812500 -0.062500
v 0.093750 0.500000 -0.062500
v 0.156250 0.812500 -0.062500
v 0.156250 0.500000 -0.062500
v 0.093750 0.500000 -0.125000
v 0.093750 0.875000 -0.125000
v 0.156250 0.500000 -0.125000
v 0.156250 0.875000 -0.125000
v 0.093750 0.875000 0.125000
v 0.093750 0.500000 0.125000
v 0.156250 0.875000 0.125000
v 0.156250 0.500000 0.125000
v 0.093750 0.500000 0.062500
v 0.093750 0.812500 0.062500
v 0.156250 0.500000 0.062500
v 0.156250 0.812500 0.062500
v 0.093750 0.875000 0.031250
v 0.156250 0.875000 0.031250
v 0.093750 0.875000 -0.031250
v 0.156250 0.875000 -0.031250
v 0.093750 1.062500 0.031250
v 0.156250 1.062500 0.031250
v 0.093750 1.062500 -0.031250
v 0.156250 1.062500 -0.031250
v 0.093750 0.593750 -0.156250
v 0.093750 0.531250 -0.156250
v 0.156250 0.593750 -0.156250
v 0.156250 0.531250 -0.156250
v 0.093750 0.531250 -0.187500
v 0.093750 0.593750 -0.187500
v 0.156250 0.531250 -0.187500
v 0.156250 0.593750 -0.187500
v 0.093750 0.593750 0.187500
v 0.093750 0.531250 0.187500
v 0.156250 0.593750 0.187500
v 0.156250 0.531250 0.187500
v 0.093750 0.531250 0.156250
v 0.093750 0.593750 0.156250
v 0.156250 0.531250 0.156250
v 0.156250 0.593750 0.156250
vt 0.600000 0.066667
vt 0.550000 0.400000
vt 0.550000 0.066667
vt 0.700000 0.466667
vt 0.650000 0.066667
vt 0.700000 0.066667
vt 0.500000 0.400000
vt 0.650000 0.466667
vt 0.450000 0.466667
vt 0.450000 0.066667
vt 0.500000 0.066667
vt 0.600000 0.000000
vt 0.600000 0.400000
vt 0.650000 0.466667
vt 0.450000 0.066667
vt 0.400000 0.466667
vt 0.400000 0.066667
vt 0.550000 0.400000
vt 0.500000 0.066667
vt 0.550000 0.066667
vt 0.500000 0.400000
vt 0.600000 0.333333
vt 0.650000 0.066667
vt 0.600000 0.400000
vt 0.600000 0.066667
vt 0.450000 0.000000
vt 0.450000 0.466667
vt 0.650000 0.533333
vt 0.900000 0.200000
vt 0.850000 0.000000
vt 0.900000 0.000000
vt 0.850000 0.200000
vt 0.800000 0.000000
vt 0.750000 0.200000
vt 0.700000 0.000000
vt 0.750000 0.000000
vt 0.800000 0.200000
vt 0.750000 0.266667
vt 0.800000 0.266667
vt 0.400000 0.533333
vt 0.450000 0.466667
vt 0.450000 0.533333
vt 0.450000 0.600000
vt 0.400000 0.533333
vt 0.450000 0.533333
vt 0.450000 0.466667
vt 0.400000 0.466667
vt 0.350000 0.533333
vt 0.400000 0.600000
vt 0.350000 0.600000
vt 0.400000 0.666667
vt 0.450000 0.666667
vt 0.500000 0.600000
vt 0.500000 0.533333
vt 0.500000 0.600000
vt 0.450000 0.600000
vt 0.400000 0.666667
vt 0.400000 0.600000
vt 0.350000 0.533333
vt 0.650000 0.000000
vt 0.500000 0.333333
vt 0.500000 0.000000
vt 0.450000 0.533333
vt 0.700000 0.200000
vt 0.400000 0.466667
vt 0.500000 0.533333
vt 0.450000 0.666667
vt 0.350000 0.600000
vn 0.0000 0.0000 1.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 1.0000 0.0000
s off
f 4/1/1 1/2/1 2/3/1
f 6/4/2 7/5/2 5/6/2
f 1/7/3 9/8/3 6/9/3
f 1/7/3 5/10/3 2/11/3
f 2/12/4 7/5/4 4/1/4
f 3/13/5 7/5/5 8/14/5
f 12/15/1 9/16/1 10/17/1
f 14/18/2 15/19/2 13/20/2
f 16/21/4 1/22/4 3/13/4
f 10/23/3 14/24/3 13/25/3
f 10/26/4 15/19/4 12/15/4
f 12/15/5 16/21/5 11/27/5
f 6/28/6 11/27/6 8/14/6
f 8/14/5 16/21/5 3/13/5
f 21/29/3 19/30/3 17/31/3
f 23/32/2 20/33/2 19/30/2
f 22/34/1 17/35/1 18/36/1
f 24/37/5 18/36/5 20/33/5
f 21/38/6 24/37/6 23/39/6
f 34/40/4 39/41/4 36/42/4
f 30/43/2 31/44/2 29/45/2
f 26/46/4 31/44/4 28/47/4
f 28/48/5 32/49/5 27/50/5
f 27/51/6 30/43/6 25/52/6
f 25/53/3 29/45/3 26/54/3
f 36/42/5 40/55/5 35/56/5
f 35/56/6 38/57/6 33/58/6
f 33/58/3 37/59/3 34/40/3
f 34/40/1 35/56/1 33/58/1
f 4/1/1 3/13/1 1/2/1
f 6/4/2 8/14/2 7/5/2
f 1/7/3 14/24/3 9/8/3
f 1/7/3 6/9/3 5/10/3
f 2/12/4 5/60/4 7/5/4
f 3/13/5 4/1/5 7/5/5
f 12/15/1 11/27/1 9/16/1
f 14/18/2 16/21/2 15/19/2
f 16/21/4 14/61/4 1/22/4
f 10/23/3 9/8/3 14/24/3
f 10/26/4 13/62/4 15/19/4
f 12/15/5 15/19/5 16/21/5
f 6/28/6 9/63/6 11/27/6
f 8/14/5 11/27/5 16/21/5
f 21/29/3 23/32/3 19/30/3
f 23/32/2 24/37/2 20/33/2
f 22/34/1 21/64/1 17/35/1
f 24/37/5 22/34/5 18/36/5
f 21/38/6 22/34/6 24/37/6
f 34/40/4 37/65/4 39/41/4
f 30/43/2 32/49/2 31/44/2
f 26/46/4 29/45/4 31/44/4
f 28/48/5 31/44/5 32/49/5
f 27/51/6 32/49/6 30/43/6
f 25/53/3 30/43/3 29/45/3
f 36/42/5 39/66/5 40/55/5
f 35/56/6 40/67/6 38/57/6
f 33/58/3 38/68/3 37/59/3
f 34/40/1 36/42/1 35/56/1
o Base
v 0.000000 0.968750 0.156250
v 0.000000 0.156250 0.156250
v 0.000000 0.968750 -0.156250
v 0.000000 0.156250 -0.156250
v 0.062500 0.968750 -0.156250
v 0.062500 0.968750 0.156250
v 0.062500 0.156250 0.156250
v 0.062500 0.156250 -0.156250
v 0.062500 0.625000 0.062500
v 0.062500 0.500000 0.062500
v 0.062500 0.625000 -0.062500
v 0.062500 0.500000 -0.062500
v 0.187500 0.625000 -0.062500
v 0.187500 0.625000 0.062500
v 0.187500 0.500000 0.062500
v 0.187500 0.500000 -0.062500
v 0.062500 0.437500 0.156250
v 0.062500 0.375000 0.156250
v 0.062500 0.437500 0.031250
v 0.062500 0.375000 0.031250
v 0.156250 0.437500 0.031250
v 0.156250 0.437500 0.156250
v 0.156250 0.375000 0.156250
v 0.156250 0.375000 0.031250
v 0.156250 0.437500 0.062500
v 0.093750 0.437500 0.125000
v 0.156250 0.437500 0.125000
v 0.156250 0.375000 0.125000
v 0.093750 0.437500 0.062500
v 0.156250 0.375000 0.062500
v 0.093750 0.375000 0.125000
v 0.093750 0.375000 0.062500
v 0.062500 0.625000 0.156250
v 0.062500 0.500000 0.156250
v 0.062500 0.625000 0.125000
v 0.062500 0.500000 0.125000
v 0.187500 0.625000 0.125000
v 0.187500 0.625000 0.156250
v 0.187500 0.500000 0.156250
v 0.187500 0.500000 0.125000
v 0.062500 0.625000 -0.125000
v 0.062500 0.500000 -0.125000
v 0.062500 0.625000 -0.156250
v 0.062500 0.500000 -0.156250
v 0.187500 0.625000 -0.156250
v 0.187500 0.625000 -0.125000
v 0.187500 0.500000 -0.125000
v 0.187500 0.500000 -0.156250
v 0.062500 0.437500 -0.031250
v 0.062500 0.375000 -0.031250
v 0.062500 0.437500 -0.156250
v 0.062500 0.375000 -0.156250
v 0.156250 0.437500 -0.156250
v 0.156250 0.437500 -0.031250
v 0.156250 0.375000 -0.031250
v 0.156250 0.375000 -0.156250
v 0.156250 0.437500 -0.125000
v 0.093750 0.437500 -0.062500
v 0.156250 0.437500 -0.062500
v 0.156250 0.375000 -0.062500
v 0.093750 0.437500 -0.125000
v 0.156250 0.375000 -0.125000
v 0.093750 0.375000 -0.062500
v 0.093750 0.375000 -0.125000
v 0.062500 0.750000 0.156250
v 0.062500 0.687500 0.156250
v 0.062500 0.750000 0.031250
v 0.062500 0.687500 0.031250
v 0.156250 0.750000 0.031250
v 0.156250 0.750000 0.156250
v 0.156250 0.687500 0.156250
v 0.156250 0.687500 0.031250
v 0.156250 0.750000 0.062500
v 0.093750 0.750000 0.125000
v 0.156250 0.750000 0.125000
v 0.156250 0.687500 0.125000
v 0.093750 0.750000 0.062500
v 0.156250 0.687500 0.062500
v 0.093750 0.687500 0.125000
v 0.093750 0.687500 0.062500
v 0.062500 0.750000 -0.031250
v 0.062500 0.687500 -0.031250
v 0.062500 0.750000 -0.156250
v 0.062500 0.687500 -0.156250
v 0.156250 0.750000 -0.156250
v 0.156250 0.750000 -0.031250
v 0.156250 0.687500 -0.031250
v 0.156250 0.687500 -0.156250
v 0.156250 0.750000 -0.125000
v 0.093750 0.750000 -0.062500
v 0.156250 0.750000 -0.062500
v 0.156250 0.687500 -0.062500
v 0.093750 0.750000 -0.125000
v 0.156250 0.687500 -0.125000
v 0.093750 0.687500 -0.062500
v 0.093750 0.687500 -0.125000
vt 0.050000 0.066667
vt 0.300000 0.933333
vt 0.050000 0.933333
vt 0.300000 0.000000
vt 0.050000 0.000000
vt 0.050000 1.000000
vt 0.300000 1.000000
vt 0.350000 0.933333
vt 0.300000 0.066667
vt 0.350000 0.066667
vt 0.000000 0.066667
vt 0.000000 0.933333
vt 0.450000 0.733333
vt 0.550000 0.866667
vt 0.450000 0.866667
vt 0.650000 0.866667
vt 0.550000 0.733333
vt 0.650000 0.733333
vt 0.350000 0.733333
vt 0.350000 0.866667
vt 0.550000 0.600000
vt 0.450000 0.600000
vt 0.450000 1.000000
vt 0.550000 1.000000
vt 0.875000 0.533333
vt 0.900000 0.600000
vt 0.875000 0.600000
vt 1.000000 0.600000
vt 0.925000 0.533333
vt 1.000000 0.533333
vt 0.700000 0.533333
vt 0.775000 0.600000
vt 0.700000 0.600000
vt 0.975000 0.600000
vt 0.925000 0.533333
vt 0.975000 0.533333
vt 0.825000 0.533333
vt 0.875000 0.600000
vt 0.825000 0.600000
vt 0.800000 0.533333
vt 0.825000 0.600000
vt 0.800000 0.600000
vt 0.825000 0.700000
vt 0.900000 0.733333
vt 0.800000 0.733333
vt 0.725000 0.533333
vt 0.775000 0.600000
vt 0.725000 0.600000
vt 0.800000 0.633333
vt 0.825000 0.633333
vt 0.875000 0.700000
vt 0.900000 0.633333
vt 0.875000 0.433333
vt 0.900000 0.500000
vt 0.875000 0.500000
vt 0.800000 0.500000
vt 0.825000 0.433333
vt 0.825000 0.500000
vt 0.800000 0.400000
vt 0.900000 0.400000
vt 0.750000 0.733333
vt 0.800000 0.866667
vt 0.750000 0.866667
vt 0.900000 0.866667
vt 0.800000 0.733333
vt 0.900000 0.733333
vt 0.650000 0.733333
vt 0.650000 0.866667
vt 0.800000 0.600000
vt 0.750000 0.600000
vt 0.750000 1.000000
vt 0.800000 1.000000
vt 0.750000 0.733333
vt 0.800000 0.866667
vt 0.750000 0.866667
vt 0.900000 0.866667
vt 0.800000 0.733333
vt 0.900000 0.733333
vt 0.650000 0.733333
vt 0.650000 0.866667
vt 0.800000 0.600000
vt 0.750000 0.600000
vt 0.750000 1.000000
vt 0.800000 1.000000
vt 0.875000 0.533333
vt 0.900000 0.600000
vt 0.875000 0.600000
vt 1.000000 0.600000
vt 0.925000 0.533333
vt 1.000000 0.533333
vt 0.700000 0.533333
vt 0.775000 0.600000
vt 0.700000 0.600000
vt 0.975000 0.600000
vt 0.925000 0.533333
vt 0.975000 0.533333
vt 0.825000 0.533333
vt 0.875000 0.600000
vt 0.825000 0.600000
vt 0.800000 0.533333
vt 0.825000 0.600000
vt 0.800000 0.600000
vt 0.825000 0.700000
vt 0.900000 0.733333
vt 0.800000 0.733333
vt 0.725000 0.533333
vt 0.775000 0.600000
vt 0.725000 0.600000
vt 0.800000 0.633333
vt 0.825000 0.633333
vt 0.875000 0.700000
vt 0.900000 0.633333
vt 0.875000 0.433333
vt 0.900000 0.500000
vt 0.875000 0.500000
vt 0.800000 0.500000
vt 0.825000 0.433333
vt 0.825000 0.500000
vt 0.800000 0.400000
vt 0.900000 0.400000
vt 0.875000 0.533333
vt 0.900000 0.600000
vt 0.875000 0.600000
vt 1.000000 0.600000
vt 0.925000 0.533333
vt 1.000000 0.533333
vt 0.700000 0.533333
vt 0.775000 0.600000
vt 0.700000 0.600000
vt 0.975000 0.600000
vt 0.925000 0.533333
vt 0.975000 0.533333
vt 0.825000 0.533333
vt 0.875000 0.600000
vt 0.825000 0.600000
vt 0.800000 0.533333
vt 0.825000 0.600000
vt 0.800000 0.600000
vt 0.825000 0.700000
vt 0.900000 0.733333
vt 0.800000 0.733333
vt 0.725000 0.533333
vt 0.775000 0.600000
vt 0.725000 0.600000
vt 0.800000 0.633333
vt 0.825000 0.633333
vt 0.875000 0.700000
vt 0.900000 0.633333
vt 0.875000 0.433333
vt 0.900000 0.500000
vt 0.875000 0.500000
vt 0.800000 0.500000
vt 0.825000 0.433333
vt 0.825000 0.500000
vt 0.800000 0.400000
vt 0.900000 0.400000
vt 0.875000 0.533333
vt 0.900000 0.600000
vt 0.875000 0.600000
vt 1.000000 0.600000
vt 0.925000 0.533333
vt 1.000000 0.533333
vt 0.700000 0.533333
vt 0.775000 0.600000
vt 0.700000 0.600000
vt 0.975000 0.600000
vt 0.925000 0.533333
vt 0.975000 0.533333
vt 0.825000 0.533333
vt 0.875000 0.600000
vt 0.825000 0.600000
vt 0.800000 0.533333
vt 0.825000 0.600000
vt 0.800000 0.600000
vt 0.825000 0.700000
vt 0.900000 0.733333
vt 0.800000 0.733333
vt 0.725000 0.533333
vt 0.775000 0.600000
vt 0.725000 0.600000
vt 0.800000 0.633333
vt 0.825000 0.633333
vt 0.875000 0.700000
vt 0.900000 0.633333
vt 0.875000 0.433333
vt 0.900000 0.500000
vt 0.875000 0.500000
vt 0.800000 0.500000
vt 0.825000 0.433333
vt 0.825000 0.500000
vt 0.800000 0.400000
vt 0.900000 0.400000
vt 0.900000 0.533333
vt 0.925000 0.600000
vt 0.775000 0.533333
vt 0.925000 0.600000
vt 0.875000 0.533333
vt 0.825000 0.533333
vt 0.775000 0.533333
vt 0.875000 0.633333
vt 0.900000 0.533333
vt 0.925000 0.600000
vt 0.775000 0.533333
vt 0.925000 0.600000
vt 0.875000 0.533333
vt 0.825000 0.533333
vt 0.775000 0.533333
vt 0.875000 0.633333
vt 0.900000 0.533333
vt 0.925000 0.600000
vt 0.775000 0.533333
vt 0.925000 0.600000
vt 0.875000 0.533333
vt 0.825000 0.533333
vt 0.775000 0.533333
vt 0.875000 0.633333
vt 0.900000 0.533333
vt 0.925000 0.600000
vt 0.775000 0.533333
vt 0.925000 0.600000
vt 0.875000 0.533333
vt 0.825000 0.533333
vt 0.775000 0.533333
vt 0.875000 0.633333
vn 1.0000 0.0000 0.0000
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
s off
f 47/69/7 45/70/7 46/71/7
f 44/72/8 47/69/8 42/73/8
f 41/74/9 45/70/9 43/75/9
f 43/76/10 48/77/10 44/78/10
f 42/79/11 46/71/11 41/80/11
f 55/81/7 53/82/7 54/83/7
f 51/84/10 56/85/10 52/86/10
f 50/87/11 54/83/11 49/88/11
f 52/89/8 55/81/8 50/90/8
f 49/91/9 53/82/9 51/92/9
f 70/93/7 61/94/7 65/95/7
f 59/96/10 64/97/10 60/98/10
f 58/99/11 62/100/11 57/101/11
f 65/102/11 72/103/11 70/104/11
f 71/105/7 69/106/7 66/107/7
f 63/108/7 67/109/7 62/110/7
f 66/111/9 59/112/9 57/113/9
f 68/114/10 66/115/10 67/116/10
f 66/111/9 62/117/9 67/118/9
f 69/119/9 61/120/9 59/112/9
f 72/121/8 64/122/8 70/123/8
f 63/124/8 71/125/8 68/126/8
f 72/121/8 58/127/8 60/128/8
f 79/129/7 77/130/7 78/131/7
f 75/132/10 80/133/10 76/134/10
f 74/135/11 78/131/11 73/136/11
f 76/137/8 79/129/8 74/138/8
f 73/139/9 77/130/9 75/140/9
f 87/141/7 85/142/7 86/143/7
f 83/144/10 88/145/10 84/146/10
f 82/147/11 86/143/11 81/148/11
f 84/149/8 87/141/8 82/150/8
f 81/151/9 85/142/9 83/152/9
f 102/153/7 93/154/7 97/155/7
f 91/156/10 96/157/10 92/158/10
f 90/159/11 94/160/11 89/161/11
f 97/162/11 104/163/11 102/164/11
f 103/165/7 101/166/7 98/167/7
f 95/168/7 99/169/7 94/170/7
f 98/171/9 91/172/9 89/173/9
f 100/174/10 98/175/10 99/176/10
f 98/171/9 94/177/9 99/178/9
f 101/179/9 93/180/9 91/172/9
f 104/181/8 96/182/8 102/183/8
f 95/184/8 103/185/8 100/186/8
f 104/181/8 90/187/8 92/188/8
f 118/189/7 109/190/7 113/191/7
f 107/192/10 112/193/10 108/194/10
f 106/195/11 110/196/11 105/197/11
f 113/198/11 120/199/11 118/200/11
f 119/201/7 117/202/7 114/203/7
f 111/204/7 115/205/7 110/206/7
f 114/207/9 107/208/9 105/209/9
f 116/210/10 114/211/10 115/212/10
f 114/207/9 110/213/9 115/214/9
f 117/215/9 109/216/9 107/208/9
f 120/217/8 112/218/8 118/219/8
f 111/220/8 119/221/8 116/222/8
f 120/217/8 106/223/8 108/224/8
f 134/225/7 125/226/7 129/227/7
f 123/228/10 128/229/10 124/230/10
f 122/231/11 126/232/11 121/233/11
f 129/234/11 136/235/11 134/236/11
f 135/237/7 133/238/7 130/239/7
f 127/240/7 131/241/7 126/242/7
f 130/243/9 123/244/9 121/245/9
f 132/246/10 130/247/10 131/248/10
f 130/243/9 126/249/9 131/250/9
f 133/251/9 125/252/9 123/244/9
f 136/253/8 128/254/8 134/255/8
f 127/256/8 135/257/8 132/258/8
f 136/253/8 122/259/8 124/260/8
f 47/69/7 48/77/7 45/70/7
f 44/72/8 48/77/8 47/69/8
f 41/74/9 46/71/9 45/70/9
f 43/76/10 45/70/10 48/77/10
f 42/79/11 47/69/11 46/71/11
f 55/81/7 56/85/7 53/82/7
f 51/84/10 53/82/10 56/85/10
f 50/87/11 55/81/11 54/83/11
f 52/89/8 56/85/8 55/81/8
f 49/91/9 54/83/9 53/82/9
f 70/93/7 64/261/7 61/94/7
f 59/96/10 61/262/10 64/97/10
f 58/99/11 63/263/11 62/100/11
f 65/102/11 69/264/11 72/103/11
f 71/105/7 72/265/7 69/106/7
f 63/108/7 68/266/7 67/109/7
f 66/111/9 69/119/9 59/112/9
f 68/114/10 71/267/10 66/115/10
f 66/111/9 57/113/9 62/117/9
f 69/119/9 65/268/9 61/120/9
f 72/121/8 60/128/8 64/122/8
f 63/124/8 58/127/8 71/125/8
f 72/121/8 71/125/8 58/127/8
f 79/129/7 80/133/7 77/130/7
f 75/132/10 77/130/10 80/133/10
f 74/135/11 79/129/11 78/131/11
f 76/137/8 80/133/8 79/129/8
f 73/139/9 78/131/9 77/130/9
f 87/141/7 88/145/7 85/142/7
f 83/144/10 85/142/10 88/145/10
f 82/147/11 87/141/11 86/143/11
f 84/149/8 88/145/8 87/141/8
f 81/151/9 86/143/9 85/142/9
f 102/153/7 96/269/7 93/154/7
f 91/156/10 93/270/10 96/157/10
f 90/159/11 95/271/11 94/160/11
f 97/162/11 101/272/11 104/163/11
f 103/165/7 104/273/7 101/166/7
f 95/168/7 100/274/7 99/169/7
f 98/171/9 101/179/9 91/172/9
f 100/174/10 103/275/10 98/175/10
f 98/171/9 89/173/9 94/177/9
f 101/179/9 97/276/9 93/180/9
f 104/181/8 92/188/8 96/182/8
f 95/184/8 90/187/8 103/185/8
f 104/181/8 103/185/8 90/187/8
f 118/189/7 112/277/7 109/190/7
f 107/192/10 109/278/10 112/193/10
f 106/195/11 111/279/11 110/196/11
f 113/198/11 117/280/11 120/199/11
f 119/201/7 120/281/7 117/202/7
f 111/204/7 116/282/7 115/205/7
f 114/207/9 117/215/9 107/208/9
f 116/210/10 119/283/10 114/211/10
f 114/207/9 105/209/9 110/213/9
f 117/215/9 113/284/9 109/216/9
f 120/217/8 108/224/8 112/218/8
f 111/220/8 106/223/8 119/221/8
f 120/217/8 119/221/8 106/223/8
f 134/225/7 128/285/7 125/226/7
f 123/228/10 125/286/10 128/229/10
f 122/231/11 127/287/11 126/232/11
f 129/234/11 133/288/11 136/235/11
f 135/237/7 136/289/7 133/238/7
f 127/240/7 132/290/7 131/241/7
f 130/243/9 133/251/9 123/244/9
f 132/246/10 135/291/10 130/247/10
f 130/243/9 121/245/9 126/249/9
f 133/251/9 129/292/9 125/252/9
f 136/253/8 124/260/8 128/254/8
f 127/256/8 122/259/8 135/257/8
f 136/253/8 135/257/8 122/259/8

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 394 B