Added boats for BOP wood types (Closes #716)
|
@ -48,6 +48,23 @@ public class BOPItems
|
|||
public static Item pinecone;
|
||||
public static Item other_slab;
|
||||
|
||||
public static Item boat_sacred_oak;
|
||||
public static Item boat_cherry;
|
||||
public static Item boat_umbran;
|
||||
public static Item boat_fir;
|
||||
public static Item boat_ethereal;
|
||||
public static Item boat_magic;
|
||||
public static Item boat_mangrove;
|
||||
public static Item boat_palm;
|
||||
public static Item boat_redwood;
|
||||
public static Item boat_willow;
|
||||
public static Item boat_pine;
|
||||
public static Item boat_hellbark;
|
||||
public static Item boat_jacaranda;
|
||||
public static Item boat_mahogany;
|
||||
public static Item boat_ebony;
|
||||
public static Item boat_eucalyptus;
|
||||
|
||||
public static Item sacred_oak_door;
|
||||
public static Item cherry_door;
|
||||
public static Item umbran_door;
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2015-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.entities.item;
|
||||
|
||||
import net.minecraft.client.model.IMultipassModel;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.model.ModelRenderer;
|
||||
import net.minecraft.client.renderer.GLAllocation;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class ModelBOPBoat extends ModelBase implements IMultipassModel
|
||||
{
|
||||
public ModelRenderer[] boatSides = new ModelRenderer[5];
|
||||
public ModelRenderer[] paddles = new ModelRenderer[2];
|
||||
public ModelRenderer noWater;
|
||||
private final int patchList = GLAllocation.generateDisplayLists(1);
|
||||
|
||||
public ModelBOPBoat()
|
||||
{
|
||||
this.boatSides[0] = (new ModelRenderer(this, 0, 0)).setTextureSize(128, 64);
|
||||
this.boatSides[1] = (new ModelRenderer(this, 0, 19)).setTextureSize(128, 64);
|
||||
this.boatSides[2] = (new ModelRenderer(this, 0, 27)).setTextureSize(128, 64);
|
||||
this.boatSides[3] = (new ModelRenderer(this, 0, 35)).setTextureSize(128, 64);
|
||||
this.boatSides[4] = (new ModelRenderer(this, 0, 43)).setTextureSize(128, 64);
|
||||
int i = 32;
|
||||
int j = 6;
|
||||
int k = 20;
|
||||
int l = 4;
|
||||
int i1 = 28;
|
||||
this.boatSides[0].addBox(-14.0F, -9.0F, -3.0F, 28, 16, 3, 0.0F);
|
||||
this.boatSides[0].setRotationPoint(0.0F, 3.0F, 1.0F);
|
||||
this.boatSides[1].addBox(-13.0F, -7.0F, -1.0F, 18, 6, 2, 0.0F);
|
||||
this.boatSides[1].setRotationPoint(-15.0F, 4.0F, 4.0F);
|
||||
this.boatSides[2].addBox(-8.0F, -7.0F, -1.0F, 16, 6, 2, 0.0F);
|
||||
this.boatSides[2].setRotationPoint(15.0F, 4.0F, 0.0F);
|
||||
this.boatSides[3].addBox(-14.0F, -7.0F, -1.0F, 28, 6, 2, 0.0F);
|
||||
this.boatSides[3].setRotationPoint(0.0F, 4.0F, -9.0F);
|
||||
this.boatSides[4].addBox(-14.0F, -7.0F, -1.0F, 28, 6, 2, 0.0F);
|
||||
this.boatSides[4].setRotationPoint(0.0F, 4.0F, 9.0F);
|
||||
this.boatSides[0].rotateAngleX = ((float)Math.PI / 2F);
|
||||
this.boatSides[1].rotateAngleY = ((float)Math.PI * 3F / 2F);
|
||||
this.boatSides[2].rotateAngleY = ((float)Math.PI / 2F);
|
||||
this.boatSides[3].rotateAngleY = (float)Math.PI;
|
||||
this.paddles[0] = this.makePaddle(true);
|
||||
this.paddles[0].setRotationPoint(3.0F, -5.0F, 9.0F);
|
||||
this.paddles[1] = this.makePaddle(false);
|
||||
this.paddles[1].setRotationPoint(3.0F, -5.0F, -9.0F);
|
||||
this.paddles[1].rotateAngleY = (float)Math.PI;
|
||||
this.paddles[0].rotateAngleZ = 0.19634955F;
|
||||
this.paddles[1].rotateAngleZ = 0.19634955F;
|
||||
this.noWater = (new ModelRenderer(this, 0, 0)).setTextureSize(128, 64);
|
||||
this.noWater.addBox(-14.0F, -9.0F, -3.0F, 28, 16, 3, 0.0F);
|
||||
this.noWater.setRotationPoint(0.0F, -3.0F, 1.0F);
|
||||
this.noWater.rotateAngleX = ((float)Math.PI / 2F);
|
||||
}
|
||||
|
||||
public void render(Entity entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scale)
|
||||
{
|
||||
GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
EntityBOPBoat entitybopboat = (EntityBOPBoat)entityIn;
|
||||
this.setRotationAngles(limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch, scale, entityIn);
|
||||
|
||||
for (int i = 0; i < 5; ++i)
|
||||
{
|
||||
this.boatSides[i].render(scale);
|
||||
}
|
||||
|
||||
this.renderPaddle(entitybopboat, 0, scale, limbSwing);
|
||||
this.renderPaddle(entitybopboat, 1, scale, limbSwing);
|
||||
}
|
||||
|
||||
public void renderMultipass(Entity p_187054_1_, float p_187054_2_, float p_187054_3_, float p_187054_4_, float p_187054_5_, float p_187054_6_, float scale)
|
||||
{
|
||||
GlStateManager.rotate(90.0F, 0.0F, 1.0F, 0.0F);
|
||||
GlStateManager.colorMask(false, false, false, false);
|
||||
this.noWater.render(scale);
|
||||
GlStateManager.colorMask(true, true, true, true);
|
||||
}
|
||||
|
||||
protected ModelRenderer makePaddle(boolean p_187056_1_)
|
||||
{
|
||||
ModelRenderer modelrenderer = (new ModelRenderer(this, 62, p_187056_1_ ? 0 : 20)).setTextureSize(128, 64);
|
||||
int i = 20;
|
||||
int j = 7;
|
||||
int k = 6;
|
||||
float f = -5.0F;
|
||||
modelrenderer.addBox(-1.0F, 0.0F, -5.0F, 2, 2, 18);
|
||||
modelrenderer.addBox(p_187056_1_ ? -1.001F : 0.001F, -3.0F, 8.0F, 1, 6, 7);
|
||||
return modelrenderer;
|
||||
}
|
||||
|
||||
protected void renderPaddle(EntityBOPBoat boat, int paddle, float scale, float limbSwing)
|
||||
{
|
||||
float f = boat.getRowingTime(paddle, limbSwing);
|
||||
ModelRenderer modelrenderer = this.paddles[paddle];
|
||||
modelrenderer.rotateAngleX = (float)MathHelper.clampedLerp(-1.0471975803375244D, -0.2617993950843811D, (double)((MathHelper.sin(-f) + 1.0F) / 2.0F));
|
||||
modelrenderer.rotateAngleY = (float)MathHelper.clampedLerp(-(Math.PI / 4D), (Math.PI / 4D), (double)((MathHelper.sin(-f + 1.0F) + 1.0F) / 2.0F));
|
||||
|
||||
if (paddle == 1)
|
||||
{
|
||||
modelrenderer.rotateAngleY = (float)Math.PI - modelrenderer.rotateAngleY;
|
||||
}
|
||||
|
||||
modelrenderer.render(scale);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,109 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2015-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.entities.item;
|
||||
|
||||
import net.minecraft.client.model.IMultipassModel;
|
||||
import net.minecraft.client.model.ModelBase;
|
||||
import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.entity.Render;
|
||||
import net.minecraft.client.renderer.entity.RenderManager;
|
||||
import net.minecraft.entity.item.EntityBoat;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderBOPBoat extends Render<EntityBOPBoat>
|
||||
{
|
||||
private static final ResourceLocation[] BOAT_TEXTURES = new ResourceLocation[] {new ResourceLocation("biomesoplenty:textures/entity/boats/boat_sacred_oak.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_cherry.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_umbran.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_fir.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_ethereal.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_magic.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_mangrove.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_palm.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_redwood.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_willow.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_pine.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_hellbark.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_jacaranda.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_mahogany.png"),
|
||||
new ResourceLocation("biomesoplenty:textures/entity/boats/boat_ebony.png"), new ResourceLocation("biomesoplenty:textures/entity/boats/boat_eucalyptus.png")};
|
||||
protected ModelBase modelBOPBoat = new ModelBOPBoat();
|
||||
|
||||
public RenderBOPBoat(RenderManager renderManagerIn)
|
||||
{
|
||||
super(renderManagerIn);
|
||||
this.shadowSize = 0.5F;
|
||||
}
|
||||
|
||||
public void doRender(EntityBOPBoat entity, double x, double y, double z, float entityYaw, float partialTicks)
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
this.setupTranslation(x, y, z);
|
||||
this.setupRotation(entity, entityYaw, partialTicks);
|
||||
this.bindEntityTexture(entity);
|
||||
|
||||
if (this.renderOutlines)
|
||||
{
|
||||
GlStateManager.enableColorMaterial();
|
||||
GlStateManager.enableOutlineMode(this.getTeamColor(entity));
|
||||
}
|
||||
|
||||
this.modelBOPBoat.render(entity, partialTicks, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
|
||||
|
||||
if (this.renderOutlines)
|
||||
{
|
||||
GlStateManager.disableOutlineMode();
|
||||
GlStateManager.disableColorMaterial();
|
||||
}
|
||||
|
||||
GlStateManager.popMatrix();
|
||||
super.doRender(entity, x, y, z, entityYaw, partialTicks);
|
||||
}
|
||||
|
||||
public void setupRotation(EntityBOPBoat p_188311_1_, float p_188311_2_, float p_188311_3_)
|
||||
{
|
||||
GlStateManager.rotate(180.0F - p_188311_2_, 0.0F, 1.0F, 0.0F);
|
||||
float f = (float)p_188311_1_.getTimeSinceHit() - p_188311_3_;
|
||||
float f1 = p_188311_1_.getDamageTaken() - p_188311_3_;
|
||||
|
||||
if (f1 < 0.0F)
|
||||
{
|
||||
f1 = 0.0F;
|
||||
}
|
||||
|
||||
if (f > 0.0F)
|
||||
{
|
||||
GlStateManager.rotate(MathHelper.sin(f) * f * f1 / 10.0F * (float)p_188311_1_.getForwardDirection(), 1.0F, 0.0F, 0.0F);
|
||||
}
|
||||
|
||||
GlStateManager.scale(-1.0F, -1.0F, 1.0F);
|
||||
}
|
||||
|
||||
public void setupTranslation(double p_188309_1_, double p_188309_3_, double p_188309_5_)
|
||||
{
|
||||
GlStateManager.translate((float)p_188309_1_, (float)p_188309_3_ + 0.375F, (float)p_188309_5_);
|
||||
}
|
||||
|
||||
protected ResourceLocation getEntityTexture(EntityBOPBoat entity)
|
||||
{
|
||||
return BOAT_TEXTURES[entity.getBOPBoatType().ordinal()];
|
||||
}
|
||||
|
||||
public boolean isMultipass()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void renderMultipass(EntityBOPBoat p_188300_1_, double p_188300_2_, double p_188300_4_, double p_188300_6_, float p_188300_8_, float p_188300_9_)
|
||||
{
|
||||
GlStateManager.pushMatrix();
|
||||
this.setupTranslation(p_188300_2_, p_188300_4_, p_188300_6_);
|
||||
this.setupRotation(p_188300_1_, p_188300_8_, p_188300_9_);
|
||||
this.bindEntityTexture(p_188300_1_);
|
||||
((IMultipassModel)this.modelBOPBoat).renderMultipass(p_188300_1_, p_188300_9_, 0.0F, -0.1F, 0.0F, 0.0F, 0.0625F);
|
||||
GlStateManager.popMatrix();
|
||||
}
|
||||
}
|
|
@ -11,6 +11,7 @@ package biomesoplenty.common.init;
|
|||
import biomesoplenty.common.command.BOPCommand;
|
||||
import biomesoplenty.common.entities.EntityPixie;
|
||||
import biomesoplenty.common.entities.EntityWasp;
|
||||
import biomesoplenty.common.entities.item.EntityBOPBoat;
|
||||
import biomesoplenty.common.entities.projectiles.EntityMudball;
|
||||
import biomesoplenty.core.BiomesOPlenty;
|
||||
import net.minecraft.entity.Entity;
|
||||
|
@ -30,6 +31,9 @@ public class ModEntities
|
|||
// projectiles
|
||||
registerBOPEntity(EntityMudball.class, "mudball", 64, 10, true);
|
||||
|
||||
// item entities
|
||||
registerBOPEntity(EntityBOPBoat.class, "bop_boat", 80, 3, true);
|
||||
|
||||
// mobs
|
||||
registerBOPEntityWithSpawnEgg(EntityWasp.class, "wasp", 80, 3, true, 0xE5B013, 0x333234);
|
||||
registerBOPEntityWithSpawnEgg(EntityPixie.class, "pixie", 80, 3, true, 0xFF99E9, 0xFFFFFF);
|
||||
|
|
|
@ -15,6 +15,22 @@ import static biomesoplenty.api.item.BOPItems.biome_essence;
|
|||
import static biomesoplenty.api.item.BOPItems.biome_finder;
|
||||
import static biomesoplenty.api.item.BOPItems.black_dye;
|
||||
import static biomesoplenty.api.item.BOPItems.blue_dye;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_cherry;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_ebony;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_ethereal;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_eucalyptus;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_fir;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_hellbark;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_jacaranda;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_magic;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_mahogany;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_mangrove;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_palm;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_pine;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_redwood;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_sacred_oak;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_umbran;
|
||||
import static biomesoplenty.api.item.BOPItems.boat_willow;
|
||||
import static biomesoplenty.api.item.BOPItems.brown_dye;
|
||||
import static biomesoplenty.api.item.BOPItems.crystal_shard;
|
||||
import static biomesoplenty.api.item.BOPItems.earth;
|
||||
|
@ -47,7 +63,9 @@ import static biomesoplenty.api.item.BOPItems.white_dye;
|
|||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import biomesoplenty.api.sound.BOPSounds;
|
||||
import biomesoplenty.common.command.BOPCommand;
|
||||
import biomesoplenty.common.entities.item.EntityBOPBoat;
|
||||
import biomesoplenty.common.item.ItemAmbrosia;
|
||||
import biomesoplenty.common.item.ItemBOPBoat;
|
||||
import biomesoplenty.common.item.ItemBOPFood;
|
||||
import biomesoplenty.common.item.ItemBOPRecord;
|
||||
import biomesoplenty.common.item.ItemBiomeEssence;
|
||||
|
@ -69,7 +87,6 @@ import net.minecraft.item.ItemSoup;
|
|||
import net.minecraft.potion.PotionEffect;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
|
||||
public class ModItems
|
||||
{
|
||||
|
@ -83,6 +100,23 @@ public class ModItems
|
|||
jar_filled = registerItem(new ItemJarFilled(), "jar_filled");
|
||||
jar_empty = registerItem(new ItemJarEmpty(), "jar_empty");
|
||||
|
||||
boat_sacred_oak = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.SACRED_OAK), "boat_sacred_oak");
|
||||
boat_cherry = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.CHERRY), "boat_cherry");
|
||||
boat_umbran = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.UMBRAN), "boat_umbran");
|
||||
boat_fir = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.FIR), "boat_fir");
|
||||
boat_ethereal = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.ETHEREAL), "boat_ethereal");
|
||||
boat_magic = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MAGIC), "boat_magic");
|
||||
boat_mangrove = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MANGROVE), "boat_mangrove");
|
||||
boat_palm = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.PALM), "boat_palm");
|
||||
boat_redwood = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.REDWOOD), "boat_redwood");
|
||||
boat_willow = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.WILLOW), "boat_willow");
|
||||
boat_pine = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.PINE), "boat_pine");
|
||||
boat_hellbark = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.HELLBARK), "boat_hellbark");
|
||||
boat_jacaranda = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.JACARANDA), "boat_jacaranda");
|
||||
boat_mahogany = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.MAHOGANY), "boat_mahogany");
|
||||
boat_ebony = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.EBONY), "boat_ebony");
|
||||
boat_eucalyptus = registerItem(new ItemBOPBoat(EntityBOPBoat.Type.EUCALYPTUS), "boat_eucalyptus");
|
||||
|
||||
biome_finder = registerItem(new ItemBiomeFinder(), "biome_finder");
|
||||
flower_basket = registerItem(new ItemFlowerBasket(), "flower_basket");
|
||||
|
||||
|
|
|
@ -0,0 +1,125 @@
|
|||
/*******************************************************************************
|
||||
* Copyright 2014-2016, the Biomes O' Plenty Team
|
||||
*
|
||||
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
|
||||
*
|
||||
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
|
||||
******************************************************************************/
|
||||
|
||||
package biomesoplenty.common.item;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import biomesoplenty.common.entities.item.EntityBOPBoat;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.stats.StatList;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.RayTraceResult;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
public class ItemBOPBoat extends Item
|
||||
{
|
||||
private final EntityBOPBoat.Type type;
|
||||
|
||||
public ItemBOPBoat(EntityBOPBoat.Type typeIn)
|
||||
{
|
||||
this.type = typeIn;
|
||||
this.maxStackSize = 1;
|
||||
this.setUnlocalizedName("boat_" + typeIn.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn)
|
||||
{
|
||||
ItemStack itemstack = playerIn.getHeldItem(handIn);
|
||||
float f = 1.0F;
|
||||
float f1 = playerIn.prevRotationPitch + (playerIn.rotationPitch - playerIn.prevRotationPitch) * 1.0F;
|
||||
float f2 = playerIn.prevRotationYaw + (playerIn.rotationYaw - playerIn.prevRotationYaw) * 1.0F;
|
||||
double d0 = playerIn.prevPosX + (playerIn.posX - playerIn.prevPosX) * 1.0D;
|
||||
double d1 = playerIn.prevPosY + (playerIn.posY - playerIn.prevPosY) * 1.0D + (double)playerIn.getEyeHeight();
|
||||
double d2 = playerIn.prevPosZ + (playerIn.posZ - playerIn.prevPosZ) * 1.0D;
|
||||
Vec3d vec3d = new Vec3d(d0, d1, d2);
|
||||
float f3 = MathHelper.cos(-f2 * 0.017453292F - (float)Math.PI);
|
||||
float f4 = MathHelper.sin(-f2 * 0.017453292F - (float)Math.PI);
|
||||
float f5 = -MathHelper.cos(-f1 * 0.017453292F);
|
||||
float f6 = MathHelper.sin(-f1 * 0.017453292F);
|
||||
float f7 = f4 * f5;
|
||||
float f8 = f3 * f5;
|
||||
double d3 = 5.0D;
|
||||
Vec3d vec3d1 = vec3d.addVector((double)f7 * 5.0D, (double)f6 * 5.0D, (double)f8 * 5.0D);
|
||||
RayTraceResult raytraceresult = worldIn.rayTraceBlocks(vec3d, vec3d1, true);
|
||||
|
||||
if (raytraceresult == null)
|
||||
{
|
||||
return new ActionResult<ItemStack>(EnumActionResult.PASS, itemstack);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vec3d vec3d2 = playerIn.getLook(1.0F);
|
||||
boolean flag = false;
|
||||
List<Entity> list = worldIn.getEntitiesWithinAABBExcludingEntity(playerIn, playerIn.getEntityBoundingBox().expand(vec3d2.x * 5.0D, vec3d2.y * 5.0D, vec3d2.z * 5.0D).grow(1.0D));
|
||||
|
||||
for (int i = 0; i < list.size(); ++i)
|
||||
{
|
||||
Entity entity = list.get(i);
|
||||
|
||||
if (entity.canBeCollidedWith())
|
||||
{
|
||||
AxisAlignedBB axisalignedbb = entity.getEntityBoundingBox().grow((double)entity.getCollisionBorderSize());
|
||||
|
||||
if (axisalignedbb.contains(vec3d))
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag)
|
||||
{
|
||||
return new ActionResult<ItemStack>(EnumActionResult.PASS, itemstack);
|
||||
}
|
||||
else if (raytraceresult.typeOfHit != RayTraceResult.Type.BLOCK)
|
||||
{
|
||||
return new ActionResult<ItemStack>(EnumActionResult.PASS, itemstack);
|
||||
}
|
||||
else
|
||||
{
|
||||
Block block = worldIn.getBlockState(raytraceresult.getBlockPos()).getBlock();
|
||||
boolean flag1 = block == Blocks.WATER || block == Blocks.FLOWING_WATER;
|
||||
EntityBOPBoat entitybopboat = new EntityBOPBoat(worldIn, raytraceresult.hitVec.x, flag1 ? raytraceresult.hitVec.y - 0.12D : raytraceresult.hitVec.y, raytraceresult.hitVec.z);
|
||||
entitybopboat.setBoatType(this.type);
|
||||
entitybopboat.rotationYaw = playerIn.rotationYaw;
|
||||
|
||||
if (!worldIn.getCollisionBoxes(entitybopboat, entitybopboat.getEntityBoundingBox().grow(-0.1D)).isEmpty())
|
||||
{
|
||||
return new ActionResult<ItemStack>(EnumActionResult.FAIL, itemstack);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!worldIn.isRemote)
|
||||
{
|
||||
worldIn.spawnEntity(entitybopboat);
|
||||
}
|
||||
|
||||
if (!playerIn.capabilities.isCreativeMode)
|
||||
{
|
||||
itemstack.shrink(1);
|
||||
}
|
||||
|
||||
playerIn.addStat(StatList.getObjectUseStats(this));
|
||||
return new ActionResult<ItemStack>(EnumActionResult.SUCCESS, itemstack);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -25,6 +25,8 @@ import biomesoplenty.common.entities.EntityPixie;
|
|||
import biomesoplenty.common.entities.EntityWasp;
|
||||
import biomesoplenty.common.entities.RenderPixie;
|
||||
import biomesoplenty.common.entities.RenderWasp;
|
||||
import biomesoplenty.common.entities.item.EntityBOPBoat;
|
||||
import biomesoplenty.common.entities.item.RenderBOPBoat;
|
||||
import biomesoplenty.common.entities.projectiles.EntityMudball;
|
||||
import biomesoplenty.common.entities.projectiles.RenderMudball;
|
||||
import biomesoplenty.common.fluids.BloodFluid;
|
||||
|
@ -88,6 +90,7 @@ public class ClientProxy extends CommonProxy
|
|||
registerEntityRenderer(EntityWasp.class, RenderWasp.class);
|
||||
registerEntityRenderer(EntityPixie.class, RenderPixie.class);
|
||||
registerEntityRenderer(EntityMudball.class, RenderMudball.class);
|
||||
registerEntityRenderer(EntityBOPBoat.class, RenderBOPBoat.class);
|
||||
|
||||
replaceForgeResources();
|
||||
}
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_cherry"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_cherry"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_ebony"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_ebony"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_ethereal"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_ethereal"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_eucalyptus"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_eucalyptus"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_fir"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_fir"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_hellbark"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_hellbark"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_jacaranda"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_jacaranda"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_magic"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_magic"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_mahogany"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_mahogany"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_mangrove"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_mangrove"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_palm"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_palm"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_pine"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_pine"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_redwood"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_redwood"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_sacred_oak"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_sacred_oak"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_umbran"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_umbran"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -0,0 +1,27 @@
|
|||
{
|
||||
"rewards": {
|
||||
"recipes": [
|
||||
"biomesoplenty:boat_willow"
|
||||
]
|
||||
},
|
||||
"criteria": {
|
||||
"entered_water": {
|
||||
"trigger": "minecraft:enter_block",
|
||||
"conditions": {
|
||||
"block": "minecraft:water"
|
||||
}
|
||||
},
|
||||
"has_the_recipe": {
|
||||
"trigger": "minecraft:recipe_unlocked",
|
||||
"conditions": {
|
||||
"recipe": "biomesoplenty:boat_willow"
|
||||
}
|
||||
}
|
||||
},
|
||||
"requirements": [
|
||||
[
|
||||
"entered_water",
|
||||
"has_the_recipe"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -66,6 +66,22 @@ item.biome_essence.name=Biome Essence
|
|||
item.biome_finder.name=Biome Finder
|
||||
item.black_dye.name=Black Dye
|
||||
item.blue_dye.name=Blue Dye
|
||||
item.boat_cherry.name=Cherry Boat
|
||||
item.boat_ebony.name=Ebony Boat
|
||||
item.boat_ethereal.name=Ethereal Boat
|
||||
item.boat_eucalyptus.name=Eucalyptus Boat
|
||||
item.boat_fir.name=Fir Boat
|
||||
item.boat_hellbark.name=Hellbark Boat
|
||||
item.boat_jacaranda.name=Jacaranda Boat
|
||||
item.boat_magic.name=Magic Boat
|
||||
item.boat_mahogany.name=Mahogany Boat
|
||||
item.boat_mangrove.name=Mangrove Boat
|
||||
item.boat_palm.name=Palm Boat
|
||||
item.boat_pine.name=Pine Boat
|
||||
item.boat_redwood.name=Redwood Boat
|
||||
item.boat_sacred_oak.name=Sacred Oak Boat
|
||||
item.boat_umbran.name=Umbran Boat
|
||||
item.boat_willow.name=Willow Boat
|
||||
item.brown_dye.name=Brown Dye
|
||||
item.cherry_door.name=Cherry Door
|
||||
item.crystal_shard.name=Celestial Crystal Shard
|
||||
|
@ -424,3 +440,4 @@ tile.crystal.name=Celestial Crystal
|
|||
entity.mudball.name=Mudball
|
||||
entity.pixie.name=Pixie
|
||||
entity.wasp.name=Nether Wasp
|
||||
entity.bop_boat.name=Boat
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_cherry"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_ebony"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_ethereal"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_eucalyptus"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_fir"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_hellbark"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_jacaranda"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_magic"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_mahogany"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_mangrove"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_palm"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_pine"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_redwood"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_sacred_oak"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_umbran"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": {
|
||||
"layer0": "biomesoplenty:items/boat_willow"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 1
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_cherry"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 14
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_ebony"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 4
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_ethereal"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 15
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_eucalyptus"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 3
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_fir"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 11
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_hellbark"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 12
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_jacaranda"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 5
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_magic"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 13
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_mahogany"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 6
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_mangrove"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 7
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_palm"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 10
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_pine"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 8
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_redwood"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 0
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_sacred_oak"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 2
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_umbran"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"group": "boat",
|
||||
"pattern": [
|
||||
"# #",
|
||||
"###"
|
||||
],
|
||||
"key": {
|
||||
"#": {
|
||||
"item": "biomesoplenty:planks_0",
|
||||
"data": 9
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "biomesoplenty:boat_willow"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 366 B After Width: | Height: | Size: 366 B |
Before Width: | Height: | Size: 394 B After Width: | Height: | Size: 394 B |
Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 367 B |
Before Width: | Height: | Size: 682 B After Width: | Height: | Size: 682 B |
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 364 B |
Before Width: | Height: | Size: 829 B After Width: | Height: | Size: 829 B |
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 369 B |
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 364 B After Width: | Height: | Size: 364 B |
Before Width: | Height: | Size: 370 B After Width: | Height: | Size: 370 B |
Before Width: | Height: | Size: 369 B After Width: | Height: | Size: 369 B |
Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 367 B |
Before Width: | Height: | Size: 368 B After Width: | Height: | Size: 368 B |
After Width: | Height: | Size: 427 B |
Before Width: | Height: | Size: 759 B After Width: | Height: | Size: 759 B |
Before Width: | Height: | Size: 367 B After Width: | Height: | Size: 367 B |
Before Width: | Height: | Size: 363 B |