mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
those floppy boys that avians have
This commit is contained in:
parent
b1382eaac2
commit
f98b0572b2
@ -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 });
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
41
src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java
Normal file
41
src/main/java/com/hbm/inventory/AnvilSmithingHotRecipe.java
Normal 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();
|
||||
}
|
||||
}
|
||||
60
src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java
Normal file
60
src/main/java/com/hbm/inventory/AnvilSmithingRecipe.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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));
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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());
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
65
src/main/java/com/hbm/items/armor/WingsMurk.java
Normal file
65
src/main/java/com/hbm/items/armor/WingsMurk.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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 });
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
|
||||
|
||||
28
src/main/java/com/hbm/render/model/ModelArmorSolstice.java
Normal file
28
src/main/java/com/hbm/render/model/ModelArmorSolstice.java
Normal 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;
|
||||
}
|
||||
}
|
||||
165
src/main/java/com/hbm/render/model/ModelArmorWings.java
Normal file
165
src/main/java/com/hbm/render/model/ModelArmorWings.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1308
src/main/resources/assets/hbm/models/armor/murk.obj
Normal file
1308
src/main/resources/assets/hbm/models/armor/murk.obj
Normal file
File diff suppressed because it is too large
Load Diff
570
src/main/resources/assets/hbm/models/armor/solstice.obj
Normal file
570
src/main/resources/assets/hbm/models/armor/solstice.obj
Normal 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
|
||||
BIN
src/main/resources/assets/hbm/textures/armor/wings_murk.png
Normal file
BIN
src/main/resources/assets/hbm/textures/armor/wings_murk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 391 B |
BIN
src/main/resources/assets/hbm/textures/armor/wings_solstice.png
Normal file
BIN
src/main/resources/assets/hbm/textures/armor/wings_solstice.png
Normal file
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 |
BIN
src/main/resources/assets/hbm/textures/items/wings_limp.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/wings_limp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 351 B |
BIN
src/main/resources/assets/hbm/textures/items/wings_murk.png
Normal file
BIN
src/main/resources/assets/hbm/textures/items/wings_murk.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 343 B |
Loading…
x
Reference in New Issue
Block a user