Jump to content
Search In
  • More options...
Find results that contain...
Find results in...


  • Posts

  • Joined

  • Last visited

BerryHeyy's Achievements

Tree Puncher

Tree Puncher (2/8)



  1. So I'm using ColorHandlerEvent right now to color my items, but I'm not getting the desired effect. Is there any way of shifting a texture's hue instead of just applying a flat color to it?
  2. I figured it out myself, thanks. I had to uncomment this line in the build.gradle: makeObfSourceJar = false
  3. Here it is: https://github.com/BerryHeyy/chemitest This is not my mod, its just a new one I created to recreate the problem I'm having.
  4. Hey, I added an access transformer to my mod, and now my console isn't working. I'm in IntelliJ and it says this: [21:14:52] [main/INFO]: Managed to load a deobfuscated Minecraft name- we are in a deobfuscated environment. Skipping runtime deobfuscation [21:14:52] [main/INFO]: Detected deobfuscated environment, loading log configs for colored console logs. 2019-05-26 21:14:53,231 main ERROR Error processing element LoggerNamePatternSelector ([PatternLayout: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,232 main ERROR Error processing element TerminalConsole ([Appenders: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,232 main ERROR Error processing element LoggerNamePatternSelector ([PatternLayout: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,247 main ERROR Unable to locate appender "Console" for logger config "root" 2019-05-26 21:14:53,449 main ERROR Error processing element LoggerNamePatternSelector ([PatternLayout: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,451 main ERROR Error processing element TerminalConsole ([Appenders: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,451 main ERROR Error processing element LoggerNamePatternSelector ([PatternLayout: null]): CLASS_NOT_FOUND 2019-05-26 21:14:53,458 main ERROR Unable to locate appender "Console" for logger config "root" This is my AT file: public net.minecraft.client.gui.FontRenderer field_78303_s #randomStyle public net.minecraft.client.gui.FontRenderer field_78299_w #strike public net.minecraft.client.gui.FontRenderer field_78300_v #underline public net.minecraft.client.gui.FontRenderer field_78301_u #italic public net.minecraft.client.gui.FontRenderer field_78302_t #bold public net.minecraft.client.gui.FontRenderer field_78285_g #colorCode public net.minecraft.client.gui.FontRenderer field_78291_n #red public net.minecraft.client.gui.FontRenderer field_78292_o #blue public net.minecraft.client.gui.FontRenderer field_78305_q #alpha public net.minecraft.client.gui.FontRenderer field_78306_p #green public net.minecraft.client.gui.FontRenderer field_78304_r #textColor public net.minecraft.client.gui.FontRenderer field_78293_l #unicodeFlag public net.minecraft.client.gui.FontRenderer field_78294_m #bidiFlag public net.minecraft.client.gui.FontRenderer field_111273_g #locationFontTexture public net.minecraft.client.gui.FontRenderer field_78298_i #renderEngine public net.minecraft.server.MinecraftServer field_175591_ab #currentTime public net.minecraft.world.chunk.Chunk field_76652_q #storageArrays public net.minecraft.world.chunk.Chunk field_76638_b #precipitationHeightMap public net.minecraft.client.renderer.ActiveRenderInfo field_178813_c #PROJECTION public net.minecraft.client.renderer.ActiveRenderInfo field_178812_b #MODELVIEW public net.minecraft.client.renderer.ActiveRenderInfo field_178814_a #VIEWPORT public net.minecraft.client.gui.FontRenderer func_78272_b(C)Z #isFormatColor public net.minecraft.client.gui.FontRenderer func_147647_b(Ljava/lang/String;)Ljava/lang/String; # bidiReorder public net.minecraft.client.gui.FontRenderer func_78265_b()V # resetStyles public net.minecraft.client.gui.FontRenderer func_181559_a(CZ)F # renderChar public net.minecraft.client.gui.inventory.GuiContainer func_146977_a(Lnet/minecraft/inventory/Slot;)V #drawSlot public net.minecraft.client.gui.inventory.GuiContainer func_146981_a(Lnet/minecraft/inventory/Slot;II)Z #isMouseOverSlot public net.minecraft.client.gui.FontRenderer func_180455_b(Ljava/lang/String;FFIZ)I #renderString public net.minecraft.client.gui.FontRenderer func_78259_e(Ljava/lang/String;I)I #sizeStringToWidth public net.minecraft.client.gui.FontRenderer func_78255_a(Ljava/lang/String;Z)V #renderStringAtPos public net.minecraft.client.gui.FontRenderer func_78280_d(Ljava/lang/String;I)Ljava/lang/String; #wrapFormattedStringToWidth The game just works fine, its just the console. I have already run setupDecompWorkspace at the beginning and did it again just to be sure to no avail. I also tried running the game without the access transformer and then it works just fine. My build.gradle is also set up correctly. Did I forget something? Thanks for reading my post.
  5. Yeah. But how would I go about implementing it? Like a general idea. I have no clue on which functions to use or where to use them because I have never done any rendering outside of just blocks and json models.
  6. Hey, I was wondering if it was possible to render a wireframe model (Like the attached image). Like a Holo-Projector which you right click and then a spinning hologram appears. Like in sci-fi movies. I'd really appreciate any help. Thanks.
  7. Yeah I did that before cloning the itemstacks, but I soon realised I needed to copy the itemstacks, and forgot to remove the clone for the array. Whoops Hehe, he just got me on my feet to begin modding, as I already have past programming experience. I'll try to fix all these bad practices. Thanks for noting this one out.
  8. Wow. That makes sense. Thanks a lot man. if(this.canSmelt() && this.isBurning()) { ItemStack[] outputs = RecipeBlastFurnace.getInstance().getResults(input).clone(); if(outputs != null) { this.outputs = new ItemStack[]{outputs[0].copy(), outputs[1].copy()}; cookTime++; this.currentlySmelting = input.getItem(); handler.setStackInSlot(0, input); dirtyMark = true; } } I did this to fix it. There's probably a better solution to this. But this seems to be working fine. Thanks again.
  9. I get it, but what am I supposed to do? Clone the itemstack and then add the cloned stacks to my outputs? Why? You are just wasting a CPU cycle at that point. Doesn't really matter, but still, why? This was just to test some things out to fix it. I thought something was adding the outputs up together, so I tried clearing it every time I got the outputs.
  10. Hey, I have a problem which I've been trying to solve for the past hour. I've made a custom furnace, a blast furnace, and it smelts 1 item (hematite) into 2 items (2 magnetite & slag) if the temperature is over 434. Everything is fine until you remove the items at the output, it all goes down hill after that. I've also rigged up some loggers to see what's inside the outputs array. Testing results: 1 Hematite in the input, 1 coke in the fuel input: Everything seems to be working fine. Magnetite increases with 2 every cycle, and slag with 1. The output arrays show the correct numbers, 2xmagnetite 1xslag. But when I remove the items in the output slot. The loggers show 0xair 0xair and the cycles continue but no output items are being made. The same happens when I remove the input and put it back. I really don't know whats causing this. Here's my code; (Blast furnace tile entity) package com.bonphy.chemicraft.block.tileentity; import com.bonphy.chemicraft.ChemiCraft; import com.bonphy.chemicraft.block.blocks.BlockBlastFurnace; import com.bonphy.chemicraft.block.recipes.RecipeBlastFurnace; import com.bonphy.chemicraft.init.ItemRef; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.*; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; import net.minecraft.util.ITickable; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.TextComponentString; import net.minecraft.util.text.TextComponentTranslation; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.items.CapabilityItemHandler; import net.minecraftforge.items.ItemStackHandler; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class TileEntityBlastFurnace extends TileEntity implements ITickable { private ItemStackHandler handler = new ItemStackHandler(4); private String customName; private ItemStack[] outputs = null; private int burnTime; private int currentBurnTime; private int cookTime; private int totalCookTime = 200; private int temperature; private int maxTemperature = 1000; private Item currentlySmelting; Logger logger = LogManager.getLogger(ChemiCraft.MODID); @Override public boolean hasCapability(Capability<?> capability, EnumFacing facing) { if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return true; else return false; } @Override public <T> T getCapability(Capability<T> capability, EnumFacing facing) { if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) return (T) this.handler; return super.getCapability(capability, facing); } public boolean hasCustomName() { return this.customName != null && !this.customName.isEmpty(); } public void setCustomName(String customName) { this.customName = customName; } @Override public ITextComponent getDisplayName() { return this.hasCustomName() ? new TextComponentString(this.customName) : new TextComponentTranslation("container.electrolyzer_block"); } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); this.handler.deserializeNBT(compound.getCompoundTag("Inventory")); this.burnTime = compound.getInteger("BurnTime"); this.cookTime = compound.getInteger("CookTime"); this.totalCookTime = compound.getInteger("CookTimeTotal"); this.temperature = compound.getInteger("temperature"); this.currentBurnTime = getItemBurnTime((ItemStack)this.handler.getStackInSlot(2)); if(compound.hasKey("CustomName", 8)) this.setCustomName(compound.getString("CustomName")); } @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { super.writeToNBT(compound); compound.setInteger("BurnTime", (short)this.burnTime); compound.setInteger("CookTime", (short)this.cookTime); compound.setInteger("CookTimeTotal", (short)this.totalCookTime); compound.setInteger("temperature", (short)this.temperature); compound.setTag("Inventory", this.handler.serializeNBT()); if(this.hasCustomName()) compound.setString("CustomName", this.customName); return compound; } public boolean isBurning() { return this.burnTime > 0; } @SideOnly(Side.CLIENT) public static boolean isBurning(TileEntityBlastFurnace te) { return te.getField(0) > 0; } public void update() { boolean dirtyMark = false; if (handler.getStackInSlot(0).isEmpty()) { this.cookTime = 0; this.currentlySmelting = null; this.outputs = null; dirtyMark = true; } if(this.isBurning()) { --this.currentBurnTime; if (this.temperature < this.maxTemperature) { this.temperature += 1; } BlockBlastFurnace.setState(true, world, pos); } if(!this.isBurning()) { if (this.temperature != 0) { this.temperature -= 3; } } ItemStack input = handler.getStackInSlot(0); ItemStack fuel = handler.getStackInSlot(1); if(this.isBurning() || !fuel.isEmpty()) { if(!this.isBurning() && this.canSmelt()) { this.burnTime = getItemBurnTime(fuel); this.currentBurnTime = burnTime; if(this.isBurning() && !fuel.isEmpty()) { dirtyMark = true; Item item = fuel.getItem(); fuel.shrink(1); if(fuel.isEmpty()) { ItemStack item1 = item.getContainerItem(fuel); this.handler.setStackInSlot(1, item1); } } } } if(this.isBurning() && this.canSmelt() && cookTime > 0) { if (cookTime != totalCookTime) { cookTime++; } if(cookTime == totalCookTime) { if (this.currentlySmelting.equals(ItemRef.HEMATITE_ITEM) && this.temperature > 454) { if(!handler.getStackInSlot(2).isEmpty() && !handler.getStackInSlot(3).isEmpty()) { handler.getStackInSlot(2).grow(2); handler.getStackInSlot(3).grow(1); this.currentlySmelting = null; outputs = null; cookTime = 0; input.shrink(1); dirtyMark = true; } else { handler.insertItem(2, outputs[0], false); handler.insertItem(3, outputs[1], false); this.currentlySmelting = null; outputs = null; cookTime = 0; input.shrink(1); dirtyMark = true; } } } } else { if(this.canSmelt() && this.isBurning()) { ItemStack[] outputs = RecipeBlastFurnace.getInstance().getResults(input); if(outputs != null) { this.outputs = null; this.outputs = outputs; logger.info(outputs[0] + "" + outputs[1]); cookTime++; this.currentlySmelting = input.getItem(); handler.setStackInSlot(0, input); dirtyMark = true; } } } if(dirtyMark) { this.markDirty(); } } private boolean canSmelt() { if((this.handler.getStackInSlot(0)).isEmpty()) return false; else { ItemStack[] results = RecipeBlastFurnace.getInstance().getResults(this.handler.getStackInSlot(0)); if(results == null) return false; else { ItemStack[] outputs = new ItemStack[] {this.handler.getStackInSlot(2), this.handler.getStackInSlot(3)}; if(outputs[0].isEmpty() && outputs[1].isEmpty()) return true; if(!outputs[0].isItemEqual(results[0]) && !outputs[1].isItemEqual(results[1])) return false; int res0 = outputs[0].getCount() + results[0].getCount(); int res1 = outputs[1].getCount() + results[1].getCount(); return res0 <= 64 && res0 <= outputs[0].getMaxStackSize() && res1 <= 64 && res1 <= outputs[1].getMaxStackSize(); } } } public static int getItemBurnTime(ItemStack fuel) { if(fuel.isEmpty()) return 0; else { Item item = fuel.getItem(); if (item == ItemRef.COKE_ITEM) return 2400; return GameRegistry.getFuelValue(fuel); } } public static boolean isItemFuel(ItemStack fuel) { return getItemBurnTime(fuel) > 0; } public boolean isUsableByPlayer(EntityPlayer player) { return this.world.getTileEntity(this.pos) != this ? false : player.getDistanceSq((double)this.pos.getX() + 0.5D, (double)this.pos.getY() + 0.5D, (double)this.pos.getZ() + 0.5D) <= 64.0D; } public int getField(int id) { switch(id) { case 0: return this.burnTime; case 1: return this.currentBurnTime; case 2: return this.cookTime; case 3: return this.totalCookTime; case 4: return this.temperature; case 5: return this.maxTemperature; default: return 0; } } public void setField(int id, int value) { switch(id) { case 0: this.burnTime = value; break; case 1: this.currentBurnTime = value; break; case 2: this.cookTime = value; break; case 3: this.totalCookTime = value; break; case 4: this.temperature = value; break; } } } (Recipes class for blast furnace) package com.bonphy.chemicraft.block.recipes; import com.bonphy.chemicraft.init.ItemRef; import net.minecraft.item.ItemStack; import java.util.HashMap; import java.util.Map; public class RecipeBlastFurnace { private static final RecipeBlastFurnace INSTANCE = new RecipeBlastFurnace(); private final Map<ItemStack, ItemStack[]> recipesList = new HashMap<>(); public static RecipeBlastFurnace getInstance() { return INSTANCE; } private RecipeBlastFurnace() { addSinteringRecipe(new ItemStack(ItemRef.HEMATITE_ITEM), new ItemStack(ItemRef.MAGNETITE_ITEM, 2), new ItemStack(ItemRef.SLAG_ITEM,1)); } public void addSinteringRecipe(ItemStack input, ItemStack output1, ItemStack output2) { if(getResults(input) != null) return; this.recipesList.put(input, new ItemStack[]{output1, output2}); } public ItemStack[] getResults(ItemStack input) { for(Map.Entry<ItemStack, ItemStack[]> entry : this.recipesList.entrySet()) { if(this.compareItemStacks(input, entry.getKey())) { return entry.getValue(); } } return null; } private boolean compareItemStacks(ItemStack stack1, ItemStack stack2) { return stack2.getItem() == stack1.getItem() && (stack2.getMetadata() == 32767 || stack2.getMetadata() == stack1.getMetadata()); } } (Blast furnace GUI, still work in progress don't worry) Thanks for reading my question, and I would be thankful if you can help me. -Berry
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.