those floppy boys that avians have

This commit is contained in:
Bob 2021-07-17 18:48:55 +02:00
parent b1382eaac2
commit f98b0572b2
41 changed files with 2823 additions and 418 deletions

View File

@ -217,7 +217,7 @@ public class WeaponRecipes {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_dart_nerf, 16), new Object[] { "I", "I", 'I', ModItems.plate_polymer }));
//Ammo types
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_incendiary, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModItems.powder_fire });
/*GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_incendiary, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModItems.powder_fire });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_shrapnel, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModBlocks.gravel_obsidian });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_du, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModItems.ingot_u238 });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_12gauge_sleek, 64), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_12gauge, 'A', ModItems.coin_maskman });
@ -226,7 +226,7 @@ public class WeaponRecipes {
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_20gauge_caustic, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_20gauge, 'A', ModItems.powder_poison });
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_shock, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_20gauge, 'A', "dustDiamond" }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.ammo_20gauge_wither, 4), new Object[] { "BCB", "CAC", "BCB", 'B', ModItems.ammo_20gauge, 'A', Blocks.soul_sand, 'C', "dustCoal" }));
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_20gauge_sleek, 64), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_20gauge, 'A', ModItems.coin_maskman });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_20gauge_sleek, 64), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_20gauge, 'A', ModItems.coin_maskman });*/
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge_flechette_phosphorus, 8), new Object[] { "BBB", "BAB", "BBB", 'B', ModItems.ammo_4gauge_flechette, 'A', ModItems.ingot_phosphorus });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge_balefire, 4), new Object[] { " B ", "BAB", " B ", 'B', ModItems.ammo_4gauge_explosive, 'A', ModItems.egg_balefire_shard });
GameRegistry.addRecipe(new ItemStack(ModItems.ammo_4gauge_kampf, 2), new Object[] { "G", "R", 'G', ModItems.ammo_rocket, 'R', ModItems.ammo_4gauge_explosive });

View File

@ -38,7 +38,22 @@ public class HbmPlayerProps implements IExtendedEntityProperties {
return keysPressed[key.ordinal()];
}
public boolean isJetpackActive() {
return this.enableBackpack && getKeyPressed(EnumKeybind.JETPACK);
}
public void setKeyPressed(EnumKeybind key, boolean pressed) {
if(!getKeyPressed(key) && pressed) {
if(key == EnumKeybind.TOGGLE_JETPACK) {
this.enableBackpack = !this.enableBackpack;
}
if(key == EnumKeybind.TOGGLE_HEAD) {
this.enableHUD = !this.enableHUD;
}
}
keysPressed[key.ordinal()] = pressed;
}

View File

@ -1,9 +1,51 @@
package com.hbm.handler;
import org.lwjgl.input.Keyboard;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.main.MainRegistry;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent;
import net.minecraft.client.settings.KeyBinding;
public class HbmKeybinds {
public static final String category = "hbm.key";
public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category);
public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category);
public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category);
public static void register() {
ClientRegistry.registerKeyBinding(jetpackKey);
ClientRegistry.registerKeyBinding(hudKey);
ClientRegistry.registerKeyBinding(reloadKey);
}
@SubscribeEvent
public void keyEvent(KeyInputEvent event) {
HbmPlayerProps props = HbmPlayerProps.getData(MainRegistry.proxy.me());
for(EnumKeybind key : EnumKeybind.values()) {
boolean last = props.getKeyPressed(key);
boolean current = MainRegistry.proxy.getIsKeyPressed(key);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(key, current));
props.setKeyPressed(key, current);
}
}
}
public static enum EnumKeybind {
JETPACK,
TOGGLE_HEAD
TOGGLE_JETPACK,
TOGGLE_HEAD,
RELOAD
}
}

View File

@ -10,7 +10,9 @@ import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.items.ModItems;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class AnvilRecipes {
@ -23,10 +25,22 @@ public class AnvilRecipes {
registerConstruction();
}
/*
* ////// // // // ////// // // // // // //////
* // //// //// // // // // // //// // //
* ////// // // // // // ////// // // //// // //
* // // // // // // // // // // // //
* ////// // // // // // // // // // //////
*/
public static void registerSmithing() {
smithingRecipes.add(new AnvilSmithingRecipe(2, new ItemStack(ModItems.plate_steel, 2), new OreDictStack("ingotSteel"), new OreDictStack("ingotSteel")));
for(int i = 0; i < 9; i++)
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_steel_dusted, 1, i + 1),
new ComparableStack(ModItems.ingot_steel_dusted, 1, i), new ComparableStack(ModItems.ingot_steel_dusted, 1, i)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_chainsteel, 1),
new ComparableStack(ModItems.ingot_steel_dusted, 1, 9), new ComparableStack(ModItems.ingot_steel_dusted, 1, 9)));
Block[] anvils = new Block[]{ModBlocks.anvil_iron, ModBlocks.anvil_lead};
for(Block anvil : anvils) {
@ -39,30 +53,105 @@ public class AnvilRecipes {
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModBlocks.anvil_steel, 1), new ComparableStack(anvil), new OreDictStack("ingotSteel", 10)));
}
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.ingot_meteorite_forged, 1), new ComparableStack(ModItems.ingot_meteorite), new ComparableStack(ModItems.ingot_meteorite)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.blade_meteorite, 1), new ComparableStack(ModItems.ingot_meteorite_forged), new ComparableStack(ModItems.ingot_meteorite_forged)));
smithingRecipes.add(new AnvilSmithingHotRecipe(3, new ItemStack(ModItems.meteorite_sword_reforged, 1), new ComparableStack(ModItems.meteorite_sword_seared), new ComparableStack(ModItems.ingot_meteorite_forged)));
smithingRecipes.add(new AnvilSmithingRecipe(1, new ItemStack(ModItems.gun_ar15, 1), new ComparableStack(ModItems.gun_thompson), new ComparableStack(ModItems.pipe_lead)));
smithingRecipes.add(new AnvilSmithingRecipe(1916169, new ItemStack(ModItems.wings_murk, 1), new ComparableStack(ModItems.wings_limp), new ComparableStack(ModItems.particle_tachyon)));
}
/*
* ////// ////// // // ////// ////// //// // // ////// ////// // ////// // //
* // // // //// // // // // // // // // // // // // //// //
* // // // // //// ////// // //// // // // // // // // // ////
* // // // // // // // // // // // // // // // // // //
* ////// ////// // // ////// // // // ////// ////// // // ////// // //
*/
public static void registerConstruction() {
registerConstructionRecipes();
registerConstructionAmmo();
registerConstructionRecycling();
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack("ingotIron"), new AnvilOutput(new ItemStack(ModItems.plate_iron))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack("ingotGold"), new AnvilOutput(new ItemStack(ModItems.plate_gold))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack("ingotCopper"), new AnvilOutput(new ItemStack(ModItems.plate_copper))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack("ingotLead"), new AnvilOutput(new ItemStack(ModItems.plate_lead))).setTier(3));
constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack("ingotSteel"), new AnvilOutput(new ItemStack(ModItems.plate_steel))).setTier(3));
}
public static void registerConstructionRecipes() {
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("ingotIron"),
new AnvilOutput(new ItemStack(ModItems.plate_iron))
).setTier(1));
new AStack[] {
new OreDictStack("plateCopper", 4)
},
new AnvilOutput(new ItemStack(ModItems.board_copper))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("ingotGold"),
new AnvilOutput(new ItemStack(ModItems.plate_gold))
).setTier(1));
new AStack[] {
new OreDictStack("plateIron", 2),
new ComparableStack(ModItems.coil_copper),
new ComparableStack(ModItems.coil_copper_torus)
},
new AnvilOutput(new ItemStack(ModItems.motor, 2))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("ingotCopper"),
new AnvilOutput(new ItemStack(ModItems.plate_copper))
).setTier(1));
new AStack[] {
new ComparableStack(Blocks.stonebrick, 4),
new OreDictStack("ingotIron", 2),
new OreDictStack("ingotTungsten", 4),
new ComparableStack(ModItems.board_copper, 2)
},
new AnvilOutput(new ItemStack(ModBlocks.machine_difurnace_off))).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("ingotLead"),
new AnvilOutput(new ItemStack(ModItems.plate_lead))
).setTier(1));
new AStack[] {
new OreDictStack("blockGlassColorless", 4),
new OreDictStack("ingotSteel", 8),
new OreDictStack("ingotCopper", 8),
new ComparableStack(ModItems.motor, 2),
new ComparableStack(ModItems.circuit_aluminium, 1)
},
new AnvilOutput(new ItemStack(ModBlocks.machine_assembler))).setTier(2));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("ingotSteel"),
new AnvilOutput(new ItemStack(ModItems.plate_steel))
).setTier(1));
new AStack[] {
new ComparableStack(Items.bone, 16),
new ComparableStack(Items.leather, 4),
new ComparableStack(Items.feather, 24)
},
new AnvilOutput(new ItemStack(ModItems.wings_limp))).setTier(2));
}
public static void registerConstructionAmmo() {
Object[][] recs = new Object[][] {
new Object[] {ModItems.ammo_12gauge, ModItems.powder_fire, ModItems.ammo_12gauge_incendiary, 20, 2},
new Object[] {ModItems.ammo_12gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge_shrapnel, 20, 2},
new Object[] {ModItems.ammo_12gauge, ModItems.ingot_u238, ModItems.ammo_12gauge_du, 20, 3},
new Object[] {ModItems.ammo_12gauge, ModItems.coin_maskman, ModItems.ammo_12gauge_sleek, 100, 4},
new Object[] {ModItems.ammo_20gauge, ModItems.powder_fire, ModItems.ammo_20gauge_incendiary, 20, 2},
new Object[] {ModItems.ammo_20gauge, Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge_shrapnel, 20, 2},
new Object[] {ModItems.ammo_20gauge, ModItems.powder_poison, ModItems.ammo_20gauge_caustic, 20, 2},
new Object[] {ModItems.ammo_20gauge, "dustDiamond", ModItems.ammo_20gauge_shock, 20, 2},
new Object[] {ModItems.ammo_20gauge, Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge_wither, 10, 3},
new Object[] {ModItems.ammo_20gauge, ModItems.coin_maskman, ModItems.ammo_20gauge_sleek, 100, 4},
};
for(Object[] objs : recs) {
if(objs[1] instanceof Item) {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { new ComparableStack((Item)objs[0], (int)objs[3]), new ComparableStack((Item)objs[1], 1) },
new AnvilOutput(new ItemStack((Item)objs[2], (int)objs[3]))).setTier((int)objs[4]));
} else if(objs[1] instanceof String) {
constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { new ComparableStack((Item)objs[0], (int)objs[3]), new OreDictStack((String)objs[1], 1) },
new AnvilOutput(new ItemStack((Item)objs[2], (int)objs[3]))).setTier((int)objs[4]));
}
}
}
public static void registerConstructionRecycling() {
constructionRecipes.add(new AnvilConstructionRecipe(
new ComparableStack(ModBlocks.barrel_tcalloy),
new AnvilOutput[] {
@ -72,17 +161,6 @@ public class AnvilRecipes {
new AnvilOutput(new ItemStack(ModItems.ingot_tcalloy, 1), 0.25F)
}
).setTier(3));
for(int i = 0; i < 8; i++)
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("plateCopper"),
new AnvilOutput(new ItemStack(ModItems.wire_copper, 8))
).setTier(1));
constructionRecipes.add(new AnvilConstructionRecipe(
new OreDictStack("plateGold"),
new AnvilOutput(new ItemStack(ModItems.wire_gold, 8))
).setTierRange(1, 4));
}
public static List<AnvilSmithingRecipe> getSmithing() {
@ -93,61 +171,6 @@ public class AnvilRecipes {
return constructionRecipes;
}
public static class AnvilSmithingRecipe {
int tier;
ItemStack output;
AStack left;
AStack right;
boolean shapeless = false;
public AnvilSmithingRecipe(int tier, ItemStack out, AStack left, AStack right) {
this.tier = tier;
this.output = out;
this.left = left;
this.right = right;
}
public AnvilSmithingRecipe makeShapeless() {
this.shapeless = true;
return this;
}
public boolean matches(ItemStack left, ItemStack right) {
return matchesInt(left, right) != -1;
}
public int matchesInt(ItemStack left, ItemStack right) {
if(doesStackMatch(left, this.left) && doesStackMatch(right, this.right))
return 0;
if(shapeless) {
return doesStackMatch(right, this.left) && doesStackMatch(left, this.right) ? 1 : -1;
}
return -1;
}
public boolean doesStackMatch(ItemStack input, AStack recipe) {
return recipe.matchesRecipe(input);
}
public ItemStack getOutput(ItemStack left, ItemStack right) {
return output.copy();
}
public int amountConsumed(int index, boolean mirrored) {
if(index == 0)
return mirrored ? right.stacksize : left.stacksize;
if(index == 1)
return mirrored ? left.stacksize : right.stacksize;
return 0;
}
}
public static class AnvilConstructionRecipe {
public List<AStack> input = new ArrayList();
public List<AnvilOutput> output = new ArrayList();

View File

@ -0,0 +1,41 @@
package com.hbm.inventory;
import com.hbm.inventory.RecipesCommon.AStack;
import com.hbm.items.special.ItemHot;
import net.minecraft.item.ItemStack;
public class AnvilSmithingHotRecipe extends AnvilSmithingRecipe {
public AnvilSmithingHotRecipe(int tier, ItemStack out, AStack left, AStack right) {
super(tier, out, left, right);
}
public boolean doesStackMatch(ItemStack input, AStack recipe) {
if(input != null && input.getItem() instanceof ItemHot) {
double heat = ItemHot.getHeat(input);
if(heat < 0.5D)
return false;
}
return recipe.matchesRecipe(input, false);
}
public ItemStack getOutput(ItemStack left, ItemStack right) {
if(left.getItem() instanceof ItemHot && right.getItem() instanceof ItemHot && output.getItem() instanceof ItemHot) {
double h1 = ItemHot.getHeat(left);
double h2 = ItemHot.getHeat(right);
ItemStack out = output.copy();
ItemHot.heatUp(out, (h1 + h2) / 2D);
return out;
}
return output.copy();
}
}

View File

@ -0,0 +1,60 @@
package com.hbm.inventory;
import com.hbm.inventory.RecipesCommon.AStack;
import net.minecraft.item.ItemStack;
public class AnvilSmithingRecipe {
public int tier;
ItemStack output;
AStack left;
AStack right;
boolean shapeless = false;
public AnvilSmithingRecipe(int tier, ItemStack out, AStack left, AStack right) {
this.tier = tier;
this.output = out;
this.left = left;
this.right = right;
}
public AnvilSmithingRecipe makeShapeless() {
this.shapeless = true;
return this;
}
public boolean matches(ItemStack left, ItemStack right) {
return matchesInt(left, right) != -1;
}
public int matchesInt(ItemStack left, ItemStack right) {
if(doesStackMatch(left, this.left) && doesStackMatch(right, this.right))
return 0;
if(shapeless) {
return doesStackMatch(right, this.left) && doesStackMatch(left, this.right) ? 1 : -1;
}
return -1;
}
public boolean doesStackMatch(ItemStack input, AStack recipe) {
return recipe.matchesRecipe(input, false);
}
public ItemStack getOutput(ItemStack left, ItemStack right) {
return output.copy();
}
public int amountConsumed(int index, boolean mirrored) {
if(index == 0)
return mirrored ? right.stacksize : left.stacksize;
if(index == 1)
return mirrored ? left.stacksize : right.stacksize;
return 0;
}
}

View File

@ -60,6 +60,7 @@ public class CrystallizerRecipes {
recipes.put(new ComparableStack(ModItems.coal_infernal), new ItemStack(ModItems.solid_fuel));
recipes.put(new ComparableStack(ModItems.cinnebar), new ItemStack(ModItems.nugget_mercury, 3));
recipes.put("blockCoal", new ItemStack(ModBlocks.block_graphite));
recipes.put(new ComparableStack(ModBlocks.stone_gneiss), new ItemStack(ModItems.powder_lithium));
recipes.put(new ComparableStack(ModItems.powder_diamond), new ItemStack(Items.diamond));
recipes.put(new ComparableStack(ModItems.powder_emerald), new ItemStack(Items.emerald));

View File

@ -69,6 +69,14 @@ public class HadronRecipes {
new ItemStack(ModItems.particle_empty),
false
));
recipes.add(new HadronRecipe(
new ItemStack(ModItems.particle_muon),
new ItemStack(ModItems.particle_higgs),
1000,
new ItemStack(ModItems.particle_tachyon),
new ItemStack(ModItems.particle_empty),
true
));
recipes.add(new HadronRecipe(
new ItemStack(ModItems.particle_muon),
new ItemStack(ModItems.particle_dark),

View File

@ -52,6 +52,8 @@ public class RecipesCommon {
/*
* Is it unprofessional to pool around in child classes from an abstract superclass? Do I look like I give a shit?
*
* Major fuckup: comparablestacks need EQUAL stacksize but the oredictstack ignores stack size entirely
*/
public boolean isApplicable(ComparableStack comp) {
@ -72,7 +74,13 @@ public class RecipesCommon {
return false;
}
public abstract boolean matchesRecipe(ItemStack stack);
/**
* Whether the supplied itemstack is applicable for a recipe (e.g. anvils). Slightly different from {@code isApplicable}.
* @param stack the ItemStack to check
* @param ignoreSize whether size should be ignored entirely or if the ItemStack needs to be >at least< the same size as this' size
* @return
*/
public abstract boolean matchesRecipe(ItemStack stack, boolean ignoreSize);
public abstract AStack copy();
}
@ -216,7 +224,7 @@ public class RecipesCommon {
}
@Override
public boolean matchesRecipe(ItemStack stack) {
public boolean matchesRecipe(ItemStack stack, boolean ignoreSize) {
if(stack == null)
return false;
@ -227,7 +235,7 @@ public class RecipesCommon {
if(this.meta != OreDictionary.WILDCARD_VALUE && stack.getItemDamage() != this.meta)
return false;
if(stack.stackSize < this.stacksize)
if(!ignoreSize && stack.stackSize < this.stacksize)
return false;
return true;
@ -323,11 +331,14 @@ public class RecipesCommon {
}
@Override
public boolean matchesRecipe(ItemStack stack) {
public boolean matchesRecipe(ItemStack stack, boolean ignoreSize) {
if(stack == null)
return false;
if(!ignoreSize && stack.stackSize < this.stacksize)
return false;
int[] ids = OreDictionary.getOreIDs(stack);
if(ids == null || ids.length == 0)

View File

@ -1,7 +1,7 @@
package com.hbm.inventory.container;
import com.hbm.inventory.AnvilRecipes;
import com.hbm.inventory.AnvilRecipes.AnvilSmithingRecipe;
import com.hbm.inventory.AnvilSmithingRecipe;
import com.hbm.inventory.SlotMachineOutput;
import net.minecraft.entity.player.EntityPlayer;
@ -38,7 +38,7 @@ public class ContainerAnvil extends Container {
return;
}
for(AnvilSmithingRecipe rec : AnvilRecipes.getSmithing()) {
for(com.hbm.inventory.AnvilSmithingRecipe rec : AnvilRecipes.getSmithing()) {
int i = rec.matchesInt(left, right);
@ -160,7 +160,7 @@ public class ContainerAnvil extends Container {
for(AnvilSmithingRecipe rec : AnvilRecipes.getSmithing()) {
if(rec.matches(left, right)) {
if(rec.matches(left, right) && rec.tier <= this.tier) {
this.output.setInventorySlotContents(0, rec.getOutput(left, right));
return;
}

View File

@ -14,6 +14,8 @@ import com.hbm.inventory.RecipesCommon.ComparableStack;
import com.hbm.inventory.RecipesCommon.OreDictStack;
import com.hbm.inventory.container.ContainerAnvil;
import com.hbm.lib.RefStrings;
import com.hbm.packet.AnvilCraftPacket;
import com.hbm.packet.PacketDispatcher;
import net.minecraft.client.audio.PositionedSoundRecord;
import net.minecraft.client.gui.FontRenderer;
@ -134,8 +136,12 @@ public class GUIAnvil extends GuiContainer {
}
if(guiLeft + 52 <= x && guiLeft + 52 + 18 > x && guiTop + 53 < y && guiTop + 53 + 18 >= y) {
if(this.selection == -1)
return;
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
//craft
PacketDispatcher.wrapper.sendToServer(new AnvilCraftPacket(this.recipes.get(this.selection), Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) ? 1 : 0));
return;
}
@ -288,6 +294,19 @@ public class GUIAnvil extends GuiContainer {
this.drawTexturedModalRect(guiLeft, guiTop, 0, 0, this.xSize, this.ySize);
int slide = MathHelper.clamp_int(this.lastSize - 42, 0, 1000);
int mul = 1;
while(true) {
if(slide >= 51 * mul) {
this.drawTexturedModalRect(guiLeft + 125 + 51 * mul, guiTop + 17, 125, 17, 54, 108);
mul++;
} else {
break;
}
}
this.drawTexturedModalRect(guiLeft + 125 + slide, guiTop + 17, 125, 17, 54, 108);
if(this.search.isFocused()) {
@ -352,7 +371,6 @@ public class GUIAnvil extends GuiContainer {
}
super.keyTyped(c, key);
}
}
}

View File

@ -735,6 +735,7 @@ public class ModItems {
public static Item particle_aschrab;
public static Item particle_higgs;
public static Item particle_muon;
public static Item particle_tachyon;
public static Item particle_strange;
public static Item particle_dark;
public static Item particle_sparkticle;
@ -1914,6 +1915,8 @@ public class ModItems {
public static Item jetpack_break;
public static Item jetpack_fly;
public static Item jetpack_vector;
public static Item wings_limp;
public static Item wings_murk;
public static Item jackt;
public static Item jackt2;
@ -2979,6 +2982,7 @@ public class ModItems {
particle_aschrab = new Item().setUnlocalizedName("particle_aschrab").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_aschrab");
particle_higgs = new Item().setUnlocalizedName("particle_higgs").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_higgs");
particle_muon = new Item().setUnlocalizedName("particle_muon").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_muon");
particle_tachyon = new Item().setUnlocalizedName("particle_tachyon").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_tachyon");
particle_strange = new Item().setUnlocalizedName("particle_strange").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_strange");
particle_dark = new Item().setUnlocalizedName("particle_dark").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_dark");
particle_sparkticle = new Item().setUnlocalizedName("particle_sparkticle").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_sparkticle");
@ -3347,7 +3351,7 @@ public class ModItems {
rbmk_fuel_ueu = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_ueu)
.setYield(100000000D)
.setStats(15)
.setFunction(EnumBurnFunc.PLATEU)
.setFunction(EnumBurnFunc.LOG_TEN)
.setMeltingPoint(2865)
.addRadiation(ItemHazard.u * ItemHazard.rod_rbmk).toItem()
.setUnlocalizedName("rbmk_fuel_ueu").setTextureName(RefStrings.MODID + ":rbmk_fuel_ueu");
@ -3516,7 +3520,7 @@ public class ModItems {
.setUnlocalizedName("rbmk_fuel_pu238be").setTextureName(RefStrings.MODID + ":rbmk_fuel_pu238be");
rbmk_fuel_balefire_gold = (ItemRBMKRod) new ItemRBMKRod(rbmk_pellet_balefire_gold)
.setYield(100000000D)
.setStats(10, 50)
.setStats(50, 10)
.setFunction(EnumBurnFunc.ARCH)
.setMeltingPoint(2000)
.addRadiation(ItemHazard.au198 * ItemHazard.rod_rbmk).toItem()
@ -4640,6 +4644,7 @@ public class ModItems {
dns_helmet = new ArmorDNT(aMatDNS, 7, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000000, 1000000, 100000, 115)
.addEffect(new PotionEffect(Potion.damageBoost.id, 20, 9))
.addEffect(new PotionEffect(Potion.digSpeed.id, 20, 7))
.addEffect(new PotionEffect(Potion.jump.id, 20, 2))
.setHasGeigerSound(true)
.enableVATS(true)
.enableThermalSight(true)
@ -4974,6 +4979,8 @@ public class ModItems {
jetpack_break = new JetpackBreak(FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_break").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_break");
jetpack_fly = new JetpackRegular(FluidType.KEROSENE, 12000).setUnlocalizedName("jetpack_fly").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_fly");
jetpack_vector = new JetpackVectorized(FluidType.KEROSENE, 16000).setUnlocalizedName("jetpack_vector").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":jetpack_vector");
wings_murk = new WingsMurk(MainRegistry.aMatCobalt).setUnlocalizedName("wings_murk").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_murk");
wings_limp = new WingsMurk(MainRegistry.aMatCobalt).setUnlocalizedName("wings_limp").setCreativeTab(CreativeTabs.tabCombat).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":wings_limp");
cape_test = new ArmorModel(MainRegistry.enumArmorMaterialEmerald, 9, 1).setUnlocalizedName("cape_test").setCreativeTab(null).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_test");
cape_radiation = new ArmorModel(ArmorMaterial.CHAIN, 9, 1).setUnlocalizedName("cape_radiation").setCreativeTab(MainRegistry.consumableTab).setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cape_radiation");
@ -5835,6 +5842,7 @@ public class ModItems {
GameRegistry.registerItem(particle_aschrab, particle_aschrab.getUnlocalizedName());
GameRegistry.registerItem(particle_higgs, particle_higgs.getUnlocalizedName());
GameRegistry.registerItem(particle_muon, particle_muon.getUnlocalizedName());
GameRegistry.registerItem(particle_tachyon, particle_tachyon.getUnlocalizedName());
GameRegistry.registerItem(particle_strange, particle_strange.getUnlocalizedName());
GameRegistry.registerItem(particle_dark, particle_dark.getUnlocalizedName());
GameRegistry.registerItem(particle_sparkticle, particle_sparkticle.getUnlocalizedName());
@ -7390,6 +7398,8 @@ public class ModItems {
GameRegistry.registerItem(jetpack_break, jetpack_break.getUnlocalizedName());
GameRegistry.registerItem(jetpack_vector, jetpack_vector.getUnlocalizedName());
GameRegistry.registerItem(jetpack_boost, jetpack_boost.getUnlocalizedName());
GameRegistry.registerItem(wings_limp, wings_limp.getUnlocalizedName());
GameRegistry.registerItem(wings_murk, wings_murk.getUnlocalizedName());
//GameRegistry.registerItem(australium_iv, australium_iv.getUnlocalizedName());
//GameRegistry.registerItem(australium_v, australium_v.getUnlocalizedName());

View File

@ -3,10 +3,7 @@ package com.hbm.items.armor;
import java.util.List;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.render.model.ModelArmorBJ;
import com.hbm.util.I18nUtil;
@ -49,33 +46,20 @@ public class ArmorBJJetpack extends ArmorBJ {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(world.isRemote) {
if(!world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(this.hasFSBArmor(player) && props.getKeyPressed(EnumKeybind.JETPACK)) {
if(this.hasFSBArmor(player) && props.isJetpackActive()) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack_bj");
data.setInteger("player", player.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack_bj");
data.setInteger("player", player.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
}
}
if(this.hasFSBArmor(player)) {
if(props.getKeyPressed(EnumKeybind.JETPACK)) {
if(props.isJetpackActive()) {
if(player.motionY < 0.4D)
player.motionY += 0.1D;

View File

@ -5,12 +5,9 @@ import java.util.UUID;
import com.google.common.collect.Multimap;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.items.ModItems;
import com.hbm.lib.Library;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.render.model.ModelArmorDNT;
import com.hbm.util.I18nUtil;
@ -77,23 +74,10 @@ public class ArmorDNT extends ArmorFSBPowered {
player.getAttributeMap().applyAttributeModifiers(multimap);
}
if(world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(!world.isRemote) {
/// JET ///
if(this.hasFSBArmor(player) && props.getKeyPressed(EnumKeybind.JETPACK) || (!player.onGround && !player.isSneaking())) {
if(this.hasFSBArmor(player) && (props.isJetpackActive() || (!player.onGround && !player.isSneaking() && props.enableBackpack))) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack_dns");
@ -104,7 +88,7 @@ public class ArmorDNT extends ArmorFSBPowered {
if(this.hasFSBArmor(player)) {
if(props.getKeyPressed(EnumKeybind.JETPACK)) {
if(props.isJetpackActive()) {
if(player.motionY < 0.6D)
player.motionY += 0.2D;
@ -113,7 +97,7 @@ public class ArmorDNT extends ArmorFSBPowered {
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.immolatorShoot", 0.125F, 1.5F);
} else if(!player.isSneaking() && !player.onGround) {
} else if(!player.isSneaking() && !player.onGround && props.enableBackpack) {
player.fallDistance = 0;
if(player.motionY < -1)
@ -125,6 +109,11 @@ public class ArmorDNT extends ArmorFSBPowered {
player.motionX *= 1.05D;
player.motionZ *= 1.05D;
if(player.moveForward != 0) {
player.motionX += player.getLookVec().xCoord * 0.25 * player.moveForward;
player.motionZ += player.getLookVec().zCoord * 0.25 * player.moveForward;
}
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.immolatorShoot", 0.125F, 1.5F);
}

View File

@ -4,10 +4,7 @@ import java.util.List;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -32,61 +29,48 @@ public class JetpackBooster extends JetpackBase {
}
public void onArmorTick(World world, EntityPlayer player, ItemStack stack) {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
data.setInteger("mode", 1);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(!world.isRemote) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
data.setInteger("mode", 1);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
}
}
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
if(player.motionY < 0.6D)
player.motionY += 0.1D;
Vec3 look = player.getLookVec();
if(Vec3.createVectorHelper(player.motionX, player.motionY, player.motionZ).lengthVector() < 5) {
player.motionX += look.xCoord * 0.25;
player.motionY += look.yCoord * 0.25;
player.motionZ += look.zCoord * 0.25;
if(look.yCoord > 0)
player.fallDistance = 0;
}
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.flamethrowerShoot", 0.25F, 1.0F);
this.useUpFuel(player, stack, 1);
}
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
}
list.add("High-powered vectorized jetpack.");
list.add("Highly increased fuel consumption.");
super.addInformation(stack, player, list, ext);
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add("High-powered vectorized jetpack.");
list.add("Highly increased fuel consumption.");
super.addInformation(stack, player, list, ext);
}
}

View File

@ -4,10 +4,7 @@ import java.util.List;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -36,22 +33,9 @@ public class JetpackBreak extends JetpackBase {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(world.isRemote) {
if(!world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(getFuel(stack) > 0 && (props.getKeyPressed(EnumKeybind.JETPACK) || (!player.onGround && !player.isSneaking()))) {
if(getFuel(stack) > 0 && (props.isJetpackActive() || (!player.onGround && !player.isSneaking() && props.enableBackpack))) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
@ -62,7 +46,7 @@ public class JetpackBreak extends JetpackBase {
if(getFuel(stack) > 0) {
if(props.getKeyPressed(EnumKeybind.JETPACK)) {
if(props.isJetpackActive()) {
player.fallDistance = 0;
if(player.motionY < 0.4D)
@ -71,7 +55,7 @@ public class JetpackBreak extends JetpackBase {
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.flamethrowerShoot", 0.25F, 1.5F);
this.useUpFuel(player, stack, 5);
} else if(!player.isSneaking() && !player.onGround) {
} else if(!player.isSneaking() && !player.onGround && props.enableBackpack) {
player.fallDistance = 0;
if(player.motionY < -1)

View File

@ -4,10 +4,7 @@ import java.util.List;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
@ -31,49 +28,36 @@ public class JetpackRegular extends JetpackBase {
}
public void onArmorTick(World world, EntityPlayer player, ItemStack stack) {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(!world.isRemote) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
}
}
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
player.fallDistance = 0;
if(player.motionY < 0.4D)
player.motionY += 0.1D;
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.flamethrowerShoot", 0.25F, 1.5F);
this.useUpFuel(player, stack, 5);
}
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
}
list.add("Regular jetpack for simple upwards momentum.");
super.addInformation(stack, player, list, ext);
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add("Regular jetpack for simple upwards momentum.");
super.addInformation(stack, player, list, ext);
}
}

View File

@ -4,19 +4,14 @@ import java.util.List;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.FluidTypeHandler.FluidType;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.main.MainRegistry;
import com.hbm.packet.AuxParticlePacketNT;
import com.hbm.packet.KeybindPacket;
import com.hbm.packet.PacketDispatcher;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Vec3;
@ -34,61 +29,48 @@ public class JetpackVectorized extends JetpackBase {
}
public void onArmorTick(World world, EntityPlayer player, ItemStack stack) {
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(world.isRemote) {
if(player == MainRegistry.proxy.me()) {
boolean last = props.getKeyPressed(EnumKeybind.JETPACK);
boolean current = MainRegistry.proxy.getIsKeyPressed(EnumKeybind.JETPACK);
if(last != current) {
PacketDispatcher.wrapper.sendToServer(new KeybindPacket(EnumKeybind.JETPACK, current));
props.setKeyPressed(EnumKeybind.JETPACK, current);
}
}
} else {
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
data.setInteger("mode", 1);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
HbmPlayerProps props = HbmPlayerProps.getData(player);
if(!world.isRemote) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
NBTTagCompound data = new NBTTagCompound();
data.setString("type", "jetpack");
data.setInteger("player", player.getEntityId());
data.setInteger("mode", 1);
PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, player.posX, player.posY, player.posZ), new TargetPoint(world.provider.dimensionId, player.posX, player.posY, player.posZ, 100));
}
}
if(getFuel(stack) > 0 && props.getKeyPressed(EnumKeybind.JETPACK)) {
if(getFuel(stack) > 0 && props.isJetpackActive()) {
if(player.motionY < 0.4D)
player.motionY += 0.1D;
Vec3 look = player.getLookVec();
if(Vec3.createVectorHelper(player.motionX, player.motionY, player.motionZ).lengthVector() < 2) {
player.motionX += look.xCoord * 0.1;
player.motionY += look.yCoord * 0.1;
player.motionZ += look.zCoord * 0.1;
if(look.yCoord > 0)
player.fallDistance = 0;
}
world.playSoundEffect(player.posX, player.posY, player.posZ, "hbm:weapon.flamethrowerShoot", 0.25F, 1.5F);
this.useUpFuel(player, stack, 3);
}
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
}
list.add("High-mobility jetpack.");
list.add("Higher fuel consumption.");
super.addInformation(stack, player, list, ext);
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) {
list.add("High-mobility jetpack.");
list.add("Higher fuel consumption.");
super.addInformation(stack, player, list, ext);
}
}

View File

@ -0,0 +1,65 @@
package com.hbm.items.armor;
import com.hbm.items.ModItems;
import com.hbm.render.model.ModelArmorWings;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class WingsMurk extends ItemArmor {
public WingsMurk(ArmorMaterial material) {
super(material, 7, 1);
}
@SideOnly(Side.CLIENT)
ModelArmorWings model;
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) {
if(model == null) {
model = new ModelArmorWings(this == ModItems.wings_murk ? 0 : 1);
}
return model;
}
public void onArmorTick(World world, EntityPlayer player, ItemStack stack) {
if(player.fallDistance > 0)
player.fallDistance = 0;
if(player.motionY < -0.4D)
player.motionY = -0.4D;
if(this == ModItems.wings_limp) {
if(player.isSneaking()) {
if(player.motionY < -0.08) {
double mo = player.motionY * -0.2;
player.motionY += mo;
Vec3 vec = player.getLookVec();
vec.xCoord *= mo;
vec.yCoord *= mo;
vec.zCoord *= mo;
player.motionX += vec.xCoord;
player.motionY += vec.yCoord;
player.motionZ += vec.zCoord;
}
}
}
}
}

View File

@ -7,9 +7,12 @@ import org.lwjgl.input.Mouse;
import com.hbm.config.GeneralConfig;
import com.hbm.entity.projectile.EntityBulletBase;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.BulletConfigSyncingUtil;
import com.hbm.handler.BulletConfiguration;
import com.hbm.handler.GunConfiguration;
import com.hbm.handler.HbmKeybinds;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.interfaces.IHoldableWeapon;
import com.hbm.interfaces.IItemHUD;
import com.hbm.packet.AuxParticlePacketNT;
@ -107,7 +110,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD {
if(mainConfig.reloadType != mainConfig.RELOAD_NONE || (altConfig != null && altConfig.reloadType != 0)) {
if(Keyboard.isKeyDown(Keyboard.KEY_R) && (getMag(stack) < mainConfig.ammoCap || (mainConfig.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0))) {
if(Keyboard.isKeyDown(HbmKeybinds.reloadKey.getKeyCode()) && (getMag(stack) < mainConfig.ammoCap || (mainConfig.allowsInfinity && EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0))) {
PacketDispatcher.wrapper.sendToServer(new GunButtonPacket(true, (byte) 2));
setIsReloading(stack, true);
resetReloadCycle(stack);

View File

@ -23,15 +23,19 @@ public class ItemGunDart extends ItemGunBase implements IDesignatorItem {
if(!stack.hasTagCompound())
stack.stackTagCompound = new NBTTagCompound();
stack.stackTagCompound.setString("player", player.getDisplayName());
stack.stackTagCompound.setLong("lease", player.worldObj.getTotalWorldTime() + 60 * 60 * 20);
}
public static EntityPlayer readPlayer(ItemStack stack) {
public static EntityPlayer readPlayer(World world, ItemStack stack) {
if(!stack.hasTagCompound())
return null;
if(stack.stackTagCompound.getLong("lease") < world.getTotalWorldTime())
return null;
return MinecraftServer.getServer().getConfigurationManager().func_152612_a(stack.stackTagCompound.getString("player"));
}
@ -41,7 +45,7 @@ public class ItemGunDart extends ItemGunBase implements IDesignatorItem {
super.startAction(stack, world, player, main);
} else {
EntityPlayer target = readPlayer(stack);
EntityPlayer target = readPlayer(world, stack);
if(target != null) {
@ -62,13 +66,13 @@ public class ItemGunDart extends ItemGunBase implements IDesignatorItem {
@Override
public boolean isReady(World world, ItemStack stack, int x, int y, int z) {
EntityPlayer target = readPlayer(stack);
EntityPlayer target = readPlayer(world, stack);
return target != null && target.dimension == world.provider.dimensionId;
}
@Override
public Vec3 getCoords(World world, ItemStack stack, int x, int y, int z) {
EntityPlayer target = readPlayer(stack);
EntityPlayer target = readPlayer(world, stack);
return Vec3.createVectorHelper(target.posX, target.posY, target.posZ);
}
}

View File

@ -47,6 +47,7 @@ import com.hbm.entity.mob.botprime.EntityBOTPrimeBody;
import com.hbm.entity.mob.botprime.EntityBOTPrimeHead;
import com.hbm.entity.particle.*;
import com.hbm.entity.projectile.*;
import com.hbm.handler.HbmKeybinds;
import com.hbm.handler.HbmKeybinds.EnumKeybind;
import com.hbm.items.ModItems;
import com.hbm.lib.RefStrings;
@ -1439,9 +1440,13 @@ public class ClientProxy extends ServerProxy {
@Override
public boolean getIsKeyPressed(EnumKeybind key) {
if(key == EnumKeybind.JETPACK)
return Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed();
if(key == EnumKeybind.TOGGLE_JETPACK)
return HbmKeybinds.jetpackKey.getIsKeyPressed();
if(key == EnumKeybind.TOGGLE_HEAD)
return HbmKeybinds.hudKey.getIsKeyPressed();
return false;
}

View File

@ -223,7 +223,7 @@ public class CraftingManager {
GameRegistry.addShapelessRecipe(new ItemStack(ModItems.toothpicks, 3), new Object[] { Items.stick, Items.stick, Items.stick });
GameRegistry.addShapedRecipe(new ItemStack(ModItems.ducttape, 6), new Object[] { "FSF", "SPS", "FSF", 'F', Items.string, 'S', Items.slime_ball, 'P', Items.paper });
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "T T", "PHP", "TFT", 'T', "ingotTungsten", 'P', ModItems.board_copper, 'H', Blocks.hopper, 'F', Blocks.furnace }));
//GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_difurnace_off), 1), new Object[] { "T T", "PHP", "TFT", 'T', "ingotTungsten", 'P', ModItems.board_copper, 'H', Blocks.hopper, 'F', Blocks.furnace }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_uf6_tank), 1), new Object[] { "WTW", "WTW", "SRS", 'S', "plateIron", 'W', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'W', ModItems.coil_tungsten,'R', "ingotRedCopperAlloy" }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_puf6_tank), 1), new Object[] { "WTW", "WTW", "SRS", 'S', "plateSteel", 'W', ModItems.coil_tungsten, 'T', ModItems.tank_steel, 'W', ModItems.coil_tungsten,'R', "ingotRedCopperAlloy" }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.machine_nuke_furnace_off), 1), new Object[] { "SSS", "LFL", "CCC", 'S', "plateSteel", 'C', ModItems.board_copper, 'L', "plateLead", 'F', Item.getItemFromBlock(Blocks.furnace) }));
@ -511,7 +511,7 @@ public class CraftingManager {
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " ", "SAS", 'S', "plateSteel", 'A', "plateAluminum" }));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', "paneGlass", 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockCopper", 'S', "blockSteel" }));
//GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', "paneGlass", 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockCopper", 'S', "blockSteel" }));
GameRegistry.addRecipe(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', new ItemStack(Items.dye, 1, 4), 'B', new ItemStack(Items.dye, 1, 15) });
//GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.turret_control, 1), new Object[] { "R12", "PPI", " I", 'R', Items.redstone, '1', ModItems.circuit_aluminium, '2', ModItems.circuit_red_copper, 'P', "plateSteel", 'I', "ingotSteel" }));
GameRegistry.addRecipe(new ItemStack(ModItems.pellet_antimatter, 1), new Object[] { "###", "###", "###", '#', ModItems.cell_antimatter });

View File

@ -1173,6 +1173,10 @@ public class MainRegistry {
ChunkRadiationManager radiationSystem = new ChunkRadiationManager();
MinecraftForge.EVENT_BUS.register(radiationSystem);
FMLCommonHandler.instance().bus().register(radiationSystem);
HbmKeybinds.register();
HbmKeybinds keyHandler = new HbmKeybinds();
FMLCommonHandler.instance().bus().register(keyHandler);
}
//yes kids, this is where we would usually register commands

View File

@ -41,7 +41,6 @@ import com.hbm.items.armor.ArmorFSB;
import com.hbm.items.armor.ItemArmorMod;
import com.hbm.items.armor.ItemModRevive;
import com.hbm.items.armor.ItemModShackles;
import com.hbm.items.special.ItemHot;
import com.hbm.items.weapon.ItemGunBase;
import com.hbm.lib.Library;
import com.hbm.lib.ModDamageSource;
@ -185,7 +184,7 @@ public class ModEventHandler {
ItemStack stack = event.entityLiving.getEquipmentInSlot(i);
if(stack != null && stack.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(stack)) {
ItemStack revive = ArmorModHandler.pryMods(stack)[ArmorModHandler.extra];
if(revive != null) {
@ -209,8 +208,13 @@ public class ModEventHandler {
//Shackles
if(revive.getItem() instanceof ItemModShackles && HbmLivingProps.getRadiation(event.entityLiving) < 1000F) {
revive.setItemDamage(revive.getItemDamage() + 1);
int dmg = revive.getItemDamage();
ArmorModHandler.applyMod(stack, revive);
event.entityLiving.setHealth(event.entityLiving.getMaxHealth());
HbmLivingProps.incrementRadiation(event.entityLiving, Math.max(HbmLivingProps.getRadiation(event.entityLiving), 10F));
HbmLivingProps.incrementRadiation(event.entityLiving, dmg * dmg);
event.setCanceled(true);
return;
}
@ -1067,86 +1071,21 @@ public class ModEventHandler {
if(event.left.getItem() instanceof ItemGunBase && event.right.getItem() == Items.enchanted_book) {
event.output = event.left.copy();
Map mapright = EnchantmentHelper.getEnchantments(event.right);
Iterator itr = mapright.keySet().iterator();
while (itr.hasNext()) {
int i = ((Integer)itr.next()).intValue();
int j = ((Integer)mapright.get(Integer.valueOf(i))).intValue();
Enchantment e = Enchantment.enchantmentsList[i];
EnchantmentUtil.removeEnchantment(event.output, e);
EnchantmentUtil.addEnchantment(event.output, e, j);
}
event.cost = 10;
}
if(event.left.getItem() == ModItems.ingot_meteorite && event.right.getItem() == ModItems.ingot_meteorite &&
event.left.stackSize == 1 && event.right.stackSize == 1) {
double h1 = ItemHot.getHeat(event.left);
double h2 = ItemHot.getHeat(event.right);
Map mapright = EnchantmentHelper.getEnchantments(event.right);
Iterator itr = mapright.keySet().iterator();
if(h1 >= 0.5 && h2 >= 0.5) {
ItemStack out = new ItemStack(ModItems.ingot_meteorite_forged);
ItemHot.heatUp(out, (h1 + h2) / 2D);
event.output = out;
event.cost = 10;
}
}
if(event.left.getItem() == ModItems.ingot_meteorite_forged && event.right.getItem() == ModItems.ingot_meteorite_forged &&
event.left.stackSize == 1 && event.right.stackSize == 1) {
double h1 = ItemHot.getHeat(event.left);
double h2 = ItemHot.getHeat(event.right);
if(h1 >= 0.5 && h2 >= 0.5) {
ItemStack out = new ItemStack(ModItems.blade_meteorite);
ItemHot.heatUp(out, (h1 + h2) / 2D);
event.output = out;
event.cost = 30;
}
}
if(event.left.getItem() == ModItems.meteorite_sword_seared && event.right.getItem() == ModItems.ingot_meteorite_forged &&
event.left.stackSize == 1 && event.right.stackSize == 1) {
double h2 = ItemHot.getHeat(event.right);
if(h2 >= 0.5) {
ItemStack out = new ItemStack(ModItems.meteorite_sword_reforged);
event.output = out;
event.cost = 50;
}
}
if(event.left.getItem() == ModItems.ingot_steel_dusted && event.right.getItem() == ModItems.ingot_steel_dusted &&
event.left.stackSize == event.right.stackSize) {
double h1 = ItemHot.getHeat(event.left);
double h2 = ItemHot.getHeat(event.right);
if(h2 >= 0.5) {
int i1 = event.left.getItemDamage();
int i2 = event.right.getItemDamage();
while(itr.hasNext()) {
int i3 = Math.min(i1, i2) + 1;
int i = ((Integer) itr.next()).intValue();
int j = ((Integer) mapright.get(Integer.valueOf(i))).intValue();
Enchantment e = Enchantment.enchantmentsList[i];
boolean done = i3 >= 10;
ItemStack out = new ItemStack(done ? ModItems.ingot_chainsteel : ModItems.ingot_steel_dusted, event.left.stackSize, done ? 0 : i3);
ItemHot.heatUp(out, done ? 1D : (h1 + h2) / 2D);
event.output = out;
event.cost = event.left.stackSize;
EnchantmentUtil.removeEnchantment(event.output, e);
EnchantmentUtil.addEnchantment(event.output, e, j);
}
event.cost = 10;
}
}
}

View File

@ -10,6 +10,7 @@ import com.hbm.blocks.generic.BlockAshes;
import com.hbm.entity.mob.EntityHunterChopper;
import com.hbm.entity.projectile.EntityChopperMine;
import com.hbm.extprop.HbmLivingProps;
import com.hbm.extprop.HbmPlayerProps;
import com.hbm.handler.ArmorModHandler;
import com.hbm.handler.HTTPHandler;
import com.hbm.handler.HazmatRegistry;
@ -316,6 +317,9 @@ public class ModEventHandlerClient {
((ItemArmorMod)armor.getItem()).modRender(event, armor);
}
}
if(player.getCurrentArmor(2) == null)
RenderAccessoryUtility.renderSol(event);
}
@SubscribeEvent
@ -617,7 +621,7 @@ public class ModEventHandlerClient {
ItemStack plate = player.inventory.armorInventory[2];
ArmorFSB chestplate = (ArmorFSB) plate.getItem();
if(chestplate.thermal)
if(chestplate.thermal && HbmPlayerProps.getData(player).enableHUD)
RenderOverhead.renderThermalSight(event.partialTicks);
}
}
@ -681,7 +685,7 @@ public class ModEventHandlerClient {
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
if(ArmorFSB.hasFSBArmor(player)) {
if(ArmorFSB.hasFSBArmor(player) && HbmPlayerProps.getData(player).enableHUD) {
ItemStack plate = player.inventory.armorInventory[2];
ArmorFSB chestplate = (ArmorFSB)plate.getItem();

View File

@ -556,6 +556,8 @@ public class ResourceManager {
public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj"));
public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj"));
public static final IModelCustom armor_mod_tesla = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/mod_tesla.obj"));
public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj"));
public static final IModelCustom armor_solstice = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/solstice.obj"));
////Texture Items
@ -652,6 +654,9 @@ public class ResourceManager {
public static final ResourceLocation dnt_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/dnt_arm.png");
public static final ResourceLocation mod_tesla = new ResourceLocation(RefStrings.MODID, "textures/armor/mod_tesla.png");
public static final ResourceLocation wings_murk = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_murk.png");
public static final ResourceLocation wings_solstice = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_solstice.png");
public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png");
public static final ResourceLocation goggles = new ResourceLocation(RefStrings.MODID, "textures/armor/goggles.png");

View File

@ -3,6 +3,7 @@ package com.hbm.packet;
import com.hbm.inventory.AnvilRecipes;
import com.hbm.inventory.AnvilRecipes.AnvilConstructionRecipe;
import com.hbm.inventory.container.ContainerAnvil;
import com.hbm.util.InventoryUtil;
import cpw.mods.fml.common.network.simpleimpl.IMessage;
import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
@ -53,6 +54,19 @@ public class AnvilCraftPacket implements IMessage {
if(!recipe.isTierValid(anvil.tier)) //player is using the wrong type of anvil -> bad
return null;
int count = m.mode == 1 ? 64 : 1;
for(int i = 0; i < count; i++) {
if(InventoryUtil.doesPlayerHaveAStacks(p, recipe.input, true)) {
InventoryUtil.giveChanceStacksToPlayer(p, recipe.output);
} else {
break;
}
}
p.inventoryContainer.detectAndSendChanges();
return null;
}
}

View File

@ -9,56 +9,84 @@ import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class RenderBomber extends Render {
public RenderBomber() { }
public RenderBomber() {
}
@Override
public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) {
public void doRender(Entity entity, double x, double y, double z, float f0, float interp) {
GL11.glPushMatrix();
GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_);
GL11.glRotatef(p_76986_1_.prevRotationYaw + (p_76986_1_.rotationYaw - p_76986_1_.prevRotationYaw) * p_76986_9_ - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90, 0F, 0F, 1F);
GL11.glRotatef(p_76986_1_.prevRotationPitch + (p_76986_1_.rotationPitch - p_76986_1_.prevRotationPitch) * p_76986_9_, 0.0F, 0.0F, 1.0F);
//ayy lmao
//GL11.glRotatef(System.currentTimeMillis() / 5 % 360, 1F, 0F, 0F);
GL11.glTranslatef((float) x, (float) y, (float) z);
GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F);
GL11.glRotatef(90, 0F, 0F, 1F);
GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
int i = p_76986_1_.getDataWatcher().getWatchableObjectByte(16);
switch(i) {
case 0: bindTexture(ResourceManager.dornier_0_tex); break;
case 1: bindTexture(ResourceManager.dornier_1_tex); break;
case 2: bindTexture(ResourceManager.dornier_2_tex); break;
case 3: bindTexture(ResourceManager.dornier_3_tex); break;
case 4: bindTexture(ResourceManager.dornier_4_tex); break;
case 5: bindTexture(ResourceManager.b29_0_tex); break;
case 6: bindTexture(ResourceManager.b29_1_tex); break;
case 7: bindTexture(ResourceManager.b29_2_tex); break;
case 8: bindTexture(ResourceManager.b29_3_tex); break;
default: bindTexture(ResourceManager.dornier_1_tex); break;
}
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_CULL_FACE);
switch(i) {
case 0:
case 1:
case 2:
case 3:
case 4: GL11.glScalef(5F, 5F, 5F); GL11.glRotatef(-90, 0F, 1F, 0F); ResourceManager.dornier.renderAll(); break;
case 5:
case 6:
case 7:
case 8: GL11.glScalef(30F/3.1F, 30F/3.1F, 30F/3.1F); GL11.glRotatef(180, 0F, 1F, 0F); ResourceManager.b29.renderAll(); break;
default: ResourceManager.dornier.renderAll(); break;
}
int i = entity.getDataWatcher().getWatchableObjectByte(16);
switch(i) {
case 0:
bindTexture(ResourceManager.dornier_0_tex);
break;
case 1:
bindTexture(ResourceManager.dornier_1_tex);
break;
case 2:
bindTexture(ResourceManager.dornier_2_tex);
break;
case 3:
bindTexture(ResourceManager.dornier_3_tex);
break;
case 4:
bindTexture(ResourceManager.dornier_4_tex);
break;
case 5:
bindTexture(ResourceManager.b29_0_tex);
break;
case 6:
bindTexture(ResourceManager.b29_1_tex);
break;
case 7:
bindTexture(ResourceManager.b29_2_tex);
break;
case 8:
bindTexture(ResourceManager.b29_3_tex);
break;
default:
bindTexture(ResourceManager.dornier_1_tex);
break;
}
GL11.glRotatef((float) Math.sin((entity.ticksExisted + interp) * 0.05) * 10, 1F, 0F, 0F);
switch(i) {
case 0:
case 1:
case 2:
case 3:
case 4:
GL11.glScalef(5F, 5F, 5F);
GL11.glRotatef(-90, 0F, 1F, 0F);
ResourceManager.dornier.renderAll();
break;
case 5:
case 6:
case 7:
case 8:
GL11.glScalef(30F / 3.1F, 30F / 3.1F, 30F / 3.1F);
GL11.glRotatef(180, 0F, 1F, 0F);
ResourceManager.b29.renderAll();
break;
default:
ResourceManager.dornier.renderAll();
break;
}
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
}

View File

@ -0,0 +1,28 @@
package com.hbm.render.model;
import com.hbm.main.ResourceManager;
import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.util.ResourceLocation;
public class ModelArmorSolstice extends ModelArmorWings {
public ModelArmorSolstice() {
super(0);
wingLB = new ModelRendererObj(ResourceManager.armor_solstice, "WingLB");
wingLT = new ModelRendererObj(ResourceManager.armor_solstice, "WingLT");
wingRB = new ModelRendererObj(ResourceManager.armor_solstice, "WingRB");
wingRT = new ModelRendererObj(ResourceManager.armor_solstice, "WingRT");
}
@Override
protected boolean doesRotateZ() {
return false;
}
@Override
protected ResourceLocation getTexture() {
return ResourceManager.wings_solstice;
}
}

View File

@ -0,0 +1,165 @@
package com.hbm.render.model;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.render.loader.ModelRendererObj;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
public class ModelArmorWings extends ModelArmorBase {
ModelRendererObj wingLB;
ModelRendererObj wingLT;
ModelRendererObj wingRB;
ModelRendererObj wingRT;
public ModelArmorWings(int type) {
super(type);
wingLB = new ModelRendererObj(ResourceManager.armor_wings, "LeftBase");
wingLT = new ModelRendererObj(ResourceManager.armor_wings, "LeftTip");
wingRB = new ModelRendererObj(ResourceManager.armor_wings, "RightBase");
wingRT = new ModelRendererObj(ResourceManager.armor_wings, "RightTip");
//i should really stop doing that
head = new ModelRendererObj(ResourceManager.anvil);
body = new ModelRendererObj(ResourceManager.anvil);
leftArm = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(-5.0F, 2.0F, 0.0F);
rightArm = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(5.0F, 2.0F, 0.0F);
leftLeg = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(1.9F, 12.0F, 0.0F);
rightLeg = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(-1.9F, 12.0F, 0.0F);
leftFoot = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(1.9F, 12.0F, 0.0F);
rightFoot = new ModelRendererObj(ResourceManager.anvil).setRotationPoint(-1.9F, 12.0F, 0.0F);
}
@Override
public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) {
setRotationAngles(par2, par3, par4, par5, par6, par7, entity);
//body.copyTo(wingLB);
//body.copyTo(wingLT);
//body.copyTo(wingRB);
//body.copyTo(wingRT);
GL11.glPushMatrix();
Minecraft.getMinecraft().renderEngine.bindTexture(this.getTexture());
double px = 0.0625D;
double rot = Math.sin((entity.ticksExisted) * 0.2D) * 20;
double rot2 = Math.sin((entity.ticksExisted) * 0.2D - Math.PI * 0.5) * 50 + 35;
int pivotSideOffset = 1;
int pivotFrontOffset = 5;
int pivotZOffset = 3;
int tipSideOffset = 16;
int tipZOffset = 2;
double inwardAngle = 10D;
GL11.glPushMatrix();
GL11.glTranslatef(body.offsetX * (float) px, body.offsetY * (float) px, body.offsetZ * (float) px);
GL11.glTranslatef(body.rotationPointX * (float) px, body.rotationPointY * (float) px, body.rotationPointZ * (float) px);
if(body.rotateAngleZ != 0.0F) {
GL11.glRotatef(body.rotateAngleZ * (180F / (float) Math.PI), 0.0F, 0.0F, 1.0F);
}
if(body.rotateAngleY != 0.0F) {
GL11.glRotatef(body.rotateAngleY * (180F / (float) Math.PI), 0.0F, 1.0F, 0.0F);
}
if(body.rotateAngleX != 0.0F) {
GL11.glRotatef(body.rotateAngleX * (180F / (float) Math.PI), 1.0F, 0.0F, 0.0F);
}
if(this.type == 0 && entity.onGround) {
rot = 20;
rot2 = 160;
}
if(this.type != 0) {
rot = 0;
rot2 = 10;
if(entity.onGround) {
rot = 30;
rot2 = -30;
} else if(entity.motionY < -0.1) {
rot = 0;
rot2 = 10;
} else {
rot = 30;
rot2 = 20;
}
}
GL11.glTranslated(0, -2 * px, 0);
GL11.glEnable(GL11.GL_CULL_FACE);
GL11.glPushMatrix();
GL11.glRotated(-inwardAngle, 0, 1, 0);
GL11.glTranslated(pivotSideOffset * px, pivotFrontOffset * px, pivotZOffset * px);
GL11.glRotated(rot * 0.5, 0, 1, 0);
GL11.glRotated(rot + 5, 0, 0, 1);
GL11.glRotated(45, 1, 0, 0);
GL11.glTranslated(-pivotSideOffset * px, -pivotFrontOffset * px, -pivotZOffset * px);
GL11.glTranslated(pivotSideOffset * px, pivotFrontOffset * px, pivotZOffset * px);
GL11.glRotated(rot, 0, 0, 1);
GL11.glTranslated(-pivotSideOffset * px, -pivotFrontOffset * px, -pivotZOffset * px);
wingLB.render(par7);
GL11.glTranslated(tipSideOffset * px, pivotFrontOffset * px, tipZOffset * px);
GL11.glRotated(rot2, 0, 1, 0);
if(doesRotateZ())
GL11.glRotated(rot2 * 0.25 + 5, 0, 0, 1);
GL11.glTranslated(-tipSideOffset * px, -pivotFrontOffset * px, -tipZOffset * px);
wingLT.render(par7);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glRotated(inwardAngle, 0, 1, 0);
GL11.glTranslated(-pivotSideOffset * px, pivotFrontOffset * px, pivotZOffset * px);
GL11.glRotated(-rot * 0.5, 0, 1, 0);
GL11.glRotated(-rot - 5, 0, 0, 1);
GL11.glRotated(45, 1, 0, 0);
GL11.glTranslated(pivotSideOffset * px, -pivotFrontOffset * px, -pivotZOffset * px);
GL11.glTranslated(-pivotSideOffset * px, pivotFrontOffset * px, pivotZOffset * px);
GL11.glRotated(-rot, 0, 0, 1);
GL11.glTranslated(pivotSideOffset * px, -pivotFrontOffset * px, -pivotZOffset * px);
wingRB.render(par7);
GL11.glTranslated(-tipSideOffset * px, pivotFrontOffset * px, tipZOffset * px);
GL11.glRotated(-rot2, 0, 1, 0);
if(doesRotateZ())
GL11.glRotated(-rot2 * 0.25 - 5, 0, 0, 1);
GL11.glTranslated(tipSideOffset * px, -pivotFrontOffset * px, -tipZOffset * px);
wingRT.render(par7);
GL11.glPopMatrix();
GL11.glDisable(GL11.GL_CULL_FACE);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
protected boolean doesRotateZ() {
return true;
}
protected ResourceLocation getTexture() {
return ResourceManager.wings_murk;
}
}

View File

@ -3,9 +3,14 @@ package com.hbm.render.util;
import com.hbm.lib.Library;
import com.hbm.lib.RefStrings;
import com.hbm.main.MainRegistry;
import com.hbm.render.model.ModelArmorSolstice;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.entity.RenderPlayer;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.RenderPlayerEvent;
public class RenderAccessoryUtility {
@ -117,5 +122,26 @@ public class RenderAccessoryUtility {
return null;
}
private static ModelBiped wingModel;
public static void renderSol(RenderPlayerEvent.SetArmorModel event) {
if(wingModel == null)
wingModel = new ModelArmorSolstice();
RenderPlayer renderer = event.renderer;
ModelBiped model = renderer.modelArmor;
EntityPlayer player = event.entityPlayer;
wingModel.isSneak = model.isSneak;
float interp = event.partialRenderTick;
float yawHead = player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead) * interp;
float yawOffset = player.prevRenderYawOffset + (player.renderYawOffset - player.prevRenderYawOffset) * interp;
float yaw = yawHead - yawOffset;
float yawWrapped = MathHelper.wrapAngleTo180_float(yawHead - yawOffset);
float pitch = player.rotationPitch;
wingModel.render(event.entityPlayer, 0.0F, 0.0F, yawWrapped, yaw, pitch, 0.0625F);
}
}

View File

@ -107,6 +107,9 @@ public class ArmorUtil {
if(checkArmor(player, ModItems.fau_helmet, ModItems.fau_plate, ModItems.fau_legs, ModItems.fau_boots))
return true;
if(checkArmor(player, ModItems.dns_helmet, ModItems.dns_plate, ModItems.dns_legs, ModItems.dns_boots))
return true;
if(player.isPotionActive(HbmPotion.stability.id))
return true;
@ -228,6 +231,12 @@ public class ArmorUtil {
if(checkArmorPiece(player, ModItems.hev_helmet, 3)) {
return true;
}
if(checkArmorPiece(player, ModItems.fau_helmet, 3)) {
return true;
}
if(checkArmorPiece(player, ModItems.dns_helmet, 3)) {
return true;
}
if(checkArmorPiece(player, ModItems.schrabidium_helmet, 3)) {
return true;
}
@ -257,6 +266,12 @@ public class ArmorUtil {
if(checkArmorPiece(player, ModItems.liquidator_helmet, 3))
return true;
if(checkArmorPiece(player, ModItems.fau_helmet, 3))
return true;
if(checkArmorPiece(player, ModItems.dns_helmet, 3))
return true;
if(player.isPotionActive(HbmPotion.mutation))
return true;
@ -308,6 +323,12 @@ public class ArmorUtil {
if(checkArmorPiece(player, ModItems.hev_helmet, 3)) {
return true;
}
if(checkArmorPiece(player, ModItems.fau_helmet, 3)) {
return true;
}
if(checkArmorPiece(player, ModItems.hev_helmet, 3)) {
return true;
}
return false;
}

View File

@ -2,6 +2,7 @@ package com.hbm.util;
import java.util.List;
import com.hbm.inventory.AnvilRecipes.AnvilOutput;
import com.hbm.inventory.RecipesCommon.AStack;
import net.minecraft.entity.player.EntityPlayer;
@ -189,10 +190,89 @@ public class InventoryUtil {
return stack1.getTagCompound().equals(stack2.getTagCompound());
}
public static boolean doesPlayerHaveAStacks(EntityPlayer player, List<AStack> stacks) {
/**
* Checks if a player has matching item stacks in his inventory and removes them if so desired
* @param player
* @param stacks the AStacks (comparable or ore-dicted)
* @param shouldRemove whether it should just return true or false or if a successful check should also remove all the items
* @return whether the player has the required item stacks or not
*/
public static boolean doesPlayerHaveAStacks(EntityPlayer player, List<AStack> stacks, boolean shouldRemove) {
//ItemStack[] inventory TODO
ItemStack[] original = player.inventory.mainInventory;
ItemStack[] inventory = new ItemStack[original.length];
AStack[] input = new AStack[stacks.size()];
return false;
//first we copy the inputs into an array because 1. it's easier to deal with and 2. we can dick around with the stack sized with no repercussions
for(int i = 0; i < input.length; i++) {
input[i] = stacks.get(i).copy();
}
//then we copy the inventory so we can dick around with it as well without making actual modifications to the player's inventory
for(int i = 0; i < original.length; i++) {
if(original[i] != null) {
inventory[i] = original[i].copy();
}
}
//now we go through every ingredient...
for(int i = 0; i < input.length; i++) {
AStack stack = input[i];
//...and compare each ingredient to every stack in the inventory
for(int j = 0; j < inventory.length; j++) {
ItemStack inv = inventory[j];
//we check if it matches but ignore stack size for now
if(stack.matchesRecipe(inv, true)) {
//and NOW we care about the stack size
int size = Math.min(stack.stacksize, inv.stackSize);
stack.stacksize -= size;
inv.stackSize -= size;
//spent stacks are removed from the equation so that we don't cross ourselves later on
if(stack.stacksize <= 0) {
input[i] = null;
break;
}
if(inv.stackSize <= 0) {
inventory[j] = null;
System.out.println("da yis");
}
}
}
}
for(AStack stack : input) {
if(stack != null) {
return false;
}
}
if(shouldRemove) {
for(int i = 0; i < original.length; i++) {
if(inventory[i] != null && inventory[i].stackSize <= 0)
original[i] = null;
else
original[i] = inventory[i];
}
}
return true;
}
public static void giveChanceStacksToPlayer(EntityPlayer player, List<AnvilOutput> stacks) {
for(AnvilOutput out : stacks) {
if(out.chance == 1.0F || player.getRNG().nextFloat() < out.chance) {
if(!player.inventory.addItemStackToInventory(out.stack.copy())) {
player.dropPlayerItemWithRandomChoice(out.stack.copy(), false);
}
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,570 @@
# Blender v2.79 (sub 0) OBJ File: 'solstice.blend'
# www.blender.org
o WingLB
v 1.000000 5.000000 3.000000
v 0.999999 3.000000 3.000000
v 1.000000 5.000000 2.000000
v 0.999999 3.000000 2.000000
v 17.000000 4.999995 3.000000
v 17.000000 2.999995 3.000000
v 17.000000 4.999995 2.000000
v 17.000000 2.999995 2.000000
v 14.999999 4.999996 2.250000
v 17.000000 4.999995 2.250000
v 15.500004 18.499996 2.250000
v 16.500004 18.499996 2.250000
v 14.999999 4.999996 2.750000
v 17.000000 4.999995 2.750000
v 15.500004 18.499996 2.750000
v 16.500004 18.499996 2.750000
v 14.292892 4.292889 2.375000
v 15.707107 5.707102 2.375000
v 5.100508 14.192387 2.375000
v 5.807615 14.899494 2.375000
v 14.292892 4.292889 2.625000
v 15.707107 5.707102 2.625000
v 5.100508 14.192387 2.625000
v 5.807615 14.899494 2.625000
v 1.000000 5.000000 2.500000
v 15.999999 4.999995 2.500000
v 16.000004 17.999996 2.500000
v 6.000003 13.999999 2.500000
v 12.000003 14.999997 2.500000
v 4.000000 7.999999 2.500000
v 1.000000 5.000000 2.500000
v 15.999999 4.999995 2.500000
v 16.000004 17.999996 2.500000
v 6.000003 13.999999 2.500000
v 12.000003 14.999997 2.500000
v 4.000000 7.999999 2.500000
vt -0.000000 0.818182
vt 0.057143 0.939394
vt 0.057143 0.818182
vt 0.057143 0.818182
vt 0.971429 0.939394
vt 0.971429 0.818182
vt 0.000000 0.818182
vt 0.057143 0.939394
vt 0.971429 0.939394
vt 0.971429 0.818182
vt 0.057143 1.000000
vt 0.971429 0.939394
vt 0.057143 0.939394
vt 0.057143 1.000000
vt 0.971429 1.000000
vt 0.971429 0.000000
vt 0.885714 0.818182
vt 1.000000 0.818182
vt 1.000000 0.818182
vt 0.914286 0.000000
vt 0.885714 0.818182
vt 0.857143 0.000000
vt 0.885714 0.000000
vt 0.857143 0.000000
vt 0.857143 0.818182
vt 0.000000 1.000000
vt 0.057143 0.969697
vt 0.000000 0.969697
vt 0.971429 0.000000
vt 0.885714 0.818182
vt 1.000000 0.818182
vt 0.885714 0.818182
vt 0.971429 -0.000000
vt 0.914286 -0.000000
vt 0.857143 0.000000
vt 0.871429 0.818182
vt 0.871429 0.000000
vt 0.871429 0.818182
vt 0.857143 0.000000
vt 0.857143 0.818182
vt 0.057143 0.984848
vt 0.000000 1.000000
vt 0.057143 1.000000
vt 0.857143 0.818182
vt 0.628571 0.212121
vt 0.171429 0.636364
vt 0.857143 0.818182
vt 0.171429 0.636364
vt 0.628571 0.212121
vt -0.000000 0.939394
vt 0.000000 0.939394
vt 0.971429 1.000000
vt 0.914286 -0.000000
vt 0.971429 -0.000000
vt 0.857143 0.818182
vt 0.885714 0.000000
vt 0.057143 1.000000
vt 0.914286 0.000000
vt 1.000000 0.818182
vt 0.857143 0.818182
vt 0.871429 0.000000
vt 0.000000 0.984848
vt 0.000000 0.818182
vt 0.857143 0.030303
vt 0.285714 0.272727
vt 0.857143 0.030303
vt 0.000000 0.818182
vt 0.285714 0.272727
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.0000 -1.0000 0.0000
vn 0.9993 0.0370 0.0000
vn -0.9993 0.0370 0.0000
vn 0.6805 0.7328 0.0000
vn -0.7328 -0.6805 0.0000
vn -0.7071 0.7071 0.0000
s off
f 3/1/1 2/2/1 1/3/1
f 7/4/2 4/5/2 3/6/2
f 5/7/3 8/8/3 7/4/3
f 1/3/4 6/9/4 5/10/4
f 1/11/5 7/12/5 3/13/5
f 6/9/6 4/14/6 8/15/6
f 11/16/2 10/17/2 9/18/2
f 14/19/4 15/20/4 13/21/4
f 16/22/7 10/17/7 12/23/7
f 13/21/8 11/24/8 9/25/8
f 15/26/5 12/27/5 11/28/5
f 19/29/2 18/30/2 17/31/2
f 21/32/4 24/33/4 23/34/4
f 24/35/9 18/36/9 20/37/9
f 21/38/10 19/39/10 17/40/10
f 23/41/11 20/42/11 19/43/11
f 26/44/4 29/45/4 30/46/4
f 32/47/2 36/48/2 35/49/2
f 3/1/1 4/50/1 2/2/1
f 7/4/2 8/8/2 4/5/2
f 5/7/3 6/51/3 8/8/3
f 1/3/4 2/2/4 6/9/4
f 1/11/5 5/52/5 7/12/5
f 6/9/6 2/2/6 4/14/6
f 11/16/2 12/53/2 10/17/2
f 14/19/4 16/54/4 15/20/4
f 16/22/7 14/55/7 10/17/7
f 13/21/8 15/56/8 11/24/8
f 15/26/5 16/57/5 12/27/5
f 19/29/2 20/58/2 18/30/2
f 21/32/4 22/59/4 24/33/4
f 24/35/9 22/60/9 18/36/9
f 21/38/10 23/61/10 19/39/10
f 23/41/11 24/62/11 20/42/11
f 25/63/4 26/44/4 30/46/4
f 26/44/4 27/64/4 29/45/4
f 29/45/4 28/65/4 30/46/4
f 33/66/2 32/47/2 35/49/2
f 32/47/2 31/67/2 36/48/2
f 36/48/2 34/68/2 35/49/2
o WingLT
v 15.000000 5.000000 3.062500
v 15.000000 3.000000 3.062500
v 15.000000 5.000000 2.062500
v 15.000000 3.000000 2.062500
v 31.000000 4.999995 3.062500
v 31.000000 3.999995 3.062500
v 31.000000 4.999995 2.062500
v 31.000000 3.999995 2.062500
v 17.707108 4.292892 2.437500
v 16.292894 5.707107 2.437500
v 26.899498 14.192384 2.437500
v 26.192390 14.899492 2.437500
v 26.192390 14.899492 2.687500
v 26.899498 14.192384 2.687500
v 16.292894 5.707107 2.687500
v 17.707108 4.292892 2.687500
v 16.010000 5.010002 2.562500
v 30.975857 5.009997 2.562500
v 16.010004 17.980001 2.562500
v 25.992420 13.991125 2.562500
v 19.995955 14.990538 2.562500
v 27.991261 7.994596 2.562500
v 16.010000 5.010002 2.562500
v 30.975857 5.009997 2.562500
v 16.010004 17.980001 2.562500
v 25.992420 13.991125 2.562500
v 19.995955 14.990538 2.562500
v 27.991261 7.994596 2.562500
vt 0.000000 0.818182
vt 0.057143 0.939394
vt 0.057143 0.818182
vt 0.971429 0.818182
vt 0.057143 0.878788
vt 0.971429 0.939394
vt 0.000000 0.818182
vt 0.057143 0.818182
vt 0.971429 0.878788
vt 0.971429 0.818182
vt 0.057143 1.000000
vt 0.971429 0.939394
vt 0.057143 0.939394
vt 0.971429 0.939394
vt 0.057143 1.000000
vt 0.971429 1.000000
vt 0.885714 0.818182
vt 0.971429 -0.000000
vt 0.914286 -0.000000
vt 0.057143 0.984848
vt -0.000000 1.000000
vt 0.057143 1.000000
vt 0.871429 0.818182
vt 0.857143 0.000000
vt 0.857143 0.818182
vt 0.000000 1.000000
vt 0.057143 0.984848
vt -0.000000 0.984848
vt 0.857143 -0.000000
vt 0.871429 0.818182
vt 0.871429 -0.000000
vt 0.971429 0.000000
vt 0.885714 0.818182
vt 1.000000 0.818182
vt 0.857143 0.818182
vt 0.171429 0.636364
vt 0.628571 0.212121
vt 0.857143 0.818182
vt 0.628571 0.212121
vt 0.171429 0.636364
vt 0.000000 0.939394
vt 0.000000 0.878788
vt 0.971429 1.000000
vt 1.000000 0.818182
vt -0.000000 0.984848
vt 0.871429 0.000000
vt 0.057143 1.000000
vt 0.857143 0.818182
vt 0.914286 0.000000
vt 0.857143 0.030303
vt 0.000000 0.818182
vt 0.285714 0.272727
vt 0.000000 0.818182
vt 0.857143 0.030303
vt 0.285714 0.272727
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn 0.0624 -0.9981 0.0000
vn -0.7071 -0.7071 0.0000
vn -0.6805 0.7328 0.0000
vn 0.7071 0.7071 0.0000
vn 0.7328 -0.6805 0.0000
s off
f 39/69/12 38/70/12 37/71/12
f 39/72/13 44/73/13 40/74/13
f 41/75/14 44/73/14 43/76/14
f 37/71/15 42/77/15 41/78/15
f 37/79/16 43/80/16 39/81/16
f 42/82/17 40/83/17 44/84/17
f 45/85/13 48/86/13 47/87/13
f 52/88/18 46/89/18 45/90/18
f 51/91/19 48/92/19 46/93/19
f 49/94/20 47/95/20 48/96/20
f 50/97/21 45/98/21 47/99/21
f 50/100/15 51/101/15 52/102/15
f 53/103/15 58/104/15 57/105/15
f 59/106/13 63/107/13 64/108/13
f 39/69/12 40/109/12 38/70/12
f 39/72/13 43/76/13 44/73/13
f 41/75/14 42/110/14 44/73/14
f 37/71/15 38/70/15 42/77/15
f 37/79/16 41/111/16 43/80/16
f 42/82/17 38/70/17 40/83/17
f 45/85/13 46/112/13 48/86/13
f 52/88/18 51/113/18 46/89/18
f 51/91/19 49/114/19 48/92/19
f 49/94/20 50/115/20 47/95/20
f 50/97/21 52/116/21 45/98/21
f 50/100/15 49/117/15 51/101/15
f 55/118/15 53/103/15 57/105/15
f 53/103/15 54/119/15 58/104/15
f 58/104/15 56/120/15 57/105/15
f 60/121/13 59/106/13 64/108/13
f 59/106/13 61/122/13 63/107/13
f 63/107/13 62/123/13 64/108/13
o WingRT
v -15.000000 5.000001 3.062500
v -15.000000 3.000001 3.062500
v -15.000000 5.000001 2.062500
v -15.000000 3.000001 2.062500
v -31.000000 5.000007 3.062500
v -31.000000 4.000007 3.062500
v -31.000000 5.000007 2.062500
v -31.000000 4.000007 2.062500
v -17.707108 4.292896 2.437500
v -16.292892 5.707109 2.437500
v -26.899492 14.192393 2.437500
v -26.192383 14.899500 2.437500
v -26.192383 14.899500 2.687500
v -26.899492 14.192393 2.687500
v -16.292892 5.707109 2.687500
v -17.707108 4.292896 2.687500
v -16.010000 5.010004 2.562500
v -30.975857 5.010009 2.562500
v -16.009995 17.980003 2.562500
v -25.992414 13.991133 2.562500
v -19.995947 14.990541 2.562500
v -27.991259 7.994606 2.562500
v -16.010000 5.010004 2.562500
v -30.975857 5.010009 2.562500
v -16.009995 17.980003 2.562500
v -25.992414 13.991133 2.562500
v -19.995947 14.990541 2.562500
v -27.991259 7.994606 2.562500
vt 0.057143 0.939394
vt 0.000000 0.818182
vt 0.057143 0.818182
vt 0.971429 0.818182
vt 0.057143 0.878788
vt 0.057143 0.818182
vt 0.000000 0.818182
vt 0.971429 0.878788
vt 0.971429 0.818182
vt 0.971429 0.939394
vt 0.057143 1.000000
vt 0.057143 0.939394
vt 0.057143 1.000000
vt 0.971429 0.939394
vt 0.971429 1.000000
vt 0.914286 -0.000000
vt 1.000000 0.818182
vt 0.885714 0.818182
vt -0.000000 1.000000
vt 0.057143 0.984848
vt 0.057143 1.000000
vt 0.857143 0.000000
vt 0.871429 0.818182
vt 0.857143 0.818182
vt 0.057143 0.984848
vt 0.000000 1.000000
vt -0.000000 0.984848
vt 0.871429 0.818182
vt 0.857143 -0.000000
vt 0.871429 -0.000000
vt 1.000000 0.818182
vt 0.914286 0.000000
vt 0.971429 0.000000
vt 0.857143 0.818182
vt 0.628571 0.212121
vt 0.171429 0.636364
vt 0.857143 0.818182
vt 0.171429 0.636364
vt 0.628571 0.212121
vt 0.000000 0.939394
vt 0.971429 0.939394
vt 0.000000 0.878788
vt 0.971429 1.000000
vt 0.971429 -0.000000
vt -0.000000 0.984848
vt 0.871429 0.000000
vt 0.057143 1.000000
vt 0.857143 0.818182
vt 0.885714 0.818182
vt 0.000000 0.818182
vt 0.857143 0.030303
vt 0.285714 0.272727
vt 0.857143 0.030303
vt 0.000000 0.818182
vt 0.285714 0.272727
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn -0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.0624 -0.9981 0.0000
vn 0.7071 -0.7071 0.0000
vn 0.6805 0.7328 0.0000
vn -0.7071 0.7071 0.0000
vn -0.7328 -0.6805 0.0000
s off
f 66/124/22 67/125/22 65/126/22
f 67/127/23 72/128/23 71/129/23
f 72/128/24 69/130/24 71/129/24
f 70/131/25 65/126/25 69/132/25
f 71/133/26 65/134/26 67/135/26
f 68/136/27 70/137/27 72/138/27
f 75/139/23 74/140/23 73/141/23
f 74/142/28 80/143/28 73/144/28
f 76/145/29 79/146/29 74/147/29
f 75/148/30 77/149/30 76/150/30
f 73/151/31 78/152/31 75/153/31
f 80/154/25 77/155/25 78/156/25
f 81/157/25 85/158/25 86/159/25
f 87/160/23 92/161/23 91/162/23
f 66/124/22 68/163/22 67/125/22
f 67/127/23 68/164/23 72/128/23
f 72/128/24 70/165/24 69/130/24
f 70/131/25 66/124/25 65/126/25
f 71/133/26 69/166/26 65/134/26
f 68/136/27 66/124/27 70/137/27
f 75/139/23 76/167/23 74/140/23
f 74/142/28 79/168/28 80/143/28
f 76/145/29 77/169/29 79/146/29
f 75/148/30 78/170/30 77/149/30
f 73/151/31 80/171/31 78/152/31
f 80/154/25 79/172/25 77/155/25
f 82/173/25 81/157/25 86/159/25
f 81/157/25 83/174/25 85/158/25
f 85/158/25 84/175/25 86/159/25
f 89/176/23 87/160/23 91/162/23
f 87/160/23 88/177/23 92/161/23
f 92/161/23 90/178/23 91/162/23
o WingRB
v -1.000001 5.000000 3.000000
v -1.000001 3.000000 3.000000
v -1.000001 5.000000 2.000000
v -1.000001 3.000000 2.000000
v -17.000000 5.000005 3.000000
v -17.000000 3.000005 3.000000
v -17.000000 5.000005 2.000000
v -17.000000 3.000005 2.000000
v -15.000001 5.000004 2.250000
v -17.000000 5.000005 2.250000
v -15.499996 18.500004 2.250000
v -16.499996 18.500004 2.250000
v -15.000001 5.000004 2.750000
v -17.000000 5.000005 2.750000
v -15.499996 18.500004 2.750000
v -16.499996 18.500004 2.750000
v -14.292894 4.292897 2.375000
v -15.707107 5.707111 2.375000
v -5.100502 14.192389 2.375000
v -5.807610 14.899496 2.375000
v -14.292894 4.292897 2.625000
v -15.707107 5.707111 2.625000
v -5.100502 14.192389 2.625000
v -5.807610 14.899496 2.625000
v -1.000001 5.000000 2.500000
v -16.000000 5.000005 2.500000
v -15.999996 18.000004 2.500000
v -5.999998 14.000001 2.500000
v -11.999997 15.000003 2.500000
v -4.000000 8.000000 2.500000
v -1.000001 5.000000 2.500000
v -16.000000 5.000005 2.500000
v -15.999996 18.000004 2.500000
v -5.999998 14.000001 2.500000
v -11.999997 15.000003 2.500000
v -4.000000 8.000000 2.500000
vt 0.057143 0.939394
vt -0.000000 0.818182
vt 0.057143 0.818182
vt 0.971429 0.939394
vt 0.057143 0.818182
vt 0.971429 0.818182
vt 0.057143 0.939394
vt 0.000000 0.818182
vt 0.971429 0.939394
vt 0.971429 0.818182
vt 0.971429 0.939394
vt 0.057143 1.000000
vt 0.057143 0.939394
vt 0.057143 1.000000
vt 0.971429 1.000000
vt 0.885714 0.818182
vt 0.971429 0.000000
vt 1.000000 0.818182
vt 0.914286 0.000000
vt 1.000000 0.818182
vt 0.885714 0.818182
vt 0.857143 0.000000
vt 0.885714 0.000000
vt 0.857143 0.000000
vt 0.857143 0.818182
vt 0.057143 0.969697
vt 0.000000 1.000000
vt 0.000000 0.969697
vt 1.000000 0.818182
vt 0.914286 0.000000
vt 0.971429 0.000000
vt 0.914286 -0.000000
vt 1.000000 0.818182
vt 0.885714 0.818182
vt 0.871429 0.818182
vt 0.857143 0.000000
vt 0.871429 0.000000
vt 0.857143 0.000000
vt 0.871429 0.818182
vt 0.857143 0.818182
vt 0.000000 1.000000
vt 0.057143 0.984848
vt 0.057143 1.000000
vt 0.857143 0.818182
vt 0.171429 0.636364
vt 0.628571 0.212121
vt 0.857143 0.818182
vt 0.628571 0.212121
vt 0.171429 0.636364
vt -0.000000 0.939394
vt 0.000000 0.939394
vt 0.971429 1.000000
vt 0.914286 -0.000000
vt 0.971429 -0.000000
vt 0.857143 0.818182
vt 0.885714 0.000000
vt 0.057143 1.000000
vt 0.885714 0.818182
vt 0.971429 -0.000000
vt 0.857143 0.818182
vt 0.871429 0.000000
vt 0.000000 0.984848
vt 0.857143 0.030303
vt 0.000000 0.818182
vt 0.285714 0.272727
vt 0.000000 0.818182
vt 0.857143 0.030303
vt 0.285714 0.272727
vn 1.0000 -0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 0.0000 1.0000
vn 0.0000 1.0000 0.0000
vn -0.0000 -1.0000 0.0000
vn -0.9993 0.0370 0.0000
vn 0.9993 0.0370 0.0000
vn -0.6805 0.7328 0.0000
vn 0.7328 -0.6805 0.0000
vn 0.7071 0.7071 0.0000
s off
f 94/179/32 95/180/32 93/181/32
f 96/182/33 99/183/33 95/184/33
f 100/185/34 97/186/34 99/183/34
f 98/187/35 93/181/35 97/188/35
f 99/189/36 93/190/36 95/191/36
f 96/192/37 98/187/37 100/193/37
f 102/194/33 103/195/33 101/196/33
f 107/197/35 106/198/35 105/199/35
f 102/194/38 108/200/38 104/201/38
f 103/202/39 105/199/39 101/203/39
f 104/204/36 107/205/36 103/206/36
f 109/207/33 112/208/33 111/209/33
f 115/210/35 114/211/35 113/212/35
f 110/213/40 116/214/40 112/215/40
f 111/216/41 113/217/41 109/218/41
f 112/219/42 115/220/42 111/221/42
f 118/222/35 122/223/35 121/224/35
f 124/225/33 127/226/33 128/227/33
f 94/179/32 96/228/32 95/180/32
f 96/182/33 100/185/33 99/183/33
f 100/185/34 98/229/34 97/186/34
f 98/187/35 94/179/35 93/181/35
f 99/189/36 97/230/36 93/190/36
f 96/192/37 94/179/37 98/187/37
f 102/194/33 104/231/33 103/195/33
f 107/197/35 108/232/35 106/198/35
f 102/194/38 106/233/38 108/200/38
f 103/202/39 107/234/39 105/199/39
f 104/204/36 108/235/36 107/205/36
f 109/207/33 110/236/33 112/208/33
f 115/210/35 116/237/35 114/211/35
f 110/213/40 114/238/40 116/214/40
f 111/216/41 115/239/41 113/217/41
f 112/219/42 116/240/42 115/220/42
f 119/241/35 118/222/35 121/224/35
f 118/222/35 117/242/35 122/223/35
f 122/223/35 120/243/35 121/224/35
f 123/244/33 124/225/33 128/227/33
f 124/225/33 125/245/33 127/226/33
f 127/226/33 126/246/33 128/227/33

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B