Jump to content

BerryHeyy

Members
  • Posts

    11
  • Joined

  • Last visited

Posts posted by BerryHeyy

  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?

    • Confused 1
  2. 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.

  3. 1 minute ago, Draco18s said:

    Yes.

    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.

  4. 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.

    1.jpg

  5. 1 hour ago, V0idWa1k3r said:

    Oh, you are right, I totally missed them cloning the array.

    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

     

    On 5/8/2019 at 1:00 AM, DavidM said:

    Moreover, stop following HarryTalks' tutorials

    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.

  6. 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.

  7. I get it, but what am I supposed to do? Clone the itemstack and then add the cloned stacks to my outputs?

     

    10 minutes ago, V0idWa1k3r said:
    20 minutes ago, BerryHeyy said:

    this.outputs = null; this.outputs = 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.

  8. 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)

    image.png.37a5259f5272f47dcbdc8d5c5a33a6df.png

     

     

     

    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 Terms of Use.