Jump to content

Recommended Posts

Posted

I made a custom furnace that the GUI texture works fine in the eclispe minecraft, but when I open the furnace in regular minecraft it shows black and purple squares.

 

 

Custom GUI code.

 

package minecraftmod;

import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;

import org.lwjgl.opengl.GL11;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

@SideOnly(Side.CLIENT)
public class TutGuiFurnace extends GuiContainer
{
    private TileEntityDarkFurnace furnaceInventory;

    public TutGuiFurnace(InventoryPlayer par1InventoryPlayer, TileEntityDarkFurnace par2TileEntityFurnace)
    {
        super(new ContainerTutFurnace(par1InventoryPlayer, par2TileEntityFurnace));
        this.furnaceInventory = par2TileEntityFurnace;
    }

    /**
     * Draw the foreground layer for the GuiContainer (everything in front of the items)
     */
    protected void drawGuiContainerForegroundLayer(int par1, int par2)
    {
        String s = this.furnaceInventory.isInvNameLocalized() ? this.furnaceInventory.getInvName() : StatCollector.translateToLocal(this.furnaceInventory.getInvName());
        this.fontRenderer.drawString(s, this.xSize / 2 - this.fontRenderer.getStringWidth(s) / 2, 6, 4210752);
        this.fontRenderer.drawString(StatCollector.translateToLocal("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
    }

    /**
     * Draw the background layer for the GuiContainer (everything behind the items)
     */
    protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
    {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.func_110434_K().func_110577_a(new ResourceLocation("titaniummod:/textures/gui/furnace.png"));
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
        int i1;

        if (this.furnaceInventory.isBurning())
        {
            i1 = this.furnaceInventory.getBurnTimeRemainingScaled(12);
            this.drawTexturedModalRect(k + 56, l + 36 + 12 - i1, 176, 12 - i1, 14, i1 + 2);
        }

        i1 = this.furnaceInventory.getCookProgressScaled(24);
        this.drawTexturedModalRect(k + 79, l + 34, 176, 14, i1 + 1, 16);
    }
}

 

 

 

 

Posted

Sigh.

new ResourceLocation("titaniummod", "textures/gui/furnace.png")

Start looking at older threads, questions like these have been answered before.

Posted

Sigh.

new ResourceLocation("titaniummod", "textures/gui/furnace.png")

Start looking at older threads, questions like these have been answered before.

 

so instead of giving the anwser again you just retype exacly a pice of code he pasted ??

or is it a hint that location is not right ??

 

i cant make heads or tales out of your awnser ...

Posted

(i dont know the answer btw BUT) i agree with guff that its kind of annoying when people ask question that have already been answered, they're losing time because they have to wait longer then if they searched and we're losing time because we have to read and repeat a solution already answered.  plus the search engine on the forum is good

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

whats wrong with the helping others in the world .. no one has time Anny more lol :S..

Anny way i can see your problem it might be true but still. i went into the history back far .. and still dint find the solutions hes talking about..

so maybe he did look but dint find it?like me ??

I'm searching for the same awnser because i want to have a custom GUI .. but when i load the location i get black and pink GUI .. meaning it cant find my GUI.

 

just need to know hot do get the right location for it in mcp`for MC 1.6.2 .. in 1.5.1 is easy its almost the same as 1.4.7 but 1.6.2 is so different with the textures i cant make heads or tale out of it..

so would you be so kind to direct met to the solution ??

Posted

Nope that didnt work, as I said the code works perfectly fine in the Eclipse copy of Minecraft. As earth said I did look and found nothing that actually related to and/or fixed my error. The problem is that it wont load in the actual version of minecraft. Instead of you guys giving answers that you assume will work, how about you look at your own code and see whats happening in my situation to see if that code applies here. I do appreciate your answers but its annoying when you guys just paste a line of code expecting it to work.

 

What just happened!? this is with your code. (in eclipse environment)

 

femlqp.png

Posted

I know I saw that yesterday but what is this?

 

    public static ResourceLocation houseGen_Img = new ResourceLocation("mschouses", "gui/BlockBase.png");

 

is that the class name?

Posted

public static ResourceLocation [color=red]houseGen_Img[/color] = new ResourceLocation("mschouses", "gui/BlockBase.png");

 

the red thing???  you're asking what "houseGen_Img" is ?

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

yes, unless it's impossible for me to ask questions on a help forum without people making fools out of beginners. Im asking why is the housegen there is that where i should put my class name?

Posted

ok

 

if i say

int i;

 

whats "i"

 

question 2:

if i say

Item asd;

 

whats "asd"

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

Item asd; would be telling forge what you are creating, it is like making something new (if we are talking forge here)

 

int i; is an integer (correct me if im wrong)

 

asd is the item your creating, now can we get back to helping me

Posted

no im serious, if you cant tell me exactly that "asd" and "i" are the variable names... you SERIOUSLY need to start learning java.....

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

I know what variables are and I learned from thenewboston im not stupid, I know java all I need help with is some fucking texture loading. I am so sorry I cant learn new methods in 10 seconds because mojang changes them every update.

Posted
I know what variables are and I learned from thenewboston im not stupid

 

well wtf do you think "houseGen_Img" is ?

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Posted

thx guff got it working again :))

 

huis is working again.

textures are workign again when i place the block.

 

now i need to fix the texture when your holding the block .. becose it dusnt show the front texture only sides and top .. when i hold my block

Posted

thx guff got it working again :))

 

huis is working again.

textures are workign again when i place the block.

 

now i need to fix the texture when your holding the block .. becose it dusnt show the front texture only sides and top .. when i hold my block

 

that'll be your metadata, i guess.

 

if you use the metadata to determine the side of the face in the following way (or similarly) then it will not render the face

public Icon getIcon(int side, int meta)
{
    if(side == 0) return iconBottom;
    else if(side == 1) return iconTop;
    else if(side == meta) return iconFront;
    else return iconSide;
}

 

in your hand the meta will most likely be 0, so all textures will be the side, top or bottom. you can ether change if(side==meta) to if(side==meta ^ (meta==0 && side==3/*this may be different, possibly 2,3,4,5*/))

alternatively you can change the metadata dropped to the number you would have used above

Posted

this wroks fine.. at the place block texture

 

public Icon getIcon(int side, int meta)

{

    if(side == 0) return iconBottom;

    else if(side == 1) return iconTop;

    else if(side == meta) return iconFront;

    else return iconSide;

}

 

but when you are holding the block and seeing it in NEI or creative tab it still dusnt show the front :S

 

this is the code before i changed it to the top code.

 

return par1 == 1 ? this.blockIconTop : (par1 == 0 ? this.blockIconTop : (par1 != par2 ? this.blockIcon : this.blockIconFront));

 

i jsut dont udnerstadn when your holding the item it dusnt show the front but when you place it it does .. it evne updates correctly :S

 

greets

 

 

Posted

that's what I was sayinh, when you hold the block the meta is 0, therefore it will never reach the front icon, and will only render top bottom and sides. By changing the code to:

public Icon getIcon(int side, int meta)
{
    if(side == 0) return iconBottom;
    else if(side == 1) return iconTop;
    else if(side == meta || (meta == 0 && side == 2/*this may need a different value, possible values are 2,3,4,5*/)) return iconFront;
    else return iconSide;
}

 

you check to see if the meta is 0, which implies to the game that it is in your hand. If that is true, then it will render the front icon on one of the sides, rather than omitting it.

Posted

are you remembering to include the texture in your zip file (with the correct path)? just saying it's been done before...

 

new ResourceLocation("titaniummod", "textures/GUI/furnace.png")

 

so yeah still no good awnser on how to fix GUI textures outside of eclipse ??

 

I'm running into that problem now to and i have all the pathnames and locations written down correct .. but in eclipse it works ..

and when i test my mod all block/item textures work perfect ..

but my GUI wont work it shows pink/black squares as GUI .. so that means it cant find the path or the path isn't correct ..

 

and hes i have all the path names in my.zip files

dusnt seem to work and iv tryd allot of pathfiles  even the original pathfile for the furnace GUI dint work ..

 

so help ?

Posted

There are lots of threads with "textures" on the title...maybe they are related ?  ::)

 

Anyway, you didn't give your code nor textures path, so by pure guess: try with lower case ? :)

Posted

There are lots of threads with "textures" on the title...maybe they are related ?  ::)

 

Anyway, you didn't give your code nor textures path, so by pure guess: try with lower case ? :)

 

so yea iv tryd searching for it .. but ditn find anny awnser.

 

 

package Earth.Combiner.MachineUtilety;

import Earth.Combiner.CombinerCore;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;

import org.lwjgl.opengl.GL11;

@SideOnly(Side.CLIENT)
public class GuiCombMachine extends GuiContainer
{
    private static final ResourceLocation field_110410_t = new ResourceLocation("combinercore", "/textures/gui/combheater.png");
    
    private TileEntityCombMachine commachineInventory;

    public GuiCombMachine(InventoryPlayer par1InventoryPlayer, TileEntityCombMachine par2TileEntityCombMachine)
    {
        super(new ContainerCombMachine(par1InventoryPlayer, par2TileEntityCombMachine));
        this.commachineInventory = par2TileEntityCombMachine;
    }

    /**
     * Draw the foreground layer for the GuiContainer (everything in front of the items)
     */
    protected void drawGuiContainerForegroundLayer(int par1, int par2)
    {
        String s = this.commachineInventory.isInvNameLocalized() ? this.commachineInventory.getInvName() : I18n.func_135053_a(this.commachineInventory.getInvName());
        this.fontRenderer.drawString(s, this.xSize / 2 - this.fontRenderer.getStringWidth(s) / 2, 6, 4210752);
        this.fontRenderer.drawString(I18n.func_135053_a("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
    }

    /**
     * Draw the background layer for the GuiContainer (everything behind the items)
     */
    protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
    {
        GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
        this.mc.func_110434_K().func_110577_a(field_110410_t);
        int k = (this.width - this.xSize) / 2;
        int l = (this.height - this.ySize) / 2;
        this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
        int i1;

        if (this.commachineInventory.isCombining())
        {
        	this.drawTexturedModalRect(k+31, l+38, 176, 32, 12, 12);
            i1 = this.commachineInventory.getCombTimeRemainingScaled(12);
            this.drawTexturedModalRect(k + 78, l + 54 + 12 - i1, 176, 12 - i1, 14, i1 + 2);
        }

        i1 = this.commachineInventory.getCombDurProgressScaled(24);
        this.drawTexturedModalRect(k + 70, l + 34, 176, 14, i1 + 1, 16);
    }
}

 

 

here is my code ...

 

the location and textures are all lower case idd .. this works in eclipse but dusnt work outside of ecplipse ... and yes im using same version mc and same version of forge outside of

eclipse ...

 

and i am talking about the texture of the gui not the gui itselve .. the gui itselve works but the texture wont work outside of eclipse ..

 

anny sugestions on why it dusnt work outside eclipse ??

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • It is 1.12.2 - I have no idea if there is a 1.12 pack
    • Okay, but does the modpack works with 1.12 or just with 1.12.2, because I need the Forge client specifically for Minecraft 1.12, not 1.12.2
    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.