Jump to content

Recommended Posts

Posted

Hello everyone,

I'm the creator of the Train and Zeppelin mod (http://trains-and-zeppelin.wikispaces.com/), and I'm currently having a rather odd problem with my mod in SMP.

This problem has been there since the first FML version and I though perhaps this would be solved with time and updates, but it hasn't. (I'm using forge version 3.3.7 now)

So here is the problem in pictures:

 

This is the first start of the server:

2012-06-17_14.35.40.png

 

After restarting the server:

2012-06-17_14.34.51.png

 

Restarting again:

2012-06-17_14.36.45.png

 

IDs:

 

package net.minecraft.src.TrainMod;

public class EntityIds {
public static final int  CABOOSE = 1;//
public static final int  FREIGHTCART = 2;//
public static final int  FREIGHTGRAIN = 3;//
public static final int  FREIGHTTENDER = 4;//
public static final int  FREIGHTWATER = 5;//
public static final int  FREIGHTWOOD = 6;//
public static final int  EU07 = 7;//
public static final int  GP40 = 8;//
public static final int  GP40GREEN = 9;//
public static final int  GP7 = 10;//
public static final int  SHUNTER = 11;//
public static final int  SPEED = 12;//
public static final int  STEAM = 13;//
public static final int  STEAMBIG = 14;//
public static final int  STEAMBLUE = 15;//
public static final int  STEAMGREEN= 16;//
public static final int  STEAMGREY = 17;//
public static final int  STEAMYELLOW = 18;//
public static final int  STEAMSMALL = 19;//
public static final int  STEAMSMALLGREEN = 20;//
public static final int  STEAMSMALLRED = 21;//
public static final int  STEAMSMALLYELLOW = 22;//
public static final int  TRAM = 23;//
public static final int  TRAMWOOD = 24;//
public static final int  TRAMYELLOW = 25;//
public static final int  PASSENGER2 = 27;//
public static final int  TRACKSBUILDER = 28;//
public static final int  WORKCART = 29;//
public static final int  ROLLINGSTOCK = 30;//
public static final int  ZEPPELIN = 31;//
public static final int  CHME3 = 32;
public static final int  HEAVYSTEAM = 33;
public static final int  HEAVYTENDER = 34;
public static final int FLATCART = 35;
public static final int NEWHIGHSPEEDLOCO = 36;
public static final int HIGHSPEEDCAR = 37;
public static final int OPENWAGON = 38;
public static final int TANKWAGON = 39;
public static final int PASSENGER4 = 40;
public static final int FREIGHTCART2 = 41;
public static final int JUKEBOX = 42;
public static final int CABOOSEWORK=43;
public static final int STOCKCAR=44;
public static final int PASSENGER5=45;
public static final int VL10=46;
public static final int TANKWAGON2=47;
public static final int PASSENGERBLUE=48;
public static final int PASSENGERCYAN=49;
public static final int PASSENGERDARKBLUE=50;
public static final int PASSENGERGREEN=51;
public static final int PASSENGERLIGHTBLUE=52;
public static final int PASSENGERLIGHTGREEN=53;
public static final int PASSENGERPURPLE=54;
public static final int PASSENGERYELLOW=55;
public static final int GP7Yellow = 56;
public static final int GP7Blue = 57;
public static final int GP7Black = 58;
public static final int GP7Red = 59;


}

 

 

This is how I register the entities (I'm just showing one here, but all are registered like that)

 

/**
	 * Registers a Entity class tracking information. Used for sendingEntity
	 * information over the network.
	 *
	 * @param entityClass The class for the Entity
	 * @param mod The BaseMod that provides this Entity.
	 * @param ID The ID for the Entity. Needs to be unique combination of Mod and ID.
	 * @param range How close a player has to be to be informed this Entity exists.
	 * @param updateFrequency How many ticks between checking and sending information updates for this Entity.
	 * @param sendVelocityInfo If velocity information should be included in the update information.
	 * @return True, if successfully registered. False if the class is already registered.
	 */
	MinecraftForge.registerEntity(EntityFreightCart.class, this, EntityIds.FREIGHTCART, 200, 2, true);

 

 

I have seen this post, so all my IDs are under 128, but that didn't helped

http://minecraftforge.net/forum/index.php?topic=49.0

 

So, any ideas?

Posted

Things should work fine, Try debugging it and seeing if you are receiving the entity spawn packets like you should.

I do Forge for free, however the servers to run it arn't free, so anything is appreciated.
Consider supporting the team on Patreon

Posted

I have solved my problem :)

 

Let me explain how

The packet seems to work well, so that's not the problem:

I have added a System.out.println in PacketEntitySpawn

public PacketEntitySpawn(Entity ent, NetworkMod mod, int type)
    {
            entityID = ent.entityId;
            posX = MathHelper.floor_double(ent.posX * 32D);
            posY = MathHelper.floor_double(ent.posY * 32D);
            posZ = MathHelper.floor_double(ent.posZ * 32D);
            typeID = type;
            modID = MinecraftForge.getModID(mod);
            yaw   = (byte)(ent.rotationYaw * 256.0F / 360.0F);
            pitch    = (byte)(ent.rotationPitch * 256.0F / 360.0F);
            yawHead  = (byte)(ent instanceof EntityLiving ? ((EntityLiving)ent).rotationYawHead * 256.0F / 360.0F : 0);
            metadata = ent.getDataWatcher();
            System.out.println("spawn packet ent="+ent + " entitiyID="+entityID);

And things work correctly

spawn packet ent=net.minecraft.src.TrainMod.RollingStock.EntityLocoSteamBig@47b entitiyID=1147
spawn packet ent=net.minecraft.src.TrainMod.Zeppelin.EntityZepplin@47c entitiyID=1148

 

I have realised that the Zeppelin is never invisible

 

In my code the Zeppelin just extends Entity

My trains however are more complicated:

[*]EntityMinecart extends Entity (notch code)

[*]AbstractTrains extends EntityMinecart

[*]EntityRollingStock extends AbstractTrains

[*]DieselTrain extends EntityRollingStock

[*]finally EntityLocoGP40 extends DieselTrain

I realised that I had by mistake registered EntityRollingStock:

MinecraftForge.registerEntity(EntityRollingStock.class,this, EntityIds.ROLLINGSTOCK, 200, 2, true);

Removing that line solved my problem.

So it seems that some entities were randomly registered as EntityRollingStock and some others were registered under their own name.

 

Sorry for bothering you with my stupid mistake

And thanks for your help

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

    • the modpack keep crashing idk why,cause it never said anything about any mods causing it. crash log:https://drive.google.com/file/d/1iYKlUgvHUob8DjyRc3gqP_Viv_kSHO6L/view?usp=sharing mod list:https://drive.google.com/file/d/1MvMT-z9Jg2BITQ4uLshJ1uOh7q9EMBfC/view?usp=sharing but the server(anternos) works just fine
    • Hello, I am trying to make 2 recipes for a ruby. The first one is turning a block into a ruby and the other one is 9 nuggets into a ruby. But I keep on getting a error java.lang.IllegalStateException: Duplicate recipe rubymod:ruby   Any help would be great on how to fix it
    • Hello everyone, i'm new with programing Mods, and will need a lot of your help if possible,  Im trying to make a new GUI interface responsible to control the Droprate of game, it will control de loot drop and loot table for mobs and even blocks, but i try to make a simple Gui Screen, and wenever i try to use it, the game crash's with the error message in the subject, here is the code im using to:  IDE: IntelliJ Comunity - latest version Forge: 47.3.0 Minecraft version: 1.20.1 mapping_channel: parchment mapping_version=2023.09.03-1.20.1 Crash report link: https://pastebin.com/6dV8k1Fw   Code im using is:    package createchronical.droprateconfig; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import java.util.HashMap; import java.util.Map; public class ConfigScreen extends Screen { private static final ResourceLocation BACKGROUND_TEXTURE = new ResourceLocation("droprateconfig", "textures/gui/config_background.png"); // Mapa de mobs e itens com seus respectivos drop rates private final Map<String, Integer> dropRates = new HashMap<>(); public ConfigScreen() { super(Component.literal("Configurações de Drop Rate")); // Inicializa com valores de drop rate padrão dropRates.put("Zombie", 10); // Exemplo de mob dropRates.put("Creeper", 5); // Exemplo de mob dropRates.put("Iron Ore", 50); // Exemplo de item dropRates.put("Diamond", 2); // Exemplo de item } @Override protected void init() { // Cria um botão para cada mob/item e adiciona na tela int yOffset = this.height / 2 - 100; // Posicionamento inicial for (Map.Entry<String, Integer> entry : dropRates.entrySet()) { String itemName = entry.getKey(); int dropRate = entry.getValue(); // Cria um botão para cada mob/item this.addRenderableWidget(Button.builder( Component.literal(itemName + ": " + dropRate + "%"), button -> onDropRateButtonPressed(itemName) ).bounds(this.width / 2 - 100, yOffset, 200, 20).build()); yOffset += 25; // Incrementa a posição Y para o próximo botão } // Adiciona o botão de "Salvar Configurações" this.addRenderableWidget(Button.builder(Component.literal("Salvar Configurações"), button -> onSavePressed()) .bounds(this.width / 2 - 100, yOffset, 200, 20) .build()); } private void onDropRateButtonPressed(String itemName) { // Lógica para alterar o drop rate do item/mob selecionado // Aqui, vamos apenas incrementar o valor como exemplo int currentRate = dropRates.get(itemName); dropRates.put(itemName, currentRate + 5); // Aumenta o drop rate em 5% } private void onSavePressed() { // Lógica para salvar as configurações (temporariamente apenas na memória) // Vamos apenas imprimir para verificar dropRates.forEach((item, rate) -> { System.out.println("Item: " + item + " | Novo Drop Rate: " + rate + "%"); }); // Fecha a tela após salvar Screen pGuiScreen = null; assert this.minecraft != null; this.minecraft.setScreen(pGuiScreen); } @Override public void render(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTicks) { this.renderBackground(guiGraphics); guiGraphics.blit(BACKGROUND_TEXTURE, this.width / 2 - 128, this.height / 2 - 128, 0, 0, 256, 256, 256, 256); super.render(guiGraphics, mouseX, mouseY, partialTicks); } }  
  • Topics

×
×
  • Create New...

Important Information

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