Mostly finished the biome finder, just rendering stuff now
This commit is contained in:
parent
24b2ee3335
commit
247b77c512
|
@ -9,16 +9,17 @@ import net.minecraft.client.particle.EntityBreakingFX;
|
|||
import net.minecraft.client.particle.EntityFX;
|
||||
import net.minecraft.client.renderer.entity.RenderSnowball;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.client.particles.EntityDandelionFX;
|
||||
import biomesoplenty.client.particles.EntityMagicTreeFX;
|
||||
import biomesoplenty.client.particles.EntityPixieTrailFX;
|
||||
import biomesoplenty.client.particles.EntitySteamFX;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.client.render.blocks.BambooRenderer;
|
||||
import biomesoplenty.client.render.blocks.FoliageRenderer;
|
||||
import biomesoplenty.client.render.blocks.GraveRenderer;
|
||||
import biomesoplenty.client.render.blocks.PlantsRenderer;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.blocks.SmallBlockRenderer;
|
||||
import biomesoplenty.client.render.entities.RenderBird;
|
||||
import biomesoplenty.client.render.entities.RenderGlob;
|
||||
|
@ -28,6 +29,7 @@ import biomesoplenty.client.render.entities.RenderPixie;
|
|||
import biomesoplenty.client.render.entities.RenderRosester;
|
||||
import biomesoplenty.client.render.entities.RenderWasp;
|
||||
import biomesoplenty.client.render.entities.projectiles.RenderDart;
|
||||
import biomesoplenty.client.render.items.BiomeFinderRenderer;
|
||||
import biomesoplenty.common.configuration.BOPConfigurationIDs;
|
||||
import biomesoplenty.common.entities.EntityBird;
|
||||
import biomesoplenty.common.entities.EntityGlob;
|
||||
|
@ -92,6 +94,8 @@ public class ClientProxy extends CommonProxy
|
|||
RenderingRegistry.registerEntityRenderingHandler(EntityPixie.class, new RenderPixie());
|
||||
}
|
||||
|
||||
MinecraftForgeClient.registerItemRenderer(BOPItemHelper.get("biomeFinder"), new BiomeFinderRenderer());
|
||||
|
||||
RenderingRegistry.registerBlockHandler(new FoliageRenderer());
|
||||
RenderingRegistry.registerBlockHandler(new PlantsRenderer());
|
||||
RenderingRegistry.registerBlockHandler(new SmallBlockRenderer());
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
package biomesoplenty.client.render;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderUtils
|
||||
{
|
||||
public static int foliageModel = -1;
|
||||
public static int plantsModel = -1;
|
||||
public static int bonesModel = -1;
|
||||
public static int graveModel = -1;
|
||||
public static int bambooModel = -1;
|
||||
|
||||
public static void renderStandardInvBlock(RenderBlocks renderblocks, Block block, int meta)
|
||||
{
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1F, 0.0F);
|
||||
//TODO: renderFaceYNeg getIcon()
|
||||
renderblocks.func_147768_a(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(0, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
//TODO: renderFaceYPos getIcon()
|
||||
renderblocks.func_147806_b(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(1, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1F);
|
||||
//TODO: renderFaceZNeg getIcon()
|
||||
renderblocks.func_147761_c(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(2, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
//TODO: renderFaceZPos getIcon()
|
||||
renderblocks.func_147734_d(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(3, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1F, 0.0F, 0.0F);
|
||||
//TODO: renderFaceXNeg getIcon()
|
||||
renderblocks.func_147798_e(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(4, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
//TODO: renderFaceXPos getIcon()
|
||||
renderblocks.func_147764_f(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(5, meta));
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
}
|
||||
|
||||
public static void renderIcon(IIcon icon, double size, double z, float nx, float ny, float nz)
|
||||
{
|
||||
renderIcon(icon, 0.0D, 0.0D, size, size, z, nx, ny, nz);
|
||||
}
|
||||
|
||||
public static void renderIcon(IIcon icon, double xStart, double yStart, double xEnd, double yEnd, double z, float nx, float ny, float nz)
|
||||
{
|
||||
if (icon == null) icon = getMissingIcon(TextureMap.locationItemsTexture);
|
||||
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(nx, ny, nz);
|
||||
|
||||
if (nz > 0.0F)
|
||||
{
|
||||
tessellator.addVertexWithUV(xStart, yStart, z, icon.getMinU(), icon.getMinV());
|
||||
tessellator.addVertexWithUV(xEnd, yStart, z, icon.getMaxU(), icon.getMinV());
|
||||
tessellator.addVertexWithUV(xEnd, yEnd, z, icon.getMaxU(), icon.getMaxV());
|
||||
tessellator.addVertexWithUV(xStart, yEnd, z, icon.getMinU(), icon.getMaxV());
|
||||
}
|
||||
else
|
||||
{
|
||||
tessellator.addVertexWithUV(xStart, yEnd, z, icon.getMinU(), icon.getMaxV());
|
||||
tessellator.addVertexWithUV(xEnd, yEnd, z, icon.getMaxU(), icon.getMaxV());
|
||||
tessellator.addVertexWithUV(xEnd, yStart, z, icon.getMaxU(), icon.getMinV());
|
||||
tessellator.addVertexWithUV(xStart, yStart, z, icon.getMinU(), icon.getMinV());
|
||||
}
|
||||
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
public static void renderIcon(int indexX, int indexY, float minU, float maxU, float minV, float maxV, double z)
|
||||
{
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1.0F);
|
||||
|
||||
//0.5000098 0.5156152 0.71876955 0.74998045
|
||||
|
||||
tessellator.addVertexWithUV(0D, 16D, z, minU, maxV);
|
||||
tessellator.addVertexWithUV(16D, 16D, z, maxU, maxV);
|
||||
tessellator.addVertexWithUV(16D, 0D, z, maxU, minV);
|
||||
tessellator.addVertexWithUV(0D, 0D, z, minU, minV);
|
||||
|
||||
tessellator.draw();
|
||||
}
|
||||
|
||||
public static IIcon getMissingIcon(ResourceLocation textureSheet)
|
||||
{
|
||||
return ((TextureMap)Minecraft.getMinecraft().getTextureManager().getTexture(textureSheet)).getAtlasSprite("missingno");
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package biomesoplenty.client.render.blocks;
|
||||
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.minecraft.client.renderer.Tessellator;
|
|||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import biomesoplenty.api.BOPBlockHelper;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.common.blocks.BlockBOPFoliage;
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package biomesoplenty.client.render.blocks;
|
||||
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
|
|
|
@ -7,6 +7,7 @@ import net.minecraft.client.renderer.Tessellator;
|
|||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import biomesoplenty.api.BOPBlockHelper;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.common.blocks.BlockBOPPlant;
|
||||
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
|
||||
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
package biomesoplenty.client.render.blocks;
|
||||
|
||||
import javax.swing.Icon;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.EntityRenderer;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderUtils
|
||||
{
|
||||
public static int foliageModel = -1;
|
||||
public static int plantsModel = -1;
|
||||
public static int bonesModel = -1;
|
||||
public static int graveModel = -1;
|
||||
public static int bambooModel = -1;
|
||||
|
||||
public static void renderStandardInvBlock(RenderBlocks renderblocks, Block block, int meta)
|
||||
{
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, -1F, 0.0F);
|
||||
//TODO: renderFaceYNeg getIcon()
|
||||
renderblocks.func_147768_a(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(0, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 1.0F, 0.0F);
|
||||
//TODO: renderFaceYPos getIcon()
|
||||
renderblocks.func_147806_b(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(1, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, -1F);
|
||||
//TODO: renderFaceZNeg getIcon()
|
||||
renderblocks.func_147761_c(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(2, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(0.0F, 0.0F, 1.0F);
|
||||
//TODO: renderFaceZPos getIcon()
|
||||
renderblocks.func_147734_d(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(3, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(-1F, 0.0F, 0.0F);
|
||||
//TODO: renderFaceXNeg getIcon()
|
||||
renderblocks.func_147798_e(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(4, meta));
|
||||
tessellator.draw();
|
||||
tessellator.startDrawingQuads();
|
||||
tessellator.setNormal(1.0F, 0.0F, 0.0F);
|
||||
//TODO: renderFaceXPos getIcon()
|
||||
renderblocks.func_147764_f(block, 0.0D, 0.0D, 0.0D, block.func_149691_a(5, meta));
|
||||
tessellator.draw();
|
||||
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
package biomesoplenty.client.render.blocks;
|
||||
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.renderer.RenderBlocks;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
|
|
|
@ -0,0 +1,169 @@
|
|||
package biomesoplenty.client.render.items;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemRenderer;
|
||||
import net.minecraft.client.renderer.Tessellator;
|
||||
import net.minecraft.client.renderer.texture.TextureManager;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.client.ForgeHooksClient;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.common.items.ItemBiomeFinder;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
public class BiomeFinderRenderer implements IItemRenderer
|
||||
{
|
||||
private int tickCount = 0;
|
||||
private int loopIndex = 0;
|
||||
|
||||
private static ResourceLocation radarLocation = new ResourceLocation("biomesoplenty:textures/items/biomeradarstatic.png");
|
||||
|
||||
public double currentAngle;
|
||||
public double angleDelta;
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type)
|
||||
{
|
||||
return (type.equals(IItemRenderer.ItemRenderType.EQUIPPED_FIRST_PERSON)) || (type.equals(IItemRenderer.ItemRenderType.INVENTORY)) || (type.equals(IItemRenderer.ItemRenderType.EQUIPPED)) || (type.equals(IItemRenderer.ItemRenderType.ENTITY));
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper)
|
||||
{
|
||||
return type == IItemRenderer.ItemRenderType.ENTITY;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data)
|
||||
{
|
||||
Tessellator tessellator = Tessellator.instance;
|
||||
|
||||
IIcon radarIcon = ((ItemBiomeFinder)BOPItemHelper.get("biomeFinder")).radarIcon;
|
||||
|
||||
int index = getIconIndexFacingBiome(item);
|
||||
|
||||
GL11.glEnable(3042);
|
||||
|
||||
if (type.equals(IItemRenderer.ItemRenderType.ENTITY))
|
||||
{
|
||||
GL11.glTranslated(-0.5D, -0.1D, 0.0D);
|
||||
}
|
||||
|
||||
TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager();
|
||||
texturemanager.bindTexture(texturemanager.getResourceLocation(item.getItemSpriteNumber()));
|
||||
|
||||
float f = (float)(0.01D / radarIcon.getIconWidth());
|
||||
// (originX )
|
||||
float minU = ((index * 15F) / radarIcon.getIconWidth() + f) / 2;
|
||||
float maxU = (((index * 15F) + 16F) / radarIcon.getIconWidth() - f) / 2;
|
||||
float minV = ((0 * 15F) / radarIcon.getIconHeight() + f);
|
||||
float maxV = (((0 * 15F) + 16F) / radarIcon.getIconHeight() - f);
|
||||
|
||||
GL11.glBlendFunc(770, 771);
|
||||
|
||||
if (type.equals(IItemRenderer.ItemRenderType.INVENTORY))
|
||||
{
|
||||
RenderUtils.renderIcon(index, 0, minU, maxU, minV, maxV, 0.001D);
|
||||
}
|
||||
else
|
||||
{
|
||||
ItemRenderer.renderItemIn2D(tessellator, maxU, minV, minU, maxV, radarIcon.getIconWidth(), radarIcon.getIconHeight(), 0.0625F);
|
||||
}
|
||||
|
||||
GL11.glDisable(3042);
|
||||
}
|
||||
|
||||
private int getIconIndexFacingBiome(ItemStack itemStack)
|
||||
{
|
||||
Minecraft minecraft = Minecraft.getMinecraft();
|
||||
World world = minecraft.theWorld;
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
|
||||
NBTTagCompound stackCompound = itemStack != null ? itemStack.getTagCompound() : null;
|
||||
boolean foundBiome = stackCompound != null ? stackCompound.getBoolean("foundBiome") : false;
|
||||
NBTTagCompound biomePositionCompound = stackCompound != null ? stackCompound.getCompoundTag("biomePosition") : null;
|
||||
|
||||
if (foundBiome)
|
||||
{
|
||||
double playerPosX = player.posX;
|
||||
double playerPosZ = player.posZ;
|
||||
int biomePosX = biomePositionCompound.getInteger("x");
|
||||
int biomePosZ = biomePositionCompound.getInteger("z");
|
||||
|
||||
double d3 = 0.0D;
|
||||
|
||||
if (world != null)
|
||||
{
|
||||
double d4 = (double)biomePosX - playerPosX;
|
||||
double d5 = (double)biomePosZ - playerPosZ;
|
||||
player.rotationYaw %= 360.0D;
|
||||
d3 = -((player.rotationYaw - 90.0D) * Math.PI / 180.0D - Math.atan2(d5, d4));
|
||||
}
|
||||
|
||||
double d6;
|
||||
|
||||
for (d6 = d3 - this.currentAngle; d6 < -Math.PI; d6 += (Math.PI * 2D))
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
while (d6 >= Math.PI)
|
||||
{
|
||||
d6 -= (Math.PI * 2D);
|
||||
}
|
||||
|
||||
if (d6 < -1.0D)
|
||||
{
|
||||
d6 = -1.0D;
|
||||
}
|
||||
|
||||
if (d6 > 1.0D)
|
||||
{
|
||||
d6 = 1.0D;
|
||||
}
|
||||
|
||||
this.angleDelta += d6 * 0.1D;
|
||||
this.angleDelta *= 0.8D;
|
||||
this.currentAngle += this.angleDelta;
|
||||
|
||||
int i;
|
||||
|
||||
for (i = (int)((this.currentAngle / (Math.PI * 2D) + 1.0D) * (double)32) % 32; i < 0; i = (i + 32) % 32)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
return i;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (tickCount++ > 3)
|
||||
{
|
||||
if (loopIndex++ < 31)
|
||||
{
|
||||
tickCount = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
loopIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return loopIndex;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,7 +22,7 @@ import net.minecraft.world.IBlockAccess;
|
|||
import net.minecraft.world.World;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.api.BOPBlockHelper;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.common.blocks.templates.BOPBlockWorldDecor;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
|
|
@ -32,7 +32,7 @@ import net.minecraftforge.common.util.FakePlayer;
|
|||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.api.BOPBlockHelper;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@ import net.minecraftforge.common.IShearable;
|
|||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.api.BOPBlockHelper;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
import biomesoplenty.common.blocks.templates.BOPBlockWorldDecor;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraft.util.IIcon;
|
|||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
|
||||
public class BlockBamboo extends Block
|
||||
{
|
||||
|
|
|
@ -13,7 +13,7 @@ import net.minecraft.util.IIcon;
|
|||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
|
||||
public class BlockBones extends Block
|
||||
{
|
||||
|
|
|
@ -10,7 +10,7 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.world.IBlockAccess;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.client.render.blocks.RenderUtils;
|
||||
import biomesoplenty.client.render.RenderUtils;
|
||||
|
||||
public class BlockGrave extends Block
|
||||
{
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package biomesoplenty.common.core;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
@ -19,6 +17,7 @@ import biomesoplenty.api.BOPBlockHelper;
|
|||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.common.configuration.BOPConfigurationMisc;
|
||||
import biomesoplenty.common.handlers.FurnaceFuelHandler;
|
||||
import biomesoplenty.common.recipes.BiomeEssenceRecipe;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class BOPCrafting
|
||||
|
@ -265,6 +264,7 @@ public class BOPCrafting
|
|||
|
||||
|
||||
GameRegistry.addRecipe(new ItemStack(BOPItemHelper.get("biomeFinder"), 1, 0), new Object[] {" E ", "ERE", " E ", 'E', new ItemStack(Items.emerald, 1, 0), 'R', new ItemStack(Items.redstone, 1, 0)});
|
||||
GameRegistry.addRecipe(new BiomeEssenceRecipe());
|
||||
|
||||
GameRegistry.addRecipe(new ItemStack(BOPBlockHelper.get("planks"), 1, 10), new Object[] {"##", "##", '#', BOPBlockHelper.get("bamboo")});
|
||||
GameRegistry.addRecipe(new ItemStack(BOPItemHelper.get("jarEmpty"), 3, 0), new Object[] {"# #", "# #", "###", '#', Blocks.glass});
|
||||
|
|
|
@ -73,7 +73,7 @@ public class BOPVanillaCompat
|
|||
ItemStack biomeEssence = new ItemStack(BOPItemHelper.get("biomeEssence"));
|
||||
|
||||
biomeEssence.setTagCompound(new NBTTagCompound());
|
||||
biomeEssence.getTagCompound().setString("biome", biome.biomeName);
|
||||
biomeEssence.getTagCompound().setInteger("biomeID", biome.biomeID);
|
||||
|
||||
desertTemple.addItem(new WeightedRandomChestContent(biomeEssence, 1, 1, 3));
|
||||
dungeon.addItem(new WeightedRandomChestContent(biomeEssence, 1, 1, 3));
|
||||
|
|
|
@ -2,8 +2,10 @@ package biomesoplenty.common.eventhandler.network;
|
|||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.common.network.packet.PacketBiomePosition;
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
|
||||
|
@ -14,14 +16,5 @@ public class ConnectionEventHandler
|
|||
@SubscribeEvent
|
||||
public void onPlayerLoggedIn(PlayerLoggedInEvent event)
|
||||
{
|
||||
EntityPlayer player = (EntityPlayer)event.player;
|
||||
|
||||
NBTTagCompound biomeToFindCompound = player.getEntityData().getCompoundTag("biomePosition");
|
||||
boolean foundBiome = player.getEntityData().getBoolean("foundBiome");
|
||||
|
||||
if (biomeToFindCompound != null)
|
||||
{
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition(biomeToFindCompound.getInteger("x"), biomeToFindCompound.getInteger("z"), foundBiome), (EntityPlayerMP)player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
|
||||
public class ItemBOPBiomeEssence extends Item
|
||||
|
@ -19,6 +20,18 @@ public class ItemBOPBiomeEssence extends Item
|
|||
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasContainerItem(ItemStack itemStack)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getContainerItem(ItemStack itemStack)
|
||||
{
|
||||
return itemStack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerIcons(IIconRegister iconRegister)
|
||||
{
|
||||
|
@ -30,7 +43,15 @@ public class ItemBOPBiomeEssence extends Item
|
|||
{
|
||||
if (itemStack.hasTagCompound())
|
||||
{
|
||||
if (itemStack.getTagCompound().hasKey("biome")) infoList.add(itemStack.getTagCompound().getString("biome"));
|
||||
if (itemStack.getTagCompound().hasKey("biomeID"))
|
||||
{
|
||||
BiomeGenBase biome = BiomeGenBase.func_150565_n()[itemStack.getTagCompound().getInteger("biomeID")];
|
||||
|
||||
if (biome != null)
|
||||
{
|
||||
infoList.add(biome.biomeName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,27 +1,28 @@
|
|||
package biomesoplenty.common.items;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.client.renderer.texture.TextureMap;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.EnumChatFormatting;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.util.MathHelper;
|
||||
import net.minecraft.world.ChunkPosition;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraft.world.biome.WorldChunkManager;
|
||||
import biomesoplenty.BiomesOPlenty;
|
||||
import biomesoplenty.api.BOPBiomeHelper;
|
||||
import biomesoplenty.client.textures.TextureBiomeFinder;
|
||||
import biomesoplenty.common.network.packet.PacketBiomePosition;
|
||||
|
||||
public class ItemBiomeFinder extends Item
|
||||
{
|
||||
public IIcon radarIcon;
|
||||
|
||||
public ItemBiomeFinder()
|
||||
{
|
||||
this.setCreativeTab(BiomesOPlenty.tabBiomesOPlenty);
|
||||
|
@ -32,14 +33,12 @@ public class ItemBiomeFinder extends Item
|
|||
{
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
|
||||
itemStack.getTagCompound().setInteger("biomeIdToFind", BOPBiomeHelper.getBOPBiome("lavenderFields").biomeID);
|
||||
int biomeIDToFind = itemStack.getTagCompound().getInteger("biomeIDToFind");
|
||||
|
||||
int biomeIdToFind = itemStack.getTagCompound().getInteger("biomeIdToFind");
|
||||
|
||||
if (!world.isRemote && !player.getEntityData().getBoolean("foundBiome"))
|
||||
if (!world.isRemote && !itemStack.getTagCompound().getBoolean("foundBiome"))
|
||||
{
|
||||
//TODO: getBiomeGenArray()
|
||||
BiomeGenBase biomeToFind = BiomeGenBase.func_150565_n()[biomeIdToFind];
|
||||
BiomeGenBase biomeToFind = BiomeGenBase.func_150565_n()[biomeIDToFind];
|
||||
|
||||
if (biomeToFind != null)
|
||||
{
|
||||
|
@ -115,8 +114,8 @@ public class ItemBiomeFinder extends Item
|
|||
biomeCompound.setInteger("x", biomePosition.field_151329_a);
|
||||
biomeCompound.setInteger("z", biomePosition.field_151328_c);
|
||||
|
||||
player.getEntityData().setTag("biomePosition", biomeCompound);
|
||||
player.getEntityData().setBoolean("foundBiome", true);
|
||||
itemStack.getTagCompound().setTag("biomePosition", biomeCompound);
|
||||
itemStack.getTagCompound().setBoolean("foundBiome", true);
|
||||
|
||||
BiomesOPlenty.packetPipeline.sendTo(new PacketBiomePosition(biomePosition.field_151329_a, biomePosition.field_151328_c, true), (EntityPlayerMP)player);
|
||||
}
|
||||
|
@ -131,17 +130,31 @@ public class ItemBiomeFinder extends Item
|
|||
@Override
|
||||
public void registerIcons(IIconRegister iconRegister)
|
||||
{
|
||||
if (iconRegister instanceof TextureMap)
|
||||
{
|
||||
TextureAtlasSprite texture = new TextureBiomeFinder("biomesoplenty:biomefinder");
|
||||
((TextureMap)iconRegister).setTextureEntry("biomesoplenty:biomefinder", texture);
|
||||
this.itemIcon = texture;
|
||||
}
|
||||
radarIcon = iconRegister.registerIcon("biomesoplenty:biomeradar");
|
||||
}
|
||||
|
||||
/*@Override
|
||||
public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean advancedItemTooltips)
|
||||
@Override
|
||||
public void addInformation(ItemStack itemStack, EntityPlayer player, List infoList, boolean advancedItemTooltips)
|
||||
{
|
||||
if (!itemStack.hasTagCompound()) itemStack.setTagCompound(new NBTTagCompound());
|
||||
}*/
|
||||
if (itemStack.hasTagCompound())
|
||||
{
|
||||
if (itemStack.getTagCompound().hasKey("biomeIDToFind"))
|
||||
{
|
||||
BiomeGenBase biome = BiomeGenBase.func_150565_n()[itemStack.getTagCompound().getInteger("biomeIDToFind")];
|
||||
|
||||
if (biome != null)
|
||||
{
|
||||
infoList.add(biome.biomeName);
|
||||
|
||||
if (itemStack.getTagCompound().hasKey("foundBiome"))
|
||||
{
|
||||
boolean foundBiome = itemStack.getTagCompound().getBoolean("foundBiome");
|
||||
|
||||
if (foundBiome) infoList.add(EnumChatFormatting.RED + "Found biome");
|
||||
else infoList.add("Right Click to Find Biome");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
package biomesoplenty.common.network.packet;
|
||||
|
||||
import cpw.mods.fml.common.network.ByteBufUtils;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
import biomesoplenty.common.network.AbstractPacket;
|
||||
|
||||
public class PacketBiomePosition extends AbstractPacket
|
||||
|
@ -46,8 +47,15 @@ public class PacketBiomePosition extends AbstractPacket
|
|||
biomeCompound.setInteger("x", x);
|
||||
biomeCompound.setInteger("z", z);
|
||||
|
||||
player.getEntityData().setTag("biomePosition", biomeCompound);
|
||||
player.getEntityData().setBoolean("foundBiome", foundBiome);
|
||||
ItemStack currentItem = player.getCurrentEquippedItem();
|
||||
|
||||
if (currentItem.getItem() == BOPItemHelper.get("biomeFinder"))
|
||||
{
|
||||
if (!currentItem.hasTagCompound()) currentItem.setTagCompound(new NBTTagCompound());
|
||||
|
||||
currentItem.getTagCompound().setBoolean("foundBiome", foundBiome);
|
||||
currentItem.getTagCompound().setTag("biomePosition", biomeCompound);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -0,0 +1,69 @@
|
|||
package biomesoplenty.common.recipes;
|
||||
|
||||
import net.minecraft.inventory.InventoryCrafting;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.IRecipe;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import biomesoplenty.api.BOPItemHelper;
|
||||
|
||||
public class BiomeEssenceRecipe implements IRecipe
|
||||
{
|
||||
private ItemStack recipeOutput;
|
||||
|
||||
@Override
|
||||
public boolean matches(InventoryCrafting inventoryCrafting, World world)
|
||||
{
|
||||
ItemStack biomeRadar = null;
|
||||
ItemStack biomeEssence = null;
|
||||
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
for (int j = 0; j < 3; ++j)
|
||||
{
|
||||
ItemStack itemstack = inventoryCrafting.getStackInRowAndColumn(j, i);
|
||||
|
||||
if (itemstack != null)
|
||||
{
|
||||
if (itemstack.getItem() == BOPItemHelper.get("biomeFinder")) biomeRadar = itemstack.copy();
|
||||
else if (itemstack.getItem() == BOPItemHelper.get("biomeEssence")) biomeEssence = itemstack.copy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (biomeRadar != null && biomeEssence != null)
|
||||
{
|
||||
if (!biomeEssence.hasTagCompound() || !biomeEssence.getTagCompound().hasKey("biomeID")) return false;
|
||||
|
||||
int biomeID = biomeEssence.getTagCompound().getInteger("biomeID");
|
||||
|
||||
if (!biomeRadar.hasTagCompound()) biomeRadar.setTagCompound(new NBTTagCompound());
|
||||
|
||||
biomeRadar.getTagCompound().setInteger("biomeIDToFind", biomeID);
|
||||
biomeRadar.getTagCompound().setBoolean("foundBiome", false);
|
||||
|
||||
recipeOutput = biomeRadar;
|
||||
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRecipeSize()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getCraftingResult(InventoryCrafting var1)
|
||||
{
|
||||
return recipeOutput.copy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getRecipeOutput()
|
||||
{
|
||||
return recipeOutput;
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
Loading…
Reference in New Issue