Jump to content

Recommended Posts

Posted (edited)

I needed some help on the one block: Uncolored Concrete Block (Concrete). Normally the colored variants of that block does stop when touched water but the uncolored variant does not. Is there a way to make a block touching water without extending the class?

Edited by Issac29
Posted

I am not understanding your question, your grammar is missing key words that would clarify your post.

For example:

Quote

the colored variants of that block does stop

"does stop" doing what?

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
16 minutes ago, Draco18s said:

I am not understanding your question, your grammar is missing key words that would clarify your post.

For example:

"does stop" doing what?

Forming the concrete power into hardened concrete upon the falling block.

3 hours ago, Issac29 said:

I needed some help on the one block: Uncolored Concrete Block (Concrete). Normally the colored variants of that block does stop when touched water but the uncolored variant does not. Is there a way to make a block touching water without extending the class?

Oh yeah, there was the regular glass, terracotta, and regular glass panes. I found out there were neither regular concrete nor wool for vanilla minecraft. I get it where wool does not have to be discolored but the concrete on the other hand it does needed to be. So I added in these two concrete variants. Both which are discolored, and they act as the same as the colored ones but for some odd reason the powdered one disobeys and goes through the water even though I made a code where it has same exact copy as the colored concrete powder. Because I found a code on a entity "falling block" contains a sense case where the block object is referred to the colored block no the block that I wanted.

 

There it took me a while to figure it out but all I know is... I need help on the plain powder concrete block. ¬¬

Posted

Post your code.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted

2019-07-08_20_20_21.thumb.png.709953628e03f70078d165a454663a62.pngSeriously, I posted my code and no one is going to help me with this. Maybe I should post images too. The Left is the colored One and the right is the uncolored one.

 

Posted

Ok, I posted 2 more and no one is going to help me like seriously. I am going to get triggered even if I posted my code, posted a game play image how the left one is colored which I am fine but the right one is not acceptable. Do I have to post a video too. ¬¬

Posted

Can you post your code as a GitHub repo?

For some reason the hastebin link is empty (at least on my device).

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
4 hours ago, Issac29 said:

Not again. I reposted my code and my gameplay image, but no one is going to help me really.

1. People here help others in their free time; you are not entitled to any help.

2. Your code looks fine as far as I can tell, except the missing @Override annotations, making the code hard to read.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Posted
30 minutes ago, DavidM said:

1. People here help others in their free time; you are not entitled to any help.

 

5 hours ago, diesieben07 said:

This doesn't mean people are ignoring you. We just don't know.

And since you didn't post a working Git repository, we can't even do your job for you and use the debugger.

Sorry for wasting time

 

30 minutes ago, DavidM said:

Your code looks fine as far as I can tell, except the missing @Override annotations, making the code hard to read.

Also I know the block is good but when as the entity which i am going to post in Github gist: https://gist.github.com/MrEyeballs29/0e57e2a31b6f11ac191a4ee05b310d8e#file-code3-java-L159. I am looking for the entity not the block. I need to know how to make a entity to have a same behavior as the colored concrete block.

  • 4 weeks later...
Posted
17 hours ago, Issac29 said:

Focus the first quote.

8 hours ago, diesieben07 said:

Your repository is not usable because you are missing key components, such as the build.gradle and the (not as important) gradle wrapper.

The MDK comes with a pre-made .gitignore file for a reason.

There is no reason why the MDK coming with a pre-made .gitignore file that seems important. Also I commited with manual file transfer.

Posted (edited)
3 minutes ago, diesieben07 said:

Your git repository is not usable in this state because the build.gradle is required to set up the workspace after cloning. This means I cannot test and debug your code for you

Actually it is. Press Shift-F5.

 

Edit: You will see. B|

Edited by Issac29
Posted (edited)
Quote

Unlocalized names, TileEntity registration names and enum entries added using EnumHelper should contain your ModID to avoid collisions between mods. Note: This also applies to the unlocalized name for entities (set by EntityEntryBuilder::name resp. the entityName parameter of EntityRegistry.registerModEntity).

I am trying to save 6 Kibibytes of text for "item.mod.item.name" to be "item.item.name"

16 minutes ago, diesieben07 said:

None of the textures or names work.

Also textures and names do work. I tested in the eclipse and the textures work fine.

Quote

Do not create registry entries (anything implementing IForgeRegistryEntry, like blocks and items) in a static initializer. Use the proper events.

I got that from https://wiki.mcjty.eu/modding/index.php?title=Mobs-1.12.

16 minutes ago, diesieben07 said:

What are you talking about.

16 minutes ago, diesieben07 said:

This doesn't make sense. The point of @Instance is for FML to inject your mod instance. There is no point in assigning a value to this field.

It was used on a entity for making the concrete powder fall.

Quote

Your repository still didn't include the gradle wrapper, so I had to go and download and install gradle...

However I did incude the gradle wrapper.

Edited by Issac29
Posted (edited)
42 minutes ago, diesieben07 said:

Are you for real? Please stop.

Yes. With "item.item.name?"

 

42 minutes ago, diesieben07 said:

Don't spam the log with useless stuff. At least use the proper log levels.

I will clean up code.

42 minutes ago, diesieben07 said:

What? Did you even read what I said?

OK, I removed the instance variable.

42 minutes ago, diesieben07 said:

Nothing on that page tells or shows you to create items, blocks or other registry entries in static initializers.

(Blame mcjty). Then what is the correct syntax for the entity registration.

 

And I got this picture which is CORRECT BY THE WAY. Where do you see texture or model errors? Please provide logs.

Spoiler

2019-08-08_13_12_13.png.8a5b0e721b62dbfac5910bbd16b8b39c.png

 

1 hour ago, diesieben07 said:

Please advice how to reproduce the issue you are having with your mod.

I am trying to subclass the falling block to have the same exact functions except for when it falls into the water which forms just like the colored variant.

 

Edit: Press Shift-F5 Again.

Edited by Issac29
Posted
17 minutes ago, diesieben07 said:

Something in your setup is strange and breaks IntelliJ, can only run from Gradle... Don't care to debug this.

Well it's only capable to run on eclipse not IntelliJ. There might be a bug with it.

19 minutes ago, diesieben07 said:

What are you trying to tell me?

Oh never-mind. In case of certain issues press Shift-F5 to reload cache.

22 minutes ago, diesieben07 said:

This is not about entity registration. This is about creating registry entries (like items, blocks, etc.) in static initializers.

Ohhhhhhhh. Now I get it. Thanks.

 

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() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
  • Topics

×
×
  • Create New...

Important Information

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