Code for automation
will seperate into its own repo later.
This commit is contained in:
parent
82106411b7
commit
4809099e8a
5 changed files with 335 additions and 0 deletions
84
minecraft/net/minecraft/src/eui/robotics/EntityShoeBot.java
Normal file
84
minecraft/net/minecraft/src/eui/robotics/EntityShoeBot.java
Normal file
|
@ -0,0 +1,84 @@
|
|||
package net.minecraft.src.eui.robotics;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.*;
|
||||
public class EntityShoeBot extends EntityRobot {
|
||||
|
||||
EntityItem targetItem = null;
|
||||
public EntityShoeBot(World par1World) {
|
||||
super(par1World);
|
||||
this.moveSpeed = 0.23F;
|
||||
// this.tasks.addTask(1, new EntityAIWander(this, this.moveSpeed));
|
||||
this.texture = "/mobs/char.png";
|
||||
}
|
||||
public float getBlockPathWeight(int par1, int par2, int par3)
|
||||
{
|
||||
return 0.5F + this.worldObj.getLightBrightness(par1, par2, par3);
|
||||
}
|
||||
@Override
|
||||
public void onEntityUpdate()
|
||||
{
|
||||
super.onEntityUpdate();
|
||||
|
||||
if(targetItem == null)
|
||||
{
|
||||
targetItem = findClosestItem(this.posX, this.posY, this.posZ,30);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!targetItem.isEntityAlive())
|
||||
{
|
||||
targetItem = null;
|
||||
}
|
||||
}
|
||||
if(targetItem != null)
|
||||
{
|
||||
|
||||
PathEntity PathToItem = this.worldObj.getPathEntityToEntity(this, targetItem, 30, true, false, false, true);
|
||||
if(hasPath()){
|
||||
this.setPathToEntity(PathToItem);
|
||||
this.moveSpeed = 1.0F;
|
||||
if(targetItem.getDistanceSq(this.posX,this.posY,this.posZ) < 1.5)
|
||||
{
|
||||
targetItem.setDead();
|
||||
targetItem = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
this.moveSpeed = 0.23F;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
public EntityItem findClosestItem(double par1, double par3, double par5, double par7)
|
||||
{
|
||||
double var9 = -1.0D;
|
||||
EntityItem var11 = null;
|
||||
List itemList = worldObj.getEntitiesWithinAABB(EntityItem.class, this.boundingBox.expand(par7, 4.0D, par7));
|
||||
for (int var12 = 0; var12 < itemList.size(); ++var12)
|
||||
{
|
||||
EntityItem var13 = (EntityItem)itemList.get(var12);
|
||||
double var14 = var13.getDistanceSq(par1, par3, par5);
|
||||
|
||||
if ((par7 < 0.0D || var14 < par7 * par7) && (var9 == -1.0D || var14 < var9))
|
||||
{
|
||||
var9 = var14;
|
||||
var11 = var13;
|
||||
}
|
||||
}
|
||||
|
||||
return var11;
|
||||
}
|
||||
@Override
|
||||
public int getMaxHealth() {
|
||||
// TODO Auto-generated method stub
|
||||
return 5;
|
||||
}
|
||||
|
||||
public String getRenderedName() {
|
||||
// TODO Auto-generated method stub
|
||||
return "BlockEater";
|
||||
}
|
||||
|
||||
}
|
58
minecraft/net/minecraft/src/eui/robotics/ItemSpawn.java
Normal file
58
minecraft/net/minecraft/src/eui/robotics/ItemSpawn.java
Normal file
|
@ -0,0 +1,58 @@
|
|||
package net.minecraft.src.eui.robotics;
|
||||
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import net.minecraft.src.*;
|
||||
|
||||
|
||||
public class ItemSpawn extends Item
|
||||
{
|
||||
|
||||
|
||||
public ItemSpawn (int id)
|
||||
{
|
||||
super(id);
|
||||
maxStackSize = 1;
|
||||
setMaxDamage(0);
|
||||
setHasSubtypes(true);
|
||||
}
|
||||
public void addCreativeItems(ArrayList itemList)
|
||||
{
|
||||
|
||||
itemList.add(new ItemStack(this, 1,1));
|
||||
|
||||
}
|
||||
|
||||
public String getItemNameIS(ItemStack itemstack) {
|
||||
switch(itemstack.getItemDamage())
|
||||
{
|
||||
case 1: return "Bot";
|
||||
}
|
||||
|
||||
return "Blank";
|
||||
}
|
||||
public boolean onItemUse(ItemStack itemstack, EntityPlayer entityplayer, World world, int i, int j, int k, int l)
|
||||
{
|
||||
|
||||
if(!world.isRemote)
|
||||
{
|
||||
|
||||
i += Facing.offsetsXForSide[l];
|
||||
j += Facing.offsetsYForSide[l];
|
||||
k += Facing.offsetsZForSide[l];
|
||||
|
||||
EntityShoeBot Guard = new EntityShoeBot(world);
|
||||
Guard.setLocationAndAngles((double)i + 0.5D, (double)j + 1.0D, (double)k + 0.5D, 0.0F, 0.0F);
|
||||
world.spawnEntityInWorld(Guard);
|
||||
|
||||
entityplayer.swingItem();
|
||||
--itemstack.stackSize;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package net.minecraft.src.eui.robotics;
|
||||
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.ModelBase;
|
||||
//Model code generated by MCModeller. All animation, AI,
|
||||
//and special features are yours to program. Also keep in
|
||||
//mind that some of these class names may have changed since
|
||||
//wrote this. Make sure to check for compatibility with the
|
||||
//latest version of the Minecraft Coder Pack before attempting
|
||||
//to use this code.
|
||||
import net.minecraft.src.ModelRenderer;
|
||||
|
||||
public class ModelModelShoeBot extends ModelBase
|
||||
{
|
||||
public ModelRenderer body;
|
||||
public ModelRenderer Head;
|
||||
|
||||
public ModelModelShoeBot()
|
||||
{
|
||||
body = new ModelRenderer(this,0, 0);
|
||||
body.addBox(-4.0F, -2.0F, -4.0F, 8, 4, 8, 0);
|
||||
|
||||
Head = new ModelRenderer(this,0, 0);
|
||||
Head.addBox(-2.0F, -2.0F, -2.0F, 4, 4, 4, 0);
|
||||
|
||||
}
|
||||
@Override
|
||||
public void render(Entity par1Entity, float f, float f1, float f2, float f3, float f4, float f5)
|
||||
{
|
||||
this.setRotationAngles(f, f1, f2, f3, f4, f5);
|
||||
body.render(f5);
|
||||
Head.render(f5);
|
||||
}
|
||||
private void setRotation(ModelRenderer model, float x, float y, float z)
|
||||
{
|
||||
model.rotateAngleX = x;
|
||||
model.rotateAngleY = y;
|
||||
model.rotateAngleZ = z;
|
||||
}
|
||||
public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5)
|
||||
{
|
||||
super.setRotationAngles(f, f1, f2, f3, f4, f5);
|
||||
}
|
||||
|
||||
}
|
101
minecraft/net/minecraft/src/eui/robotics/RenderShoeBot.java
Normal file
101
minecraft/net/minecraft/src/eui/robotics/RenderShoeBot.java
Normal file
|
@ -0,0 +1,101 @@
|
|||
package net.minecraft.src.eui.robotics;
|
||||
|
||||
import static net.minecraft.src.forge.IItemRenderer.ItemRenderType.EQUIPPED;
|
||||
import static net.minecraft.src.forge.IItemRenderer.ItemRendererHelper.BLOCK_3D;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.EntityBlaze;
|
||||
import net.minecraft.src.EntityLiving;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.EntityPlayerSP;
|
||||
import net.minecraft.src.EnumAction;
|
||||
import net.minecraft.src.FontRenderer;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.ModelBiped;
|
||||
import net.minecraft.src.ModelBlaze;
|
||||
import net.minecraft.src.ModelGhast;
|
||||
import net.minecraft.src.RenderBlocks;
|
||||
import net.minecraft.src.RenderLiving;
|
||||
import net.minecraft.src.Tessellator;
|
||||
import net.minecraft.src.forge.IItemRenderer;
|
||||
import net.minecraft.src.forge.MinecraftForgeClient;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
public class RenderShoeBot extends RenderLiving
|
||||
{
|
||||
public RenderShoeBot()
|
||||
{
|
||||
super(new ModelModelShoeBot(), 0.5F);
|
||||
}
|
||||
|
||||
protected void renderName(EntityShoeBot par1EntityGuard, double par2, double par4, double par6)
|
||||
{
|
||||
if (Minecraft.isGuiEnabled())
|
||||
{
|
||||
float var8 = 1.6F;
|
||||
float var9 = 0.016666668F * var8;
|
||||
float var10 = par1EntityGuard.getDistanceToEntity(this.renderManager.livingPlayer);
|
||||
float var11 = par1EntityGuard.isSneaking() ? 4.0F : 32.0F;
|
||||
|
||||
if (var10 < var11)
|
||||
{
|
||||
String var12 = par1EntityGuard.getRenderedName();
|
||||
|
||||
|
||||
FontRenderer var13 = this.getFontRendererFromRenderManager();
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef((float)par2 + 0.0F, (float)par4 + 2.3F, (float)par6);
|
||||
GL11.glNormal3f(0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-this.renderManager.playerViewY, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(this.renderManager.playerViewX, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glScalef(-var9, -var9, var9);
|
||||
GL11.glDisable(GL11.GL_LIGHTING);
|
||||
GL11.glTranslatef(0.0F, 0.25F / var9, 0.0F);
|
||||
GL11.glDepthMask(false);
|
||||
GL11.glEnable(GL11.GL_BLEND);
|
||||
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
|
||||
Tessellator var14 = Tessellator.instance;
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
var14.startDrawingQuads();
|
||||
int var15 = var13.getStringWidth(var12) / 2;
|
||||
var14.setColorRGBA_F(0.0F, 0.0F, 0.0F, 0.25F);
|
||||
var14.addVertex((double)(-var15 - 1), -1.0D, 0.0D);
|
||||
var14.addVertex((double)(-var15 - 1), 8.0D, 0.0D);
|
||||
var14.addVertex((double)(var15 + 1), 8.0D, 0.0D);
|
||||
var14.addVertex((double)(var15 + 1), -1.0D, 0.0D);
|
||||
var14.draw();
|
||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
||||
GL11.glDepthMask(true);
|
||||
var13.drawString(var12, -var13.getStringWidth(var12) / 2, 0, 553648127);
|
||||
GL11.glEnable(GL11.GL_LIGHTING);
|
||||
GL11.glDisable(GL11.GL_BLEND);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void renderBot(EntityShoeBot par1Entity, double par2, double par4, double par6, float par8, float par9)
|
||||
{
|
||||
double var13 = par4 - (double)par1Entity.yOffset - 1.2;
|
||||
super.doRenderLiving(par1Entity, par2, var13, par6, par8, par9);
|
||||
}
|
||||
@Override
|
||||
public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9)
|
||||
{
|
||||
this.renderBot((EntityShoeBot)par1Entity, par2, par4, par6, par8, par9);
|
||||
}
|
||||
public void doRenderLiving(EntityLiving par1EntityLiving, double par2, double par4, double par6, float par8, float par9)
|
||||
{
|
||||
this.renderBot((EntityShoeBot)par1EntityLiving, par2, par4, par6, par8, par9);
|
||||
}
|
||||
@Override
|
||||
protected void passSpecialRender(EntityLiving par1EntityLiving, double par2, double par4, double par6)
|
||||
{
|
||||
this.renderName((EntityShoeBot)par1EntityLiving, par2, par4, par6);
|
||||
}
|
||||
|
||||
}
|
47
minecraft/net/minecraft/src/mod_automation.java
Normal file
47
minecraft/net/minecraft/src/mod_automation.java
Normal file
|
@ -0,0 +1,47 @@
|
|||
package net.minecraft.src;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.src.basiccomponents.BasicComponents;
|
||||
import net.minecraft.src.eui.*;
|
||||
import net.minecraft.src.eui.robotics.ModelModelShoeBot;
|
||||
import net.minecraft.src.eui.robotics.RenderShoeBot;
|
||||
import net.minecraft.src.forge.*;
|
||||
import net.minecraft.src.universalelectricity.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
import java.io.*;
|
||||
public class mod_automation extends NetworkMod {
|
||||
static Configuration config = new Configuration((new File(Minecraft.getMinecraftDir(), "config/EUIndustry/SteamPower.cfg")));
|
||||
public static int spawnItemId = configurationProperties();
|
||||
public static Item spawnItem = (new net.minecraft.src.eui.robotics.ItemSpawn(spawnItemId)).setItemName("Bot");
|
||||
@Override
|
||||
public String getVersion() {
|
||||
// TODO change version on each update ;/
|
||||
return "0.0.1";
|
||||
}
|
||||
public static int configurationProperties()
|
||||
{
|
||||
config.load();
|
||||
spawnItemId = Integer.parseInt(config.getOrCreateIntProperty("BotItem", Configuration.CATEGORY_ITEM, 31356).value);
|
||||
config.save();
|
||||
return spawnItemId;
|
||||
}
|
||||
@Override
|
||||
public void load() {
|
||||
//register
|
||||
UniversalElectricity.registerAddon(this, "0.4.5");
|
||||
MinecraftForgeClient.preloadTexture("/eui/Blocks.png");
|
||||
MinecraftForgeClient.preloadTexture("/eui/Items.png");
|
||||
ModLoader.addName((new ItemStack(spawnItem, 1, 0)), "Bot");
|
||||
//...........
|
||||
ModLoader.registerEntityID(net.minecraft.src.eui.robotics.EntityShoeBot.class, "Bot", 101);
|
||||
|
||||
}
|
||||
@Override
|
||||
public void addRenderer(Map map)
|
||||
{
|
||||
map.put(net.minecraft.src.eui.robotics.EntityShoeBot.class, new RenderShoeBot());
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in a new issue