Jump to content

Recommended Posts

Posted
1 minute ago, Differentiation said:

1. Rename your packages.

2. If you do NOT know Java, I suggest you learn some before starting to mod.

1. why

2. i dont know java and i just started with a tutorial and i messed something up but then i repaired it and now there is this :/

pls help not tell me how to live my life

Posted (edited)
3 minutes ago, ejer said:

why

1. You clearly don't know the right way to handle packages

3 minutes ago, ejer said:

2. i dont know java and i just started with a tutorial and i messed something up but then i repaired it and now there is this :/

pls help not tell me how to live my life

2. Please don't. Tutorials have an end, then all you do is mess up your mod further on. Your mod will get harder and more intense as you progress and if you do not know Java, then you will get lost.

I would recommend you have some basic knowledge of Java before you begin with your project.

Just a tip.

Edited by Differentiation
Posted
Just now, Differentiation said:

1. You clearly don't know the right way to handle packages

2. Please don't. Tutorials have an end, then all you do is mess up your mod further on.

I would recommend you have some basic knowledge of Java before you begin with your project.

Just a tip.

ok but just tell me how to fix that please

and i just wanted to do whats in the tutorial so i just want to finish it and thats it

Posted (edited)
12 minutes ago, ejer said:

ok but just tell me how to fix that please

 

Rename the first package (com) to com.ejer.first

and then inside that, make packages for common and client side code.*

Then sort your packages in these two packages accordingly.

OMIT example.examplemod.

 

*If you do NOT know the differences between client-side® and server-side® code, please disregard this step.

12 minutes ago, ejer said:

and i just wanted to do whats in the tutorial so i just want to finish it and thats it

That'll only teach you to make one item, and one block.

Yeahhhh... not a very good idea :/

Edited by Differentiation
Posted (edited)
24 minutes ago, Differentiation said:

Rename the first package (com) to com.ejer.first

and then inside that, make packages for common and client side.

Then sort your packages in these two accordingly.

OMIT example.examplemod.

That'll only teach you to make one item, and one block.

Yeahhhh... not a very good idea :/

sooooo this happened

help2.PNG

i renamed ejer.first to ejer.first2 and then com to com.ejer.first

Edited by ejer
Posted
12 minutes ago, ejer said:

sooooo this happened

help2.PNG

i renamed ejer.first to ejer.first2 and then com to com.ejer.first

No.

You're doing everything wrong.

Whenever you create a new package, you have to add a . and then the package name.

Please follow your tutorial.

I cannot explain much further because this cannot get any simpler to understand...

Posted
On 29.10.2017 at 8:11 PM, Differentiation said:

It's supposed to be structured this way.

 


â–ºMDKExample
	â–ºsrc/main/java
		â–ºcom.ejer.first
			â–ºproxy
			â–ºinit

Something along these lines.

I DID IT LIKE THIS AND I WASNT DOING ANYTHING WRONG I KNOW WHAT YOU MENT BUT IT JUST SPLITTED IT UP      R E A D   W H A T   I   S A I D

 

On 30.10.2017 at 6:59 AM, diesieben07 said:

Ok, guys, seriously?

 

There is nothing wrong with these screenshots. Why do think there is? They represent the desired package structure perfectly.

However:

  • You should not keep the examplemod.
  • I doubt you own ejer.com, so don't use that package name.

im concerned that that it would mess up something and i just wanted to keep it com.ejer.first and i own a domian but not exactly com so im gonna change that soon

Posted

 

On 29.10.2017 at 8:10 PM, Differentiation said:

No.

You're doing everything wrong.

Whenever you create a new package, you have to add a . and then the package name.

Please follow your tutorial.

I cannot explain much further because this cannot get any simpler to understand...

 yes i am doing every thing right i renamed it bc there was one there already and i couldnt rename it and then it split up i didnt do that manually i was following my tutorial i know how to name packages "Whenever you create a new package, you have to add a . and then the package name." 

Posted
2 hours ago, ejer said:

okay you know what?

here just have my files and send me back the repaired ones:

https://ufile.io/kt4fl

 

- The odds of someone downloading a random file from the internet is pretty slim.

- What will you do when the next thing doesn't work? You'll run out of people willing to fix stuff for you.

 

You need to learn Java, and how to work your programming environment, BEFORE you try to learn to mod. It's not people trying to "tell you how to live your life", it's the rules of this forum, and just plain good advice. Learning Java through modding would be kind of like learning how to swap out an engine in your car with 0 automotive knowledge. . .and still needing to drive it to get to work.

  • Like 1
Posted (edited)

Guys, the original question is really simple -- it isn't actually a problem at all. In Eclipse there are two ways of displaying the packages. There is a little down arrow in the top of the package pane that brings up a menu and in that there is Package Presentation. There are two options "Flat" and "Hierarchical". If you choose flat it will show the full package names "com.ejer.first" and if you choose hierarchical it will only show the full name if there are no other sibling packages. For example, in hierarchical if you start by creating a package called "com.ejer.first" then it will show it that way, but as soon as you create another package called "com.examplemod" it will then show them both in a directory tree "com > ejer.first" and "com > examplemod".

 

In other words, your package is still properly com.ejer.first, it just displays as a folder explorer.

 

So basically there was nothing wrong in the first post. That is the way hierarchical view looks.

Edited by jabelar
  • Like 2

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted
5 hours ago, jabelar said:

Guys, the original question is really simple -- it isn't actually a problem at all. In Eclipse there are two ways of displaying the packages. There is a little down arrow in the top of the package pane that brings up a menu and in that there is Package Presentation. There are two options "Flat" and "Hierarchical". If you choose flat it will show the full package names "com.ejer.first" and if you choose hierarchical it will only show the full name if there are no other sibling packages. For example, in hierarchical if you start by creating a package called "com.ejer.first" then it will show it that way, but as soon as you create another package called "com.examplemod" it will then show them both in a directory tree "com > ejer.first" and "com > examplemod".

 

In other words, your package is still properly com.ejer.first, it just displays as a folder explorer.

 

So basically there was nothing wrong in the first post. That is the way hierarchical view looks.

Obviously he's using hierarchical but he is getting errors so that's his problem. 

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

    • So me and a couple of friends are playing with a shitpost mod pack and one of the mods in the pack is corail tombstone and for some reason there is a problem with it, where on death to fire the player will get kicked out of the server and the tombstone will not spawn basically deleting an entire inventory, it doesn't matter what type of fire it is, whether it's from vanilla fire/lava, or from modded fire like ice&fire/lycanites and it's common enough to where everyone on the server has experienced at least once or twice and it doesn't give any crash log. a solution to this would be much appreciated thank you!
    • 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.