Jump to content

[1.8] [90% SOLVED] Cannot Interact With CustomFire E.G. Hit to Extinguish


saxon564

Recommended Posts

As the title says, I have having trouble being able to interact with a custom fire I am adding, I cannot hit it to put it out, I either have to place a block on it, or break the block it's on to get rid of it. My code for the block is here. Does anyone have an idea as to how to get it to work? I have looked at BlockFire and cannot figure it out.

 

EDIT: Please read through the ENTIRE thread before commenting to use PlayerInteractEvent. I have answered why that does not work for this several times.

Link to comment
Share on other sites

  • Replies 70
  • Created
  • Last Reply

Top Posters In This Topic

So I just added an event handler and really at this point all it's doing is adding the fizz sound. If you are in creative it's still destroying the block the fire is on, I know I can cancel the event and continue to remove the fire, but that way causes the block to disappear and reappear which looks terrible. How can I cancel the BlockBreak event without having block still "break" and come back?

Link to comment
Share on other sites

I have added a player event handler for the interact event.

So what is happening, I click the fire and get the fizz sound indicating that the fire is out, but it still break the block the fire is on. I know i can do event.setCanceled(true); to stop the block from breaking, but it just replaces the block and stops the block from dropping anything.

 

 

 

package com.saxon564.mochickens.events;

import com.saxon564.mochickens.MoChickens;

import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;

public class PlayerEventHandler {

@SubscribeEvent
public void onPlayerInteract(PlayerInteractEvent event) {
	if (event.action == Action.LEFT_CLICK_BLOCK) {
		EntityPlayer player = event.entityPlayer;
		World world = player.worldObj;

		EnumFacing face = event.face;
		BlockPos pos = event.pos;
		Block block = world.getBlockState(pos).getBlock();

		if (block != null) {
			this.extinguishFire(player, pos, face, world, event);
		}
	}
}

@SubscribeEvent
public void onPlayerMovement(PlayerTickEvent event) {
	EntityPlayer player = event.player;
	BlockPos pos = player.getPosition();
	World world = player.worldObj;
	Block block = world.getBlockState(pos).getBlock();
	if ((block == MoChickens.blockChickenFire) || (world.getBlockState(pos.up()).getBlock() == MoChickens.blockChickenFire)) {
		player.setFire(;
	}
}

private void extinguishFire(EntityPlayer player, BlockPos pos, EnumFacing face, World world, PlayerInteractEvent event) {
	 pos = pos.offset(face);

        if (world.getBlockState(pos).getBlock() == MoChickens.blockChickenFire)
        {
        	world.playSoundEffect(player.posX, player.posY, player.posZ, "random.fizz", 1.0F, 1.0F);
        	world.setBlockToAir(pos);
        }

}

}

 

 

Unless you mean to call it in the class for my fire block. Though I'm not sure what good that would do since fire is ignored as a breakable block so none of the general block interaction methods would be firing on it.

Link to comment
Share on other sites

private void extinguishFire(EntityPlayer player, BlockPos pos, EnumFacing face, World world, PlayerInteractEvent event) {
	 pos = pos.offset(face);

        if (world.getBlockState(pos).getBlock() == MoChickens.blockChickenFire)
        {
        	world.playSoundEffect(player.posX, player.posY, player.posZ, "random.fizz", 1.0F, 1.0F);
        	world.setBlockToAir(pos);
        	event.setCanceled(true);
        }

}

Where I put the setCanceled(true) is in this method, should I put it sooner in the event?

Link to comment
Share on other sites

ok. Well I'm playing around with it and it seems that if you cancel MouseEvent it causes the event to freak out and just spam click.

 

Here is what I have for testing this, as I said, I'm playing around with it. What do you think?

 

 

package com.saxon564.mochickens.events;

import com.saxon564.mochickens.MoChickens;

import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.client.event.MouseEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;

public class PlayerEventHandler {
private Boolean click = false;
@SubscribeEvent
public void onMouseEvent(MouseEvent event) {
	int button = event.button;
	if (click) {
		MoChickens.logger.info("~~~~~~~~~~~~~~~~~~~Left Click~~~~~~~~~~~~~~~~~~~~~");
		click = false;
		event.setCanceled(true);
	}
}

@SubscribeEvent
public void onPlayerInteract(PlayerInteractEvent event) {
	if (event.action == Action.LEFT_CLICK_BLOCK) {
		EntityPlayer player = event.entityPlayer;
		World world = player.worldObj;

		EnumFacing face = event.face;
		BlockPos pos = event.pos;
		Block block = world.getBlockState(pos).getBlock();

		if (block != null) {
			this.extinguishFire(player, pos, face, world, event);
		}
	}
}

@SubscribeEvent
public void onPlayerMovement(PlayerTickEvent event) {
	EntityPlayer player = event.player;
	BlockPos pos = player.getPosition();
	World world = player.worldObj;
	Block block = world.getBlockState(pos).getBlock();
	if (((block == MoChickens.blockChickenFire) || (world.getBlockState(pos.up()).getBlock() == MoChickens.blockChickenFire)) && (!player.capabilities.isCreativeMode)) {
		player.setFire(;
	}
}

private void extinguishFire(EntityPlayer player, BlockPos pos, EnumFacing face, World world, PlayerInteractEvent event) {
	 pos = pos.offset(face);

        if (world.getBlockState(pos).getBlock() == MoChickens.blockChickenFire)
        {
    		click = true;
        	world.playSoundEffect(player.posX, player.posY, player.posZ, "random.fizz", 1.0F, 1.0F);
        	world.setBlockToAir(pos);
        	event.setCanceled(true);
        }

}

}

 

 

Link to comment
Share on other sites

ok, ok. As I said, I'm playing around with it. my only issue with the MouseEvent is you have no info from in game. I am not finding any info out as to how to get anything from the game, such as the player and the block pos.

Link to comment
Share on other sites

MouseEvent is client-only, so you can use the stuff from the Minecraft class. It has fields for the player (

thePlayer

), the world (

theWorld

) and also the block the mouse is currently over (

objectMouseOver

).

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

There's a tutorial by diesieben07 in the Tutorials section.

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Link to comment
Share on other sites

I have added the network handlers that I need, but for some reason null information is being sent.

 

here are my updated classes

Registering the Messaging Class:

public static SimpleNetworkWrapper network;

@EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        network = NetworkRegistry.INSTANCE.newSimpleChannel("moChickens");
        network.registerMessage(FireMessage.Handler.class, FireMessage.class, 0, Side.SERVER);
    }

 

Event Handler:

 

 

package com.saxon564.mochickens.events;

import com.saxon564.mochickens.MoChickens;
import com.saxon564.mochickens.network.FireMessage;

import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.client.event.MouseEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent.PlayerTickEvent;

public class PlayerEventHandler {

@SubscribeEvent
public void onMouseEvent(MouseEvent event) {
	int button = event.button;
	EntityPlayer player = Minecraft.getMinecraft().thePlayer;
	World world = Minecraft.getMinecraft().theWorld;

	BlockPos pos = Minecraft.getMinecraft().objectMouseOver.getBlockPos();
	EnumFacing face = Minecraft.getMinecraft().objectMouseOver.sideHit;

	if (button == 0) {
		if (world.getBlockState(pos).getBlock()!= null) {
			this.extinguishFire(player, pos, face, world, event);
		}
	}
}

@SubscribeEvent
public void onPlayerMovement(PlayerTickEvent event) {
	EntityPlayer player = event.player;
	BlockPos pos = player.getPosition();
	World world = player.worldObj;
	Block block = world.getBlockState(pos).getBlock();
	if (((block == MoChickens.blockChickenFire) || (world.getBlockState(pos.up()).getBlock() == MoChickens.blockChickenFire)) && (!player.capabilities.isCreativeMode)) {
		player.setFire(;
	}
}

private void extinguishFire(EntityPlayer player, BlockPos pos, EnumFacing face, World world, MouseEvent event) {
	 pos = pos.offset(face);

        if (world.getBlockState(pos).getBlock() == MoChickens.blockChickenFire)
        {
        	world.playSoundEffect(player.posX, player.posY, player.posZ, "random.fizz", 1.0F, 1.0F);
        	world.setBlockToAir(pos);
        	MoChickens.network.sendToServer(new FireMessage(player, face));
        	event.setCanceled(true);
        }

}
}

 

 

 

Message Class:

 

 

package com.saxon564.mochickens.network;

import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.network.ByteBufUtils;
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;

public class FireMessage implements IMessage {
    
    private String text;
    private String player;
    private int face;

    public FireMessage() { }

    public FireMessage(EntityPlayer playerIn, EnumFacing faceIn) {
        player = playerIn.toString();
        face = faceIn.getIndex();
    }

    @Override
    public void fromBytes(ByteBuf buf) {
        player = ByteBufUtils.readUTF8String(buf);
        face = ByteBufUtils.readVarInt(buf, 5);
    }

    @Override
    public void toBytes(ByteBuf buf) {
        ByteBufUtils.writeUTF8String(buf, player);
        ByteBufUtils.writeVarInt(buf, face, 5);
    }

    public static class Handler implements IMessageHandler<FireMessage, IMessage> {
        
        @Override
        public IMessage onMessage(FireMessage message, MessageContext ctx) {
            System.out.println(String.format("Received %s from %s", message.text, ctx.getServerHandler().playerEntity.getDisplayName()));
            return null;
        }
    }
}

 

 

Link to comment
Share on other sites

UhM... Dont do the mouse hackery...

 

Just send a datapacket to the client to spawn smoke particles or whatever you want for fx And do a playsound.

 

That way not only you get the correct behavour but players around you too.

 

Pet peeve of mine is thaumcraft warded particles only showing for player hitting the block.

Let the server decide which particles where and how, the update all players in vicinity with the data

 

How much wood could a woodchuck chuck if a wood chuck could chuck wood - Guybrush Treepwood

 

I wrote my own mod ish... still a few bugs to fix. http://thaumcraft.duckdns.org/downloads/MagicCookies-1.0.6.4.jar

Link to comment
Share on other sites

UhM... Dont do the mouse hackery...

 

Just send a datapacket to the client to spawn smoke particles or whatever you want for fx And do a playsound.

 

That way not only you get the correct behavour but players around you too.

 

Pet peeve of mine is thaumcraft warded particles only showing for player hitting the block.

Let the server decide which particles where and how, the update all players in vicinity with the data

Ummm Im sorry, but do you actually read topics? I cant say how many times ive seen you comment on topics and clearly dont know what the topic was about to begin with. How does particles have anything to do with putting out a fire? I am doing what I need to do to get the fire to go out on the server and client.

Link to comment
Share on other sites

Well i read your topic.

 

You have a custom fire and you try to extinguish it by hitting it.

This can all be accomplished server side by the iteminteract event.

Then when you extinguish it you wish to kill it without breaking the block behind it.

This is a simple matter of setblocktoair where the fire is at where it was hit.

If you are worrield about the blockpos being 0 0 0 with click air you can still calculate where was looked from the entityplayer.

Heck. If you wish to extinguish one flame instead of multiple in the block you can use the face hit and intrepolate the flame to extinguish and update the blockstate. Id add a cooldown for that side so it cant catch fire quickly again.

This is all serverside.

Then the server sends to clients the instruction to spawn a few fx smoke particles and play the sound at clients.

 

Seriously. I read.

 

I just thaught id respond cause i tackled a similar problem today. Just trying to help. But i guess this forum doesnt need help with such hostile atmosphere.

 

Just to continue the atmosphere: this is a dead simple problem.

How much wood could a woodchuck chuck if a wood chuck could chuck wood - Guybrush Treepwood

 

I wrote my own mod ish... still a few bugs to fix. http://thaumcraft.duckdns.org/downloads/MagicCookies-1.0.6.4.jar

Link to comment
Share on other sites

Well i read your topic.

 

You have a custom fire and you try to extinguish it by hitting it.

This can all be accomplished server side by the iteminteract event.

Then when you extinguish it you wish to kill it without breaking the block behind it.

This is a simple matter of setblocktoair where the fire is at where it was hit.

If you are worrield about the blockpos being 0 0 0 with click air you can still calculate where was looked from the entityplayer.

Heck. If you wish to extinguish one flame instead of multiple in the block you can use the face hit and intrepolate the flame to extinguish and update the blockstate. Id add a cooldown for that side so it cant catch fire quickly again.

This is all serverside.

Then the server sends to clients the instruction to spawn a few fx smoke particles and play the sound at clients.

 

Seriously. I read.

 

I just thaught id respond cause i tackled a similar problem today. Just trying to help. But i guess this forum doesnt need help with such hostile atmosphere.

 

Just to continue the atmosphere: this is a dead simple problem.

Heres the issue, I am not finding a ItemInteractEvent. There is a PlayerInteractEvent and an EntityInteractEvent, both of which as far as I am aware are on the server side and do not send the information to the client. MouseEvent is not hackery, otherwise it wouldn't be an event added by MinecraftForge to use. Currently MouseEvent is the only thing that will work due to the bit of code

public boolean isCollidable {
    return false;
}

if it wasnt for that, I could easily remove the fire, but that removes the hitbox and you have to use another block to find the fire.

 

P.S. I am sorry for how I responded, I was thinking of someone on another topic that didnt bother to read the topic and gave answers that had nothing to do with the issue. For some reason I was thinking it was you, but I did go back and look at that topic again and realized my mistake.

Link to comment
Share on other sites

Instead of returning false for isCollidable, return null for the bounding box:

// 1.7.10 method signature, but probably something similar in 1.8
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
	return null;
}

Then your block can still respond to onBlockClicked / onBlockActivated, and you don't need any events at all. I have a fire block that does just that, yet players and other entities can walk right on through it.

Link to comment
Share on other sites

Instead of returning false for isCollidable, return null for the bounding box:

// 1.7.10 method signature, but probably something similar in 1.8
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) {
	return null;
}

Then your block can still respond to onBlockClicked / onBlockActivated, and you don't need any events at all. I have a fire block that does just that, yet players and other entities can walk right on through it.

The idea is that player should be able to swing their weapons through the fire too, to do it your way, they will have to do an extra click because they will have to break the fire before they can hit anything beyond it. I am trying to get my fire to work exactly like the vanilla fire works.

Link to comment
Share on other sites

The idea is that player should be able to swing their weapons through the fire too, to do that, they will have to do an extra click because they will have to break the fire before they can hit anything beyond it. I am trying to get my fire to work exactly like the vanilla fire works.

Ah, I see. In that case, then you will have to use the PlayerInteractEvent for LEFT_CLICK_BLOCK, then check if the block ABOVE the block clicked is your custom fire; if so, set your fire to air and cancel the event. That's what I would do, anyway.

Link to comment
Share on other sites

The idea is that player should be able to swing their weapons through the fire too, to do that, they will have to do an extra click because they will have to break the fire before they can hit anything beyond it. I am trying to get my fire to work exactly like the vanilla fire works.

Ah, I see. In that case, then you will have to use the PlayerInteractEvent for LEFT_CLICK_BLOCK, then check if the block ABOVE the block clicked is your custom fire; if so, set your fire to air and cancel the event. That's what I would do, anyway.

Diesieben has already shared this idea, and found out it is only on the server, not client, so the client side isnt smooth and causes the block to break and return if you are in creative or if the block is a block that takes 1 hit to break. I think I am getting somewhere with it though. I'm starting to get things going to the server through packets that will allow the server and client to be in sync.

Link to comment
Share on other sites

Oh, I remember running into problems like that. I found that using 'event.useBlock = Result.DENY;' works to prevent the block from getting destroyed, whereas canceling the event didn't work as well.

 

Anyway, if you're having issues with the client side, MouseEvent is definitely the way to go except that people can change their keybindings / use a gamepad - a better alternative may be to listen for KeyInputEvent and check for mc.gameSettings.keyBindAttack.

Link to comment
Share on other sites

Oh, I remember running into problems like that. I found that using 'event.useBlock = Result.DENY;' works to prevent the block from getting destroyed, whereas canceling the event didn't work as well.

 

Anyway, if you're having issues with the client side, MouseEvent is definitely the way to go except that people can change their keybindings / use a gamepad - a better alternative may be to listen for KeyInputEvent and check for mc.gameSettings.keyBindAttack.

Thats a good idea, but how would I get the key that was pressed? I dont see anything for that event that will tell me what was pressed.

 

Link to comment
Share on other sites

Its all cool then and apology accepted.

 

Yea. I meant the PlayerInteractEvent. Im doing this all from mobile :-)

 

If you have left click event on the block where the fire is you can use event.world.getBlockState(event.pos.offset(event.face)) to get the block you want to check if its fire.

You might want to check first if the click was a left click and the item held is an "approved" item to extinguish the fire(bare hand, non weapon item, chicken feathers)

 

You can then use the face even to decide to extinguish only one flame or all flames.(i would choose the one flame on the hit side but thats just me)

 

When you update the blockstate it should automatically push to the client.

 

Maybe worth to check that you are running the changing blockstate code only serverside(the firespread)

 

How much wood could a woodchuck chuck if a wood chuck could chuck wood - Guybrush Treepwood

 

I wrote my own mod ish... still a few bugs to fix. http://thaumcraft.duckdns.org/downloads/MagicCookies-1.0.6.4.jar

Link to comment
Share on other sites

Keyboard.getEventKey() gives you the key code of the current key being pressed.

 

EDIT: Oops, pasted the wrong thing - Keyboard.getEventKey() is the key code, Keyboard.getEventKeyState() is true if pressed, false if released.

I figured that out, but it seems to crash saying that the event cannot be canceled. Plus it doesnt do MouseInput so I would have to have both Events anyway. Im thinking once I get one of them completed, then it should be easy to add the other one.

 

Its all cool then and apology accepted.

 

If you have left click event on the block where the fire is you can use event.world.getBlockState(event.pos.offset(event.face)) to get the block you want to check if its fire.

 

You can then use the face even to decide to extinguish only one flame or all flames.(i would choose the one flame on the hit side but thats just me)

 

When you update the blockstate it should automatically push to the client.

 

Maybe worth to check that you are running the changing blockstate code only serverside(the firespread)

So you are saying to use onBlockClicked in my fire class,  to update the blockstate? I'm not sure that would work, again because collidable is false, it has no hitbox to interact with, so you would have to be checking for the hit on the block it's next to, which unless it's one of your own blocks the only way to do it would be via an Event. I could be misunderstanding what you are saying, but that is what I am getting from what you are saying. If I'm wrong, post a bit of "sample" code just to give me an idea of what you are talking about, and when I say "sample" I mean just through something together using b.s. variables so you cant say you gave me the code. :P

Link to comment
Share on other sites

Yea. I meant the PlayerInteractEvent. Im doing this all from mobile :-)

Ahh ok, I will see what I can figure out using that. But the issue, as I have told CoolAlias, its not that it doesnt work, it does, but the block the fire is on still breaks on the client, then the server tells that client to put the block back, so it isnt as smooth of a process as I'd like it that way.

Link to comment
Share on other sites

Its really simple.

 

First of all. Rule number 1 all non gui code must happen on server.

Currently you are running code simultanouslyserverside and clientside.

Anything that has to do witch changing blockstates has to be serverside.

 

Now in your example im going to presume your fire will always be on another block.

 

This where you use the PlayerInteractEvent to detect if your fireblock is a possible target

 

Some pseudocode(im on mobile)

@Eventhandler
Public void userclick(PlayerInteractEvent event) {
If(!event.world.isRemote) {
If(event.action == Action.LEFT_CLICK) {
if(event.world.getBlockState(event.pos.offset(event.face)).getBlock() == MyCustomChickenFire) {
Event.world.setBlockToAir(event.world.getBlockState(event.pos.offset(event.face)) );
//playsound hiss
//spawn smoke fx via networkpacket to client to tell it to spawn the fx
}
}
}
}

How much wood could a woodchuck chuck if a wood chuck could chuck wood - Guybrush Treepwood

 

I wrote my own mod ish... still a few bugs to fix. http://thaumcraft.duckdns.org/downloads/MagicCookies-1.0.6.4.jar

Link to comment
Share on other sites

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

    • Hello, I'm trying to modify the effects of native enchantments for bows and arrows in Minecraft. After using a decompilation tool, I found that the specific implementations of native bow and arrow enchantments (including `ArrowDamageEnchantment`, `ArrowKnockbackEnchantment`, `ArrowFireEnchantment`, `ArrowInfiniteEnchantment`, `ArrowPiercingEnchantment`) do not contain any information about the enchantment effects (such as the `getDamageProtection` function for `ProtectionEnchantment`, `getDamageBonus` function for `DamageEnchantment`, etc.). Upon searching for the base class of arrows, `AbstractArrow`, I found a function named setEnchantmentEffectsFromEntity`, which seems to be used to retrieve the enchantment levels of the tool held by a `LivingEntity` and calculate the specific values of the enchantment effects. However, after testing with the following code, I found that this function is not being called:   @Mixin(AbstractArrow.class) public class ModifyArrowEnchantmentEffects {     private static final Logger LOGGER = LogUtils.getLogger();     @Inject(         method = "setEnchantmentEffectsFromEntity",         at = @At("HEAD")     )     private void logArrowEnchantmentEffectsFromEntity(CallbackInfo ci) {         LOGGER.info("Arrow enchantment effects from entity");     } }   Upon further investigation, I found that within the onHitEntity method, there are several lines of code:               if (!this.level().isClientSide &amp;&amp; entity1 instanceof LivingEntity) {                EnchantmentHelper.doPostHurtEffects(livingentity, entity1);                EnchantmentHelper.doPostDamageEffects((LivingEntity)entity1, livingentity);             }   These lines of code actually call the doPostHurt and doPostAttack methods of each enchantment in the enchantment list. However, this leads back to the issue because native bow and arrow enchantments do not implement these functions. Although their base class defines the functions, they are empty. At this point, I'm completely stumped and seeking assistance. Thank you.
    • I have been trying to make a server with forge but I keep running into an issue. I have jdk 22 installed as well as Java 8. here is the debug file  
    • it crashed again     What the console says : [00:02:03] [Server thread/INFO] [Easy NPC/]: [EntityManager] Server started! [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {iceandfire:fire_dragon_roost=true, iceandfire:fire_lily=true, iceandfire:spawn_dragon_skeleton_fire=true, iceandfire:lightning_dragon_roost=true, iceandfire:spawn_dragon_skeleton_lightning=true, iceandfire:ice_dragon_roost=true, iceandfire:ice_dragon_cave=true, iceandfire:lightning_dragon_cave=true, iceandfire:cyclops_cave=true, iceandfire:spawn_wandering_cyclops=true, iceandfire:spawn_sea_serpent=true, iceandfire:frost_lily=true, iceandfire:hydra_cave=true, iceandfire:lightning_lily=true, iceandfireixie_village=true, iceandfire:myrmex_hive_jungle=true, iceandfire:myrmex_hive_desert=true, iceandfire:silver_ore=true, iceandfire:siren_island=true, iceandfire:spawn_dragon_skeleton_ice=true, iceandfire:spawn_stymphalian_bird=true, iceandfire:fire_dragon_cave=true, iceandfire:sapphire_ore=true, iceandfire:spawn_hippocampus=true, iceandfire:spawn_death_worm=true} [00:02:03] [Server thread/INFO] [co.gi.al.ic.IceAndFire/]: {TROLL_S=true, HIPPOGRYPH=true, AMPHITHERE=true, COCKATRICE=true, TROLL_M=true, DREAD_LICH=true, TROLL_F=true} [00:02:03] [Server thread/INFO] [ne.be.lo.WeaponRegistry/]: Encoded Weapon Attribute registry size (with package overhead): 41976 bytes (in 5 string chunks with the size of 10000) [00:02:03] [Server thread/INFO] [patchouli/]: Sending reload packet to clients [00:02:03] [Server thread/WARN] [voicechat/]: [voicechat] Running in offline mode - Voice chat encryption is not secure! [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Using server-ip as bind address: 0.0.0.0 [00:02:03] [Server thread/WARN] [ModernFix/]: Dedicated server took 22.521 seconds to load [00:02:03] [VoiceChatServerThread/INFO] [voicechat/]: [voicechat] Voice chat server started at 0.0.0.0:25565 [00:02:03] [Server thread/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.player.Player from class tschipp.carryon.common.carry.CarryOnDataManager [00:02:03] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@2941ffd5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 0 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 1 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 2 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 3 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 4 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 5 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 6 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 7 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 8 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 9 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 10 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 11 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 12 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 13 [00:02:10] [Netty Epoll Server IO #2/INFO] [Calio/]: Received acknowledgment for login packet with id 14 [00:02:19] [Server thread/INFO] [ne.mi.co.AdvancementLoadFix/]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@ebc7ef2 [00:02:19] [Server thread/INFO] [minecraft/PlayerList]: ZacAdos[/90.2.17.162:49242] logged in with entity id 1062 at (-1848.6727005281205, 221.0, -3054.2468255848935) [00:02:19] [Server thread/ERROR] [ModernFix/]: Skipping entity ID sync for com.talhanation.smallships.world.entity.ship.Ship: java.lang.NoClassDefFoundError: net/minecraft/client/CameraType [00:02:19] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos joined the game [00:02:19] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:19] [Server thread/INFO] [se.mi.te.da.DataManager/]: Sending data to client: ZacAdos [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Received secret request of - Gloop - ZacAdos (17) [00:02:19] [Server thread/INFO] [voicechat/]: [voicechat] Sent secret to - Gloop - ZacAdos [00:02:21] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully authenticated player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Successfully validated connection of player cc56befd-d376-3526-a760-340713c478bd [00:02:22] [VoiceChatPacketProcessingThread/INFO] [voicechat/]: [voicechat] Player - Gloop - ZacAdos (cc56befd-d376-3526-a760-340713c478bd) successfully connected to voice chat stop [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping the server [00:02:34] [Server thread/INFO] [mo.pl.ar.ArmourersWorkshop/]: stop local service [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving players [00:02:34] [Server thread/INFO] [minecraft/ServerGamePacketListenerImpl]: ZacAdos lost connection: Server closed [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: - Gloop - ZacAdos left the game [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Updating all forceload tickets for cc56befd-d376-3526-a760-340713c478bd [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:overworld [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_end [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: Saving chunks for level 'ServerLevel[world]'/minecraft:the_nether [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (world): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [00:02:34] [Server thread/INFO] [minecraft/MinecraftServer]: ThreadedAnvilChunkStorage: All dimensions are saved [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopping IO worker... [00:02:34] [Server thread/INFO] [xa.pa.OpenPartiesAndClaims/]: Stopped IO worker! [00:02:34] [Server thread/INFO] [Calio/]: Removing Dynamic Registries for: net.minecraft.server.dedicated.DedicatedServer@7dc879e1 [MineStrator Daemon]: Checking server disk space usage, this could take a few seconds... [MineStrator Daemon]: Updating process configuration files... [MineStrator Daemon]: Ensuring file permissions are set correctly, this could take a few seconds... [MineStrator Daemon]: Pulling Docker container image, this could take a few minutes to complete... [MineStrator Daemon]: Finished pulling Docker container image container@pterodactyl~ java -version openjdk version "17.0.10" 2024-01-16 OpenJDK Runtime Environment Temurin-17.0.10+7 (build 17.0.10+7) OpenJDK 64-Bit Server VM Temurin-17.0.10+7 (build 17.0.10+7, mixed mode, sharing) container@pterodactyl~ java -Xms128M -Xmx6302M -Dterminal.jline=false -Dterminal.ansi=true -Djline.terminal=jline.UnsupportedTerminal -p libraries/cpw/mods/bootstraplauncher/1.1.2/bootstraplauncher-1.1.2.jar:libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/net/minecraftforge/JarJarFileSystems/0.3.16/JarJarFileSystems-0.3.16.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar=cpw.mods.securejarhandler --add-opens java.base/java.lang.invoke=cpw.mods.securejarhandler --add-exports java.base/sun.security.util=cpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns=java.naming -Djava.net.preferIPv6Addresses=system -DignoreList=bootstraplauncher-1.1.2.jar,securejarhandler-2.1.4.jar,asm-commons-9.5.jar,asm-util-9.5.jar,asm-analysis-9.5.jar,asm-tree-9.5.jar,asm-9.5.jar,JarJarFileSystems-0.3.16.jar -DlibraryDirectory=libraries -DlegacyClassPath=libraries/cpw/mods/securejarhandler/2.1.4/securejarhandler-2.1.4.jar:libraries/org/ow2/asm/asm/9.5/asm-9.5.jar:libraries/org/ow2/asm/asm-commons/9.5/asm-commons-9.5.jar:libraries/org/ow2/asm/asm-tree/9.5/asm-tree-9.5.jar:libraries/org/ow2/asm/asm-util/9.5/asm-util-9.5.jar:libraries/org/ow2/asm/asm-analysis/9.5/asm-analysis-9.5.jar:libraries/net/minecraftforge/accesstransformers/8.0.4/accesstransformers-8.0.4.jar:libraries/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar:libraries/net/minecraftforge/eventbus/6.0.3/eventbus-6.0.3.jar:libraries/net/minecraftforge/forgespi/6.0.0/forgespi-6.0.0.jar:libraries/net/minecraftforge/coremods/5.0.1/coremods-5.0.1.jar:libraries/cpw/mods/modlauncher/10.0.8/modlauncher-10.0.8.jar:libraries/net/minecraftforge/unsafe/0.2.0/unsafe-0.2.0.jar:libraries/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar:libraries/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar:libraries/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar:libraries/net/jodah/typetools/0.8.3/typetools-0.8.3.jar:libraries/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar:libraries/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar:libraries/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar:libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar:libraries/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar:libraries/net/minecraftforge/JarJarSelector/0.3.16/JarJarSelector-0.3.16.jar:libraries/net/minecraftforge/JarJarMetadata/0.3.16/JarJarMetadata-0.3.16.jar:libraries/net/minecraftforge/fmlloader/1.19.2-43.3.0/fmlloader-1.19.2-43.3.0.jar:libraries/net/minecraft/server/1.19.2-20220805.130853/server-1.19.2-20220805.130853-extra.jar:libraries/com/github/oshi/oshi-core/5.8.5/oshi-core-5.8.5.jar:libraries/com/google/code/gson/gson/2.8.9/gson-2.8.9.jar:libraries/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar:libraries/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar:libraries/com/mojang/authlib/3.11.49/authlib-3.11.49.jar:libraries/com/mojang/brigadier/1.0.18/brigadier-1.0.18.jar:libraries/com/mojang/datafixerupper/5.0.28/datafixerupper-5.0.28.jar:libraries/com/mojang/javabridge/1.2.24/javabridge-1.2.24.jar:libraries/com/mojang/logging/1.0.0/logging-1.0.0.jar:libraries/commons-io/commons-io/2.11.0/commons-io-2.11.0.jar:libraries/io/netty/netty-buffer/4.1.77.Final/netty-buffer-4.1.77.Final.jar:libraries/io/netty/netty-codec/4.1.77.Final/netty-codec-4.1.77.Final.jar:libraries/io/netty/netty-common/4.1.77.Final/netty-common-4.1.77.Final.jar:libraries/io/netty/netty-handler/4.1.77.Final/netty-handler-4.1.77.Final.jar:libraries/io/netty/netty-resolver/4.1.77.Final/netty-resolver-4.1.77.Final.jar:libraries/io/netty/netty-transport/4.1.77.Final/netty-transport-4.1.77.Final.jar:libraries/io/netty/netty-transport-classes-epoll/4.1.77.Final/netty-transport-classes-epoll-4.1.77.Final.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-x86_64.jar:libraries/io/netty/netty-transport-native-epoll/4.1.77.Final/netty-transport-native-epoll-4.1.77.Final-linux-aarch_64.jar:libraries/io/netty/netty-transport-native-unix-common/4.1.77.Final/netty-transport-native-unix-common-4.1.77.Final.jar:libraries/it/unimi/dsi/fastutil/8.5.6/fastutil-8.5.6.jar:libraries/net/java/dev/jna/jna/5.10.0/jna-5.10.0.jar:libraries/net/java/dev/jna/jna-platform/5.10.0/jna-platform-5.10.0.jar:libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar:libraries/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:libraries/org/apache/logging/log4j/log4j-api/2.17.0/log4j-api-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-core/2.17.0/log4j-core-2.17.0.jar:libraries/org/apache/logging/log4j/log4j-slf4j18-impl/2.17.0/log4j-slf4j18-impl-2.17.0.jar:libraries/org/slf4j/slf4j-api/1.8.0-beta4/slf4j-api-1.8.0-beta4.jar cpw.mods.bootstraplauncher.BootstrapLauncher --launchTarget forgeserver --fml.forgeVersion 43.3.0 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [00:02:42] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [00:02:43] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:43] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [00:02:44] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [00:02:44] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection Latest log [29Mar2024 00:02:42.803] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 43.3.0, --fml.mcVersion, 1.19.2, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20220805.130853] [29Mar2024 00:02:42.805] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 17.0.10 by Eclipse Adoptium; OS Linux arch amd64 version 6.1.0-12-amd64 [29Mar2024 00:02:43.548] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/home/container/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2363!/ Service=ModLauncher Env=SERVER [29Mar2024 00:02:43.876] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/fmlcore/1.19.2-43.3.0/fmlcore-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/javafmllanguage/1.19.2-43.3.0/javafmllanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.877] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/lowcodelanguage/1.19.2-43.3.0/lowcodelanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:43.878] [main/WARN] [net.minecraftforge.fml.loading.moddiscovery.ModFileParser/LOADING]: Mod file /home/container/libraries/net/minecraftforge/mclanguage/1.19.2-43.3.0/mclanguage-1.19.2-43.3.0.jar is missing mods.toml file [29Mar2024 00:02:44.033] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File: and Mod File: . Using Mod File: [29Mar2024 00:02:44.034] [main/WARN] [net.minecraftforge.jarjar.selection.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: resourcefullib. Using Mod File: /home/container/mods/resourcefullib-forge-1.19.2-1.1.24.jar [29Mar2024 00:02:44.034] [main/INFO] [net.minecraftforge.fml.loading.moddiscovery.JarInJarDependencyLocator/]: Found 13 dependencies adding them to mods collection
    • I am unable to do that. Brigadier is a mojang library that parses commands.
  • Topics

×
×
  • Create New...

Important Information

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