Jump to content

Recommended Posts

Posted

I'm trying to get forge up and running so I can use the Minions mod, and while things apparently go alright for install, the first time I try to use it, the whole thing crashes. To install it I downloaded a fresh minecraft_server.jar and wiped bin from my desktop pc - extracted the universal-4.0.0.234 file contents into both and only deleted META-INF on the PC/client side.

 

I've shown the mod creator the problem report and he said that a call method error would not be inside the Minions mod. So here it is on this side, hopefully it can get sorted out:

 

2012-08-28 08:51:22 [iNFO] [sTDERR] 2012-08-28 08:51:22 [sEVERE] Encountered an unexpected exception NoSuchMethodError
java.lang.NoSuchMethodError: aig.h(Lup;III)I
        at atomicstryker.minions.common.jobmanager.BlockTask.getItemStackFromWorldBlock(BlockTask.java:266)
        at atomicstryker.minions.common.jobmanager.BlockTask_MineBlock.onFinishedTask(BlockTask_MineBlock.java:89)
        at atomicstryker.minions.common.jobmanager.BlockTask_ReplaceBlock.onFinishedTask(BlockTask_ReplaceBlock.java:28)
        at atomicstryker.minions.common.jobmanager.BlockTask.onUpdate(BlockTask.java:131)
        at atomicstryker.minions.common.jobmanager.BlockTask_MineBlock.onUpdate(BlockTask_MineBlock.java:77)
        at atomicstryker.minions.common.entity.EntityMinion.bc(EntityMinion.java:501)
        at jw.d(EntityLiving.java:1531)
        at atomicstryker.minions.common.entity.EntityMinion.d(EntityMinion.java:398)
        at jw.h_(EntityLiving.java:687)
        at atomicstryker.minions.common.entity.EntityMinion.h_(EntityMinion.java:229)
        at up.a(World.java:2021)
        at gr.a(WorldServer.java:538)
        at up.g(World.java:1986)
        at up.h(World.java:1867)
        at gr.h(WorldServer.java:437)
        at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:616)
        at ft.q(DedicatedServer.java:241)
        at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:547)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:453)
        at ep.run(SourceFile:539)
2012-08-28 08:51:23 [iNFO] [sTDERR] 2012-08-28 08:51:23 [sEVERE] This crash report has been saved to: /home/tib/mc-minions/./crash-reports/crash-2012-08-28_08.51.23-server.txt

 

---- Minecraft Crash Report ----
// You should try our sister game, Minceraft!

Time: 8/28/12 8:51 AM
Description: Exception in server tick loop

java.lang.NoSuchMethodError: aig.h(Lup;III)I
at atomicstryker.minions.common.jobmanager.BlockTask.getItemStackFromWorldBlock(BlockTask.java:266)
at atomicstryker.minions.common.jobmanager.BlockTask_MineBlock.onFinishedTask(BlockTask_MineBlock.java:89)
at atomicstryker.minions.common.jobmanager.BlockTask_ReplaceBlock.onFinishedTask(BlockTask_ReplaceBlock.java:28)
at atomicstryker.minions.common.jobmanager.BlockTask.onUpdate(BlockTask.java:131)
at atomicstryker.minions.common.jobmanager.BlockTask_MineBlock.onUpdate(BlockTask_MineBlock.java:77)
at atomicstryker.minions.common.entity.EntityMinion.bc(EntityMinion.java:501)
at jw.d(EntityLiving.java:1531)
at atomicstryker.minions.common.entity.EntityMinion.d(EntityMinion.java:398)
at jw.h_(EntityLiving.java:687)
at atomicstryker.minions.common.entity.EntityMinion.h_(EntityMinion.java:229)
at up.a(World.java:2021)
at gr.a(WorldServer.java:538)
at up.g(World.java:1986)
at up.h(World.java:1867)
at gr.h(WorldServer.java:437)
at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:616)
at ft.q(DedicatedServer.java:241)
at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:547)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:453)
at ep.run(SourceFile:539)

Relevant Details:
- Minecraft Version: 1.3.2
- Operating System: Linux (amd64) version 2.6.32-38-server
- Java Version: 1.7.0_05, Oracle Corporation
- Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode), Oracle Corporation
- Memory: 841466384 bytes (802 MB) / 1029046272 bytes (981 MB) up to 1029046272 bytes (981 MB)
- JVM Flags: 2 total; -Xmx1024M -Xms1024M
- FML: ~ERROR~ NullPointerException: null
- Is Modded: Definitely; 'forge,fml'
- Profiler Position: N/A (disabled)
- Player Count: 1 / 20; [gu['kriegtiger'/301, l='minions', x=141.22, y=64.00, z=274.28]]
- World minions Entities: 0 total; []
- World minions Players: 0 total; []
- World minions Chunk Stats: ServerChunkCache: 0 Drop: 0
- Type: Dedicated Server

 

He (atomicstryker) said the method in question was 'Block.getDamageValue'

Posted

So he knows hes using a function thats client side only.. yet he still sends you here to get support? No

Tell him to stop using a client side only function on the server.

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

All he says is that it's a 'minecraft' problem, and since the only thing added in is forge since grabbing 1.3.2 I came over here because forge is a dependency of minions.

 

You say it's a mod problem (or rather a coder problem), but what am I supposed to take back to the other forum to try and get the issue addressed?

Posted

That he shouldn't be fucking using client side only methods?

Seems straight forward to me, It has NOTHING to do with forge and EVERYTHING to do with him not properly testing/writing his mod.

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
Technically MC 1.3.2 is both client and server, so there is no difference anymore. As for your crash, it claims Block.getDamageValue doesn't exist, which is assured to exist, so i can only guess something is wrong with your minecraft.

 

This is what the response to my original crash report of the mod/server-output was. He's got a point - right? I thought that was the whole big deal about 1.3 over 1.2, the code was the same for server vs client - the only difference now was that server side didn't need graphic resource files.

 

Please keep in mind I'm bouncing back and forth on this forum and the mod forum trying to figure this out. I'm trying to ask questions and not point fingers because I'm just an admittedly clueless end user trying to get a mod working :P

Posted

I dont care about you bouncing back and forth.

There IS a difference between Client distribution and dedicated server distribution.

Namely, one has a fuck ton of functions/classes stripped out, i'll leave you to guess which one.

 

Point is, hes a retard and is using a method that only exists on the CLIENT distribution (minecraft.jar) on the SERVER distribution (minecraft_server.jar), it does not exists.

Tell him to stop being lazy and go test for himself, it's his issue, he needs to fix it.

 

Block.getDamageValue does NOT exist on the server. As I stated time and again. He needs to 1) stop using it or 2) ship a base class edit that adds it back in. Which would be stupid.

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

Wow. Chip on the shoulder, much? If you have opinions like this about another coder I can only imagine what high regard you hold basic users like myself in, but I think you've already made that abundantly clear too.

 

With all due respect to the project and the work that's gone into it though, I can't say I've enjoyed having any contact whatsoever with you. Despite that, I do appreciate the input and have passed it onto the mod developer and I hope your day goes well.

Posted

I never hide the fact that I hate stupid/lazy people. If you bother me with something you can research yourself, or worse yet if you ARGUE with me about something I'm 100% sure i'm correct about, {and I research things before I talk} then it's a waist of my time and annoys the shit out of me.

So, ya, once he fixers his stupid mistake you should be ready to go.

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

Guest
This topic is now closed to further replies.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • 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() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
    • Remove rubidium - you are already using embeddium, which is a fork of rubidium
  • Topics

×
×
  • Create New...

Important Information

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