Cloud fully works now! Awesome!

This commit is contained in:
Ellpeck 2015-08-24 17:57:11 +02:00
parent b25cbb7c85
commit 9c06ade0d9
6 changed files with 96 additions and 41 deletions

View file

@ -10,6 +10,7 @@ import ellpeck.actuallyadditions.inventory.GuiHandler;
import ellpeck.actuallyadditions.tile.TileEntitySmileyCloud;
import ellpeck.actuallyadditions.util.BlockUtil;
import ellpeck.actuallyadditions.util.INameableItem;
import ellpeck.actuallyadditions.util.StringUtil;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
@ -22,10 +23,10 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import java.util.List;
import java.util.Objects;
public class BlockSmileyCloud extends BlockContainerBase implements INameableItem{
@ -36,6 +37,25 @@ public class BlockSmileyCloud extends BlockContainerBase implements INameableIte
this.setStepSound(soundTypeWood);
}
@Override
public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z){
int meta = world.getBlockMetadata(x, y, z);
float f = 0.0625F;
if(meta == 0){
this.setBlockBounds(0F, 0F, 0F, 1F, 1F-f*4F, 1F-f*3F);
}
if(meta == 1){
this.setBlockBounds(0F, 0F, 0F, 1F-f*3F, 1F-f*4F, 1F);
}
if(meta == 2){
this.setBlockBounds(0F, 0F, f*3F, 1F, 1F-f*4F, 1F);
}
if(meta == 3){
this.setBlockBounds(f*3F, 0F, 0F, 1F, 1F-f*4F, 1F);
}
}
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int f6, float f7, float f8, float f9){
TileEntity tile = world.getTileEntity(x, y, z);
@ -50,10 +70,12 @@ public class BlockSmileyCloud extends BlockContainerBase implements INameableIte
}
else{
for(ISmileyCloudEasterEgg egg : SmileyCloudEasterEggs.cloudStuff){
if(Objects.equals(egg.getTriggerName(), cloud.name)){
if(egg.hasSpecialRightClick()){
egg.specialRightClick(world, x, y, z, world.getBlock(x, y, z), world.getBlockMetadata(x, y, z));
return true;
for(String triggerName : egg.getTriggerNames()){
if(StringUtil.equalsToLowerCase(triggerName, cloud.name)){
if(egg.hasSpecialRightClick()){
egg.specialRightClick(world, x, y, z, world.getBlock(x, y, z), world.getBlockMetadata(x, y, z));
return true;
}
}
}
}

View file

@ -3,11 +3,11 @@ package ellpeck.actuallyadditions.blocks.render;
import ellpeck.actuallyadditions.gadget.cloud.ISmileyCloudEasterEgg;
import ellpeck.actuallyadditions.gadget.cloud.SmileyCloudEasterEggs;
import ellpeck.actuallyadditions.tile.TileEntitySmileyCloud;
import ellpeck.actuallyadditions.util.StringUtil;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import java.util.Objects;
public class RenderSmileyCloud extends RenderTileEntity{
public RenderSmileyCloud(ModelBaseAA model){
@ -36,21 +36,27 @@ public class RenderSmileyCloud extends RenderTileEntity{
TileEntitySmileyCloud theCloud = (TileEntitySmileyCloud)tile;
if(theCloud.name != null && !theCloud.name.isEmpty()){
for(ISmileyCloudEasterEgg cloud : SmileyCloudEasterEggs.cloudStuff){
if(Objects.equals(cloud.getTriggerName(), theCloud.name)){
for(String triggerName : cloud.getTriggerNames()){
if(StringUtil.equalsToLowerCase(triggerName, theCloud.name)){
if(cloud.shouldRenderOriginal()){
theModel.render(0.0625F);
if(cloud.shouldRenderOriginal()){
theModel.render(0.0625F);
}
ResourceLocation resLoc = cloud.getResLoc();
if(resLoc != null){
this.bindTexture(resLoc);
}
cloud.renderExtra(0.0625F);
hasRendered = true;
break;
}
//this.bindTexture(cloud.getResLoc());
cloud.renderExtra(0.0625F);
hasRendered = true;
break;
}
if(hasRendered) break;
}
}
if(!hasRendered) theModel.render(0.0625F);
}
GL11.glPopMatrix();

View file

@ -42,7 +42,7 @@ public interface ISmileyCloudEasterEgg{
/**
* The name the cloud has to have for this effect to occur
*/
String getTriggerName();
String[] getTriggerNames();
ResourceLocation getResLoc();
}

View file

@ -1,7 +1,9 @@
package ellpeck.actuallyadditions.gadget.cloud;
import ellpeck.actuallyadditions.blocks.render.ModelBaseAA;
import net.minecraft.client.model.ModelRenderer;
import ellpeck.actuallyadditions.util.AssetUtil;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import org.lwjgl.opengl.GL11;
import java.util.ArrayList;
@ -12,31 +14,18 @@ public class SmileyCloudEasterEggs{
static{
//Glenthor
register(new SmileyCloudEasterEgg(){
public ModelRenderer s9;
@Override
public String getTriggerName(){
return "Glenthor";
public String[] getTriggerNames(){
return new String[]{"glenthor"};
}
@Override
public void renderExtra(float f){
s9.render(f);
}
@Override
public boolean shouldRenderOriginal(){
return false;
}
@Override
public void registerExtraRendering(ModelBaseAA model){
s9 = new ModelRenderer(model, 0, 31);
s9.addBox(0F, 0F, 0F, 1, 6, 6);
s9.setRotationPoint(7F, 16F, -2F);
s9.setTextureSize(64, 64);
s9.mirror = true;
GL11.glTranslatef(f*8F, f*24F, f*-4F);
GL11.glRotatef(180F, 0F, 0F, 1F);
GL11.glRotatef(85F, 0F, 1F, 0F);
GL11.glRotatef(70F, 0F, 0F, 1F);
GL11.glScalef(0.75F, 0.75F, 0.75F);
AssetUtil.renderItem(new ItemStack(Items.dye, 1, 2), 0);
}
});
}

View file

@ -1,6 +1,16 @@
package ellpeck.actuallyadditions.util;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
public class AssetUtil{
@ -15,4 +25,21 @@ public class AssetUtil{
String localMachineName = StringUtil.localize(machineName+".name");
font.drawString(localMachineName, xSize/2 - font.getStringWidth(localMachineName)/2, yPositionOfMachineText, StringUtil.DECIMAL_COLOR_WHITE);
}
@SideOnly(Side.CLIENT)
public static void renderItem(ItemStack stack, int renderPass){
IIcon icon = stack.getItem().getIcon(stack, renderPass);
float f = icon.getMinU();
float f1 = icon.getMaxU();
float f2 = icon.getMinV();
float f3 = icon.getMaxV();
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture);
ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), 1F/16F);
}
@SideOnly(Side.CLIENT)
public static void renderBlock(Block block, int meta){
Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture);
RenderBlocks.getInstance().renderBlockAsItem(block, meta, 1F);
}
}

View file

@ -2,6 +2,8 @@ package ellpeck.actuallyadditions.util;
import net.minecraft.util.StatCollector;
import java.util.Objects;
public class StringUtil{
public static final String BLACK = (char)167 + "0";
@ -42,4 +44,13 @@ public class StringUtil{
public static String localizeFormatted(String text, Object ... replace){
return StatCollector.translateToLocalFormatted(text, replace);
}
public static String toLowerCase(String string){
if(string == null) return null;
else return string.toLowerCase();
}
public static boolean equalsToLowerCase(String one, String two){
return Objects.equals(toLowerCase(one), toLowerCase(two));
}
}