Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class EntityListener {
public void registerEntities(EntityRegisterEvent event) {
event.register(NAMESPACE.id("test"), TestEntity.class);
event.register(NAMESPACE.id("gpoor"), PoorGuy.class);
event.register(NAMESPACE.id("stone"), StoneEntity.class);
}

@EventListener
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package net.modificationstation.sltest.entity;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.util.math.Box;
import net.minecraft.world.World;

public class StoneEntity extends Entity {
public StoneEntity(World world) {
super(world);
setBoundingBoxSpacing(1, 1);
}

@Override
public boolean interact(PlayerEntity player) {
this.setCobblestone(!this.isCobblestone());
return true;
}

@Override
public boolean damage(Entity damageSource, int amount) {
this.markDead();
return true;
}

@Override
public Box getCollisionAgainstShape(Entity other) {
return other.boundingBox;
}

@Override
public Box getBoundingBox() {
return this.boundingBox;
}

@Override
protected void initDataTracker() {
dataTracker.startTracking(16, 0);
}

@Override
protected void readNbt(NbtCompound nbt) {
this.setCobblestone(nbt.getBoolean("cobblestone"));
}

@Override
protected void writeNbt(NbtCompound nbt) {
nbt.putBoolean("cobblestone", this.isCobblestone());
}

@Override
public boolean isCollidable() {
return true;
}

public boolean isCobblestone() {
return dataTracker.getInt(16) != 0;
}

public void setCobblestone(boolean cobblestone) {
dataTracker.set(16, cobblestone ? 1 : 0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
import net.minecraft.client.render.entity.UndeadEntityRenderer;
import net.minecraft.client.render.entity.model.BipedEntityModel;
import net.modificationstation.sltest.entity.PoorGuy;
import net.modificationstation.sltest.entity.StoneEntity;
import net.modificationstation.stationapi.api.client.event.render.entity.EntityRendererRegisterEvent;

public class EntityRendererListener {

@EventListener
public void registerEntityRenderers(EntityRendererRegisterEvent event) {
event.register(PoorGuy.class, new UndeadEntityRenderer(new BipedEntityModel(), 0.5f));
event.register(StoneEntity.class, new StoneEntityRenderer());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package net.modificationstation.sltest.render.entity;

import net.minecraft.block.Block;
import net.minecraft.client.render.block.BlockRenderManager;
import net.modificationstation.sltest.entity.StoneEntity;
import net.modificationstation.stationapi.api.template.entityrenderer.TemplateEntityRenderer;
import org.lwjgl.opengl.GL11;

public class StoneEntityRenderer extends TemplateEntityRenderer<StoneEntity> {
private static final BlockRenderManager blockRenderManager = new BlockRenderManager();

@Override
public void renderEntity(StoneEntity entity, double x, double y, double z, float yaw, float tickDelta) {
GL11.glPushMatrix();
GL11.glTranslatef((float)x, (float)y + 0.5F, (float)z);
this.bindTexture("/terrain.png");
blockRenderManager.render(entity.isCobblestone() ? Block.COBBLESTONE : Block.STONE, 0, entity.getBrightnessAtEyes(tickDelta));
GL11.glPopMatrix();
}

@Override
public void postRenderEntity(StoneEntity entity, double dx, double dy, double dz, float yaw, float tickDelta) {

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package net.modificationstation.stationapi.api.template.entityrenderer;

import net.minecraft.entity.Entity;

public interface EntityRendererTemplate<T extends Entity> {
void renderEntity(T entity, double x, double y, double z, float yaw, float tickDelta);

void postRenderEntity(T entity, double dx, double dy, double dz, float yaw, float tickDelta);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package net.modificationstation.stationapi.api.template.entityrenderer;

import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.entity.Entity;

@SuppressWarnings("unchecked")
public abstract class TemplateEntityRenderer<T extends Entity> extends EntityRenderer implements EntityRendererTemplate<T>{
@Override
public void render(Entity entity, double x, double y, double z, float yaw, float pitch) {
this.renderEntity((T)entity, x, y, z, yaw, pitch);
}

@Override
public void postRender(Entity entity, double dx, double dy, double dz, float yaw, float tickDelta) {
this.postRenderEntity((T)entity, dx, dy, dz, yaw, tickDelta);
}

@Override
public abstract void renderEntity(T entity, double x, double y, double z, float yaw, float tickDelta);

@Override
public abstract void postRenderEntity(T entity, double dx, double dy, double dz, float yaw, float tickDelta);
}