Added boats for BOP wood types (Closes #716)

This commit is contained in:
Forstride 2018-03-04 08:25:04 -05:00
parent 838d80d4c1
commit 7dffb4754f
75 changed files with 2311 additions and 2 deletions

View File

@ -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;

File diff suppressed because it is too large Load Diff

View File

@ -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);
}
}

View File

@ -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();
}
}

View File

@ -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;
@ -29,6 +30,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);

View File

@ -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");

View File

@ -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);
}
}
}
}
}

View File

@ -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();
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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"
]
]
}

View File

@ -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
@ -423,4 +439,5 @@ tile.crystal.name=Celestial Crystal
entity.mudball.name=Mudball
entity.pixie.name=Pixie
entity.wasp.name=Nether Wasp
entity.wasp.name=Nether Wasp
entity.bop_boat.name=Boat

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_cherry"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_ebony"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_ethereal"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_eucalyptus"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_fir"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_hellbark"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_jacaranda"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_magic"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_mahogany"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_mangrove"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_palm"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_pine"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_redwood"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_sacred_oak"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_umbran"
}
}

View File

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "biomesoplenty:items/boat_willow"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 1
}
},
"result": {
"item": "biomesoplenty:boat_cherry"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 14
}
},
"result": {
"item": "biomesoplenty:boat_ebony"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 4
}
},
"result": {
"item": "biomesoplenty:boat_ethereal"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 15
}
},
"result": {
"item": "biomesoplenty:boat_eucalyptus"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 3
}
},
"result": {
"item": "biomesoplenty:boat_fir"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 11
}
},
"result": {
"item": "biomesoplenty:boat_hellbark"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 12
}
},
"result": {
"item": "biomesoplenty:boat_jacaranda"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 5
}
},
"result": {
"item": "biomesoplenty:boat_magic"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 13
}
},
"result": {
"item": "biomesoplenty:boat_mahogany"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 6
}
},
"result": {
"item": "biomesoplenty:boat_mangrove"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 7
}
},
"result": {
"item": "biomesoplenty:boat_palm"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 10
}
},
"result": {
"item": "biomesoplenty:boat_pine"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 8
}
},
"result": {
"item": "biomesoplenty:boat_redwood"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 0
}
},
"result": {
"item": "biomesoplenty:boat_sacred_oak"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 2
}
},
"result": {
"item": "biomesoplenty:boat_umbran"
}
}

View File

@ -0,0 +1,17 @@
{
"type": "minecraft:crafting_shaped",
"group": "boat",
"pattern": [
"# #",
"###"
],
"key": {
"#": {
"item": "biomesoplenty:planks_0",
"data": 9
}
},
"result": {
"item": "biomesoplenty:boat_willow"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 364 B

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 363 B