
KeeganDeathman
Forge Modder-
Posts
434 -
Joined
-
Last visited
Everything posted by KeeganDeathman
-
[1.10.2] Issues with custom leaves
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Thank you! Unfortunatley I can't view the json error for the block as it's being supressed under some other errors that don't affect anything so it's okay -
So I am updating my tree, and the leaves are being stubborn. They use the vanilla oak leaves texture, but they render gray as items, and missing texture as a block. package keegan.labstuff.blocks; import java.util.*; import javax.annotation.Nullable; import net.minecraft.block.*; import net.minecraft.block.BlockPlanks.EnumType; import net.minecraft.block.properties.*; import net.minecraft.block.state.*; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.item.*; import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.world.*; import net.minecraftforge.common.IShearable; import net.minecraftforge.fml.relauncher.*; public class BlockRubberLeaves extends BlockLeaves implements IShearable { public static final PropertyBool DECAYABLE = PropertyBool.create("decayable"); public static final PropertyBool CHECK_DECAY = PropertyBool.create("check_decay"); @Override public BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[]{DECAYABLE, CHECK_DECAY}); } @Override public int getMetaFromState(IBlockState state) { return state.getValue(DECAYABLE) ? 2 : 1; } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(DECAYABLE, meta == 2); } int[] field_150128_a; @SideOnly(Side.CLIENT) protected int field_150127_b; private static final String __OBFID = "CL_00000263"; int[] surroundings; public BlockRubberLeaves() { super(); this.setTickRandomly(true); this.setCreativeTab(CreativeTabs.DECORATIONS); this.setHardness(0.2F); this.setLightOpacity(1); } @SideOnly(Side.CLIENT) public int getBlockColor() { return 6396257; } /** * Returns the color this block should be rendered. Used by leaves. */ @SideOnly(Side.CLIENT) public int getRenderColor(int p_149741_1_) { return ColorizerFoliage.getFoliageColorBasic(); } public void breakBlock(World worldIn, BlockPos pos, IBlockState state) { int i = 1; int j = 2; int k = pos.getX(); int l = pos.getY(); int i1 = pos.getZ(); if (worldIn.isAreaLoaded(new BlockPos(k - 2, l - 2, i1 - 2), new BlockPos(k + 2, l + 2, i1 + 2))) { for (int j1 = -1; j1 <= 1; ++j1) { for (int k1 = -1; k1 <= 1; ++k1) { for (int l1 = -1; l1 <= 1; ++l1) { BlockPos blockpos = pos.add(j1, k1, l1); IBlockState iblockstate = worldIn.getBlockState(blockpos); if (iblockstate.getBlock().isLeaves(iblockstate, worldIn, blockpos)) { iblockstate.getBlock().beginLeavesDecay(iblockstate, worldIn, blockpos); } } } } } } /** * Ticks the block if it's been scheduled */ public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) { if (!worldIn.isRemote) { if (((Boolean)state.getValue(CHECK_DECAY)).booleanValue() && ((Boolean)state.getValue(DECAYABLE)).booleanValue()) { int i = 4; int j = 5; int k = pos.getX(); int l = pos.getY(); int i1 = pos.getZ(); int j1 = 32; int k1 = 1024; int l1 = 16; if (this.surroundings == null) { this.surroundings = new int[32768]; } if (worldIn.isAreaLoaded(new BlockPos(k - 5, l - 5, i1 - 5), new BlockPos(k + 5, l + 5, i1 + 5))) { BlockPos.MutableBlockPos blockpos$mutableblockpos = new BlockPos.MutableBlockPos(); for (int i2 = -4; i2 <= 4; ++i2) { for (int j2 = -4; j2 <= 4; ++j2) { for (int k2 = -4; k2 <= 4; ++k2) { IBlockState iblockstate = worldIn.getBlockState(blockpos$mutableblockpos.setPos(k + i2, l + j2, i1 + k2)); Block block = iblockstate.getBlock(); if (!block.canSustainLeaves(iblockstate, worldIn, blockpos$mutableblockpos.setPos(k + i2, l + j2, i1 + k2))) { if (block.isLeaves(iblockstate, worldIn, blockpos$mutableblockpos.setPos(k + i2, l + j2, i1 + k2))) { this.surroundings[(i2 + 16) * 1024 + (j2 + 16) * 32 + k2 + 16] = -2; } else { this.surroundings[(i2 + 16) * 1024 + (j2 + 16) * 32 + k2 + 16] = -1; } } else { this.surroundings[(i2 + 16) * 1024 + (j2 + 16) * 32 + k2 + 16] = 0; } } } } for (int i3 = 1; i3 <= 4; ++i3) { for (int j3 = -4; j3 <= 4; ++j3) { for (int k3 = -4; k3 <= 4; ++k3) { for (int l3 = -4; l3 <= 4; ++l3) { if (this.surroundings[(j3 + 16) * 1024 + (k3 + 16) * 32 + l3 + 16] == i3 - 1) { if (this.surroundings[(j3 + 16 - 1) * 1024 + (k3 + 16) * 32 + l3 + 16] == -2) { this.surroundings[(j3 + 16 - 1) * 1024 + (k3 + 16) * 32 + l3 + 16] = i3; } if (this.surroundings[(j3 + 16 + 1) * 1024 + (k3 + 16) * 32 + l3 + 16] == -2) { this.surroundings[(j3 + 16 + 1) * 1024 + (k3 + 16) * 32 + l3 + 16] = i3; } if (this.surroundings[(j3 + 16) * 1024 + (k3 + 16 - 1) * 32 + l3 + 16] == -2) { this.surroundings[(j3 + 16) * 1024 + (k3 + 16 - 1) * 32 + l3 + 16] = i3; } if (this.surroundings[(j3 + 16) * 1024 + (k3 + 16 + 1) * 32 + l3 + 16] == -2) { this.surroundings[(j3 + 16) * 1024 + (k3 + 16 + 1) * 32 + l3 + 16] = i3; } if (this.surroundings[(j3 + 16) * 1024 + (k3 + 16) * 32 + (l3 + 16 - 1)] == -2) { this.surroundings[(j3 + 16) * 1024 + (k3 + 16) * 32 + (l3 + 16 - 1)] = i3; } if (this.surroundings[(j3 + 16) * 1024 + (k3 + 16) * 32 + l3 + 16 + 1] == -2) { this.surroundings[(j3 + 16) * 1024 + (k3 + 16) * 32 + l3 + 16 + 1] = i3; } } } } } } } int l2 = this.surroundings[16912]; if (l2 >= 0) { worldIn.setBlockState(pos, state.withProperty(CHECK_DECAY, Boolean.valueOf(false)), 4); } else { this.destroy(worldIn, pos); } } } } private void destroy(World worldIn, BlockPos pos) { this.dropBlockAsItem(worldIn, pos, worldIn.getBlockState(pos), 0); worldIn.setBlockToAir(pos); } /** * A randomly called display update to be able to add particles or other items for display */ @SideOnly(Side.CLIENT) public void randomDisplayTick(World worldIn, BlockPos pos, Random rand) { if (worldIn.isRainingAt(pos.up()) && !worldIn.getBlockState(pos.down()).isFullyOpaque() && rand.nextInt(15) == 1) { double d0 = (double)((float)pos.getX() + rand.nextFloat()); double d1 = (double)pos.getY() - 0.05D; double d2 = (double)((float)pos.getZ() + rand.nextFloat()); worldIn.spawnParticle(EnumParticleTypes.DRIP_WATER, d0, d1, d2, 0.0D, 0.0D, 0.0D, new int[0]); } } private void removeLeaves(World p_150126_1_, int p_150126_2_, int p_150126_3_, int p_150126_4_) { this.dropBlockAsItem(p_150126_1_, new BlockPos(p_150126_2_, p_150126_3_, p_150126_4_), p_150126_1_.getBlockState(new BlockPos(p_150126_2_, p_150126_3_, p_150126_4_)), 0); p_150126_1_.setBlockToAir(new BlockPos(p_150126_2_, p_150126_3_, p_150126_4_)); } /** * Returns the quantity of items to drop on block destruction. */ public int quantityDropped(Random p_149745_1_) { return p_149745_1_.nextInt(20) == 0 ? 1 : 0; } @Nullable public Item getItemDropped(IBlockState state, Random rand, int fortune) { return Item.getItemFromBlock(Blocks.SAPLING); } /** * Drops the block items with a specified chance of dropping the specified items */ public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune) { super.dropBlockAsItemWithChance(worldIn, pos, state, chance, fortune); } protected void func_150124_c(World p_150124_1_, int p_150124_2_, int p_150124_3_, int p_150124_4_, int p_150124_5_, int p_150124_6_) {} protected int getSaplingDropChance(IBlockState state) { return 20; } /** * Determines the damage on the item the block drops. Used in cloth and wood. */ public int damageDropped(int p_149692_1_) { return p_149692_1_ & 3; } /** * Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two * adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block. */ public boolean isOpaqueCube() { return !this.leavesFancy; } /** * Pass true to draw this block using fancy graphics, or false for fast graphics. */ @SideOnly(Side.CLIENT) public void setGraphicsLevel(boolean p_150122_1_) { this.leavesFancy = p_150122_1_; this.field_150127_b = p_150122_1_ ? 0 : 1; } /** * Returns an item stack containing a single instance of the current block type. 'i' is the block's subtype/damage * and is ignored for blocks which do not support subtypes. Blocks which cannot be harvested should return null. */ protected ItemStack createStackedBlock(int p_149644_1_) { return new ItemStack(Item.getItemFromBlock(this), 1, p_149644_1_ & 3); } @Override public boolean isShearable(ItemStack item, IBlockAccess world, BlockPos pos) { return true; } @Override public ArrayList<ItemStack> onSheared(ItemStack item, IBlockAccess world, BlockPos pos, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); ret.add(new ItemStack(this, 1, getMetaFromState(world.getBlockState(pos)) & 3)); return ret; } @Override public void beginLeavesDecay(IBlockState state, World world, BlockPos pos) { if (!(Boolean)state.getValue(CHECK_DECAY)) { world.setBlockState(pos, state.withProperty(CHECK_DECAY, true), 4); } } @Override public boolean isLeaves(IBlockState state, IBlockAccess world, BlockPos pos) { return true; } @Override public java.util.List<ItemStack> getDrops(IBlockAccess world, BlockPos pos, IBlockState state, int fortune) { ArrayList<ItemStack> ret = new ArrayList<ItemStack>(); Random rand = world instanceof World ? ((World)world).rand : new Random(); int chance = this.getSaplingDropChance(state); if (fortune > 0) { chance -= 2 << fortune; if (chance < 10) chance = 10; } if (rand.nextInt(chance) == 0) ret.add(new ItemStack(this.getItemDropped(state, rand, fortune), 1, this.damageDropped(state))); chance = 200; if (fortune > 0) { chance -= 10 << fortune; if (chance < 40) chance = 40; } this.captureDrops(true); if (world instanceof World) this.dropApple((World)world, pos, state, chance); // Dammet mojang ret.addAll(this.captureDrops(false)); return ret; } @Override public EnumType getWoodType(int meta) { // TODO Auto-generated method stub return EnumType.OAK; } } { "variants": { "decayable=false,check_decay=false": { "model": "labstuff:rubber_leaves" }, "decayable=false,check_decay=true": { "model": "labstuff:rubber_leaves" }, "decayable=true,check_decay=false": { "model": "labstuff:rubber_leaves" }, "decayable=true,check_decay=true": { "model": "labstuff:rubber_leaves" } } } { "parent": "labstuff:block/rubber_leaves" } { "parent": "block/leaves", "textures": { "all": "blocks/leaves_oak" } }
-
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
found it! Now to solve the texture(it's currently stark white) -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Well now it's invisible GlStateManager.enableLighting(); GlStateManager.pushMatrix(); GlStateManager.translate(.5, 0, .5); long angle = (long)te.angle; GlStateManager.rotate(angle, 0, 1, 0); //RenderHelper.disableStandardItemLighting(); this.bindTexture(new ResourceLocation("labstuff:textures/models/solenoid.png")); int bright = 0xF0; int brightX = bright % 65536; int brightY = bright / 65536; OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightX, brightY); if (Minecraft.isAmbientOcclusionEnabled()) { GlStateManager.shadeModel(GL11.GL_SMOOTH); } else { GlStateManager.shadeModel(GL11.GL_FLAT); } World world = te.getWorld(); // Translate back to local view coordinates so that we can do the acual rendering here GlStateManager.translate(-te.getPos().getX(), -te.getPos().getY(), -te.getPos().getZ()); Tessellator tessellator = Tessellator.getInstance(); Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModelBrightness(getBakedModel(), world.getBlockState(te.getPos()), bright, true); //RenderHelper.enableStandardItemLighting(); GlStateManager.popMatrix(); -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Thank you abastro! Silly me. -
[1.10.2] Rotate block-model by small degrees -without- TESR?
KeeganDeathman replied to Matryoshika's topic in Modder Support
I'm unsure. If it does support that in depth, you should be good, although I'd use #scheduleBlockUpdate in stead of #update -
[1.10.2] Rotate block-model by small degrees -without- TESR?
KeeganDeathman replied to Matryoshika's topic in Modder Support
In your block class, declare a property int called angle In your tile entity, extend ITickable, and add to angle(or reset) when needed In your blockstate, {"model":"whatever","y":angle} -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
We get an error now! Caused by: java.lang.IllegalStateException: Already building! at net.minecraft.client.renderer.VertexBuffer.begin(VertexBuffer.java:188) ~[VertexBuffer.class:?] at net.minecraft.client.renderer.BlockModelRenderer.renderModelBrightnessColorQuads(BlockModelRenderer.java:373) ~[blockModelRenderer.class:?] at net.minecraft.client.renderer.BlockModelRenderer.renderModelBrightnessColor(BlockModelRenderer.java:338) ~[blockModelRenderer.class:?] at net.minecraft.client.renderer.BlockModelRenderer.renderModelBrightness(BlockModelRenderer.java:361) ~[blockModelRenderer.class:?] at keegan.labstuff.render.RenderSolenoid.renderHandles(RenderSolenoid.java:86) ~[RenderSolenoid.class:?] at keegan.labstuff.render.RenderSolenoid.renderTileEntityAt(RenderSolenoid.java:52) ~[RenderSolenoid.class:?] at keegan.labstuff.render.RenderSolenoid.renderTileEntityAt(RenderSolenoid.java:1) ~[RenderSolenoid.class:?] at net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher.renderTileEntityAt(TileEntityRendererDispatcher.java:153) ~[TileEntityRendererDispatcher.class:?] ... 20 more -
Oh I know, I meant to clarify that I was calling the obj from a blockstate json, and not a TESR or similar. Also, I am unsure what to post, as mentioned in my OP. I can post any code you wish to see, but I'm unsure which code it would be. Here is my blockstate file: { "variants": { "render=block":{ "model": "labstuff:blocksolenoidaxel" }, "render=air":{ "model": "labstuff:blocksolenoidaxel" }, "render=solenoid":{ "model": "labstuff:solenoid.obj"}, "normal": { "model": "labstuff:blocksolenoidaxel" } } }
-
This is NOT a repost. My other topic dealt with OBJs in IBakedModels rendering black. These are loaded from JSON and are rather dark. Take a shadow. Take another shadow. Couple more. Put that on an obj, there you go, that's the problem. Not quite sure what code to post so just ask
-
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
No dice, still black -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
I was thinking of uv texture mapping . When you add a texture to a 3d model and you kinda pick and choose where it goes. All objs used with MC need to have proper uv mapping done. Then when you place a texture on them they will texture themselves the same way you picked. If you never done the uv map is likely the object will look black. Maybe UV map is in place in the above picture. -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
I re exported with normals, no change. Unless you meant something else? -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
I believe I exported with normals written(it was a little while ago) -
[1.10.2] Obj model renders solid black
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
No change -
I am using an IBakedModel to render an OBJ(it's meant to be animated but that's a struggle for tomorrow), but in game it renders black, when the texture is bright blue and white. package keegan.labstuff.render; import org.lwjgl.opengl.GL11; import keegan.labstuff.tileentity.TileEntitySolenoidAxel; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.block.model.*; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.client.model.*; import net.minecraftforge.client.model.obj.OBJLoader; import net.minecraftforge.common.model.TRSRTransformation; import net.minecraftforge.fml.relauncher.*; @SideOnly(Side.CLIENT) public class RenderSolenoid extends TileEntitySpecialRenderer<TileEntitySolenoidAxel> { private IModel model; private IBakedModel bakedModel; private IBakedModel getBakedModel() { // Since we cannot bake in preInit() we do lazy baking of the model as soon as we need it // for rendering if (bakedModel == null) { try { model = OBJLoader.INSTANCE.loadModel(new ResourceLocation("labstuff", "models/block/solenoid.obj")); } catch (Exception e) { throw new RuntimeException(e); } bakedModel = model.bake(TRSRTransformation.identity(), DefaultVertexFormats.BLOCK, location -> Minecraft.getMinecraft().getTextureMapBlocks().getAtlasSprite(location.toString())); } return bakedModel; } @Override public void renderTileEntityAt(TileEntitySolenoidAxel te, double x, double y, double z, float partialTicks, int destroyStage) { GlStateManager.pushAttrib(); GlStateManager.pushMatrix(); // Translate to the location of our tile entity GlStateManager.translate(x, y, z); GlStateManager.disableRescaleNormal(); // Render the rotating handles if(te.isMultiBlock()) renderHandles(te); GlStateManager.popMatrix(); GlStateManager.popAttrib(); } private void renderHandles(TileEntitySolenoidAxel te) { GlStateManager.pushMatrix(); GlStateManager.translate(.5, 0, .5); long angle = (long)te.angle; GlStateManager.rotate(angle, 0, 1, 0); RenderHelper.disableStandardItemLighting(); this.bindTexture(new ResourceLocation("labstuff:textures/models/solenoid.png")); if (Minecraft.isAmbientOcclusionEnabled()) { GlStateManager.shadeModel(GL11.GL_SMOOTH); } else { GlStateManager.shadeModel(GL11.GL_FLAT); } World world = te.getWorld(); // Translate back to local view coordinates so that we can do the acual rendering here GlStateManager.translate(-te.getPos().getX(), -te.getPos().getY(), -te.getPos().getZ()); Tessellator tessellator = Tessellator.getInstance(); tessellator.getBuffer().begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK); Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelRenderer().renderModel( world, getBakedModel(), world.getBlockState(te.getPos()), te.getPos(), Tessellator.getInstance().getBuffer(), true); tessellator.draw(); RenderHelper.enableStandardItemLighting(); GlStateManager.popMatrix(); } }
-
[1.10.2] Blockstates file makes block invisible
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Attention all. I have realized that I was turning them all into motor shafts, thus why my edits to the contact code had no effect. -
I'm updating my multiblock file. When complete, the blocks all turn invisible and an obj loads. Except it doesn't. Passing in another block model instead also returns nothing. Commenting out or removing the code that makes it invisible has no effect, and the block still turns invisible. In fact, I removed #shouldSideBeRendered and the ground is still rendered through the block. Odd. package keegan.labstuff.blocks; import keegan.labstuff.tileentity.TileEntityIndustrialMotorContact; import net.minecraft.block.*; import net.minecraft.block.material.Material; import net.minecraft.block.properties.*; import net.minecraft.block.state.*; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumBlockRenderType; import net.minecraft.world.*; public class BlockIndustrialMotorContact extends Block implements ITileEntityProvider { public static final PropertyBool VISIBLE = PropertyBool.create("visible"); @Override public BlockStateContainer createBlockState() { return new BlockStateContainer(this, new IProperty[]{VISIBLE}); } public BlockIndustrialMotorContact(Material p_i45394_1_) { super(p_i45394_1_); setDefaultState(getDefaultState().withProperty(VISIBLE, true)); } // @Override // public boolean isOpaqueCube(IBlockState state) // { // return state.getValue(VISIBLE); // // } @Override public int getMetaFromState(IBlockState state) { return (state.getValue(VISIBLE) ? 1 : 0); } @Override public EnumBlockRenderType getRenderType(IBlockState state) { return EnumBlockRenderType.MODEL; } @Override public IBlockState getStateFromMeta(int meta) { return this.getDefaultState().withProperty(VISIBLE, meta > 0); } @Override public TileEntity createNewTileEntity(World worldIn, int meta) { // TODO Auto-generated method stub return new TileEntityIndustrialMotorContact(); } } { "forge_marker":1, "defaults": { "model":"labstuff:blockimotorcontact" }, "variants": { "visible": { "true":{"model":"labstuff:blockimotor"}, "false":{} } } }
-
How exactly do I translate and texture an obj model I'm using as a block model? Right now it's a block too far to the right and white(it is a multiblock structure) Any help? Can't find any documentation on this.
-
[1.10.2] Inventory not persisting.
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Thank you so much Choonster! -
[1.10.2] Inventory not persisting.
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Is it possible that setting the blockstate of POWERED is causing the inventory to not persist? Commenting out the call to set powered to true fixes the inventory issue. -
What I do is implement a function called addPower. When called, the cable searches for nearby cables, except the one it came from, checks it's power levels, and runs addPower accordingly.
-
[1.10.2] Inventory not persisting.
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Wait, no, that can't be it. A println call ran every tick. Something is seriously wrong here. -
Power systems are relatively simple in nature. You need 'machines' that can recieve power, 'generators' which generate power, and some way of transfering that power. Meaning atleast the old way you need three interfaces one for generators that allows you to extract power from it, another one for machines that allows input, and one that allows for both input and output. The way you handle the input and output is all up to you. There is another way, you can achieve this with capabilities there is an EnergyHandler (i believe that is its name) that you can give TileEntities and which is basically a forge energy network. That's a thing now? Damn Anyway, unlike Liquid systems, you only need to pass along an int or float, representing the power level. It's best to create interfaces or capabilities for this. Then, simply add or subtract based on your blocks needs. If you wanted to pass along voltage, amps, etc, I'd recommend packing it up in a class, instead of passing values directly.
-
[1.10.2] Inventory not persisting.
KeeganDeathman replied to KeeganDeathman's topic in Modder Support
Didn't work. It might have to do with the entity not ticking for some reason. Burn time isn't ticking down in the gui, and isn't even getting set(but the latter is after a change I made in an attempt to fix the former)