Jump to content

[1.15.2] Can't use attackEntityFrom to fully kill player


ketchup_god

Recommended Posts

I am trying to make it so that when the player takes any damage, they instantly die with a custom death message. To display message, I needed to use attackEntityFrom(CustomDamageSource, 100). However, what happens is when the player is "killed" the death message appears and the player dies but you can see the player still has full health, and when the player is damaged again another death message is shown. I'm guessing this is because attackEntityFrom makes the game think the player is dead, but when they get damaged again the game realizes and then actually kills the player. Is there a way to avoid this and kill the player with a custom death message?

Link to comment
Share on other sites

Show your code. All of it. Preferably as a git repo.

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.

Link to comment
Share on other sites

@Mod.EventBusSubscriber(modid = BadMinecraftFeatures.MOD_ID, bus = Bus.FORGE, value = Dist.CLIENT)
public class OnPlayerDamage
{
	@SuppressWarnings("resource")
	@SubscribeEvent
	public static void onPlayerDamage(LivingDamageEvent event) throws InterruptedException
	{
		World world = Minecraft.getInstance().world;
		Entity entity = event.getEntity();
		if (entity instanceof PlayerEntity) 
		{
			Item MainItem = ((PlayerEntity) entity).getHeldItemMainhand().getItem();
			if (MainItem == ItemInit.totem_of_dying) 
			{
				double x = entity.getPosX();
				double y = entity.getPosY();
				double z = entity.getPosZ();
				((PlayerEntity) entity).inventory.deleteStack(((PlayerEntity) entity).getHeldItemMainhand());
				Minecraft.getInstance().gameRenderer.displayItemActivation(new ItemStack(ItemInit.totem_of_dying, 1));
				world.playSound( x, y, z, SoundEvents.ITEM_TOTEM_USE, SoundCategory.MASTER, 1.0F, 1.0F, false);
				entity.attackEntityFrom(CustomDamageSources.TotemDamage, 100);
				for (int i = 0; i < 5; i++) 
				{
					Minecraft.getInstance().particles.addParticleEmitter(entity, ParticleTypes.TOTEM_OF_UNDYING);
					TimeUnit.MILLISECONDS.sleep(100);
				}
			}
		}
	}
}

Here's the code. I haven't set up a git repo yet, will in the future

Link to comment
Share on other sites

8 minutes ago, ketchup_god said:

World world = Minecraft.getInstance().world;

No. Minecraft is a client only class. Use the World inside the Entity.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

52 minutes ago, diesieben07 said:

No.

LivingDamageEvent already fires on server (and maybe on the client, too). Just check that World#isRemote is false and do not use client-only classes.

I set up a server to test the mod after adding the World#isRemote test and compiled the mod. I could connect to the server fine and everything worked, but the LivingDamageEvent just wouldn't run.

Link to comment
Share on other sites

@Mod.EventBusSubscriber(modid = BadMinecraftFeatures.MOD_ID, bus = Bus.FORGE, value = Dist.CLIENT)
public class OnPlayerDamage
{
	@SuppressWarnings("resource")
	@SubscribeEvent
	public static void onPlayerDamage(LivingDamageEvent event) throws InterruptedException
	{
		Entity entity = event.getEntity();
		if (!entity.world.isRemote()) 
		{
			if (entity instanceof PlayerEntity) 
			{
				Item MainItem = ((PlayerEntity) entity).getHeldItemMainhand().getItem();
				if (MainItem == ItemInit.totem_of_dying)
				{
					double x = entity.getPosX();
					double y = entity.getPosY();
					double z = entity.getPosZ();
					((PlayerEntity) entity).inventory.deleteStack(((PlayerEntity) entity).getHeldItemMainhand());
					//Minecraft.getInstance().gameRenderer.displayItemActivation(new ItemStack(ItemInit.totem_of_dying, 1));
					entity.world.playSound( x, y, z, SoundEvents.ITEM_TOTEM_USE, SoundCategory.MASTER, 1.0F, 1.0F, false);
					entity.attackEntityFrom(CustomDamageSources.TotemDamage, 100);
					//Minecraft.getInstance().particles.addParticleEmitter(entity, ParticleTypes.TOTEM_OF_UNDYING);
				}
			}
		}
		else
		{
			return;
		}
	}
}

I did multiple tests with removing some parts of the code, and every time it worked fine in singleplayer but just didn't run in multiplayer. The items were initialized and everything, it's just that the event didn't run.

Link to comment
Share on other sites

Your event bus subscriber is set to client (parameter of the annotation). It will only run on the client distribution.

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.

 

 

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

    • 生中継 WPLホールダムトーナメント↕BCGAME33·COM㏇グレナディーンWPLホールダムゲームセンター生中継クロアチアWPLホールダムゲームセンター[本社お問い合わせテレJBOX7]生中継 WPLホールダム▦☜ホールダムバーアメリカWPLホールダムキャッシュゲーム生中継 タジキスタン生中継 WPLホールダムメーカー[総販お問い合わせカカオトークJBOX7]生中継 WPLホールダム↙(株)接続 アルメニアWPL ホールデムYouTube生中継 カナダ生中継 WLPL ホールデム接続[各種オフィコミュニティ制作] 生放送 WPL ホールデムバー 検証 キューバプロバペルホームクラブ 生放送 キューバ 生 WPLホールダム†総販 インドWPLホールダムサイト生中継ジョージア生中継WPLホールダムキャッシュゲーム[スポーツ本社]生中継WPLホールダム♣ポーカー大会トバゴWPLホールダムYouTube生中継アルバニア生中継WPLホールダムツアー[ト本社お問い合わせ]生中継WPLホールダム↔▦ホールダムパブウズベキスタンWPLホルデム接続生中継ジャマイカ生中継 WPLホルデム総販[ト総販購入] 生放送 WPLホルデム º ♡ ホールダンパブキルギス共和国のライブメッセージ総放送 WPLホールダムツアー [バカラ総販]生中継 WPLホールダム↔️ 住所ボツワナ WPLホールダムバカラパブ生中継ポールズビューカジノ生中継 WPLホールダムキャッシュゲーム [競馬総販]セルビアWPLホールダムキャッシュゲームアンドラWPLホールダム遊び場[BCGAMEBCゲーム総販お問い合わせ]お知らせ設定おすすめ購読いいですね
    • 生放送ピチスロトーナメント(株)BCGAME33·COM♡ドミニカピチスロ推薦生放送北朝鮮ピチスロ方法[本社お問い合わせテレJBOX7]生放送ピチスロ♡※旅行グランドレスカジノピチスロゲーム生放送東アジア生放送ピチスロコミュニティ[総販お問い合わせカカオトークJBOX7]生放送ピチスロ▷♠接続コンゴ民主ピチスロバカラパブ生放送ニュージーランド生放送ピーチスローサイト[各種オフィコミュニティ制作] 生放送ピーチスロー♧▥接続トランプタージマハルカジノピーチスローゲーム 生放送ツーバル 生放送[マーケティングお問い合わせ] ピーチスロー募集方法 検証生放送ボリビア生放送ピーチスローサイト[スポーツ本社]生放送ピーチスロー♠&カジノパブ北アフリカピーチスローバカラパブ生放送BCGAMEカジノ生放送ピーチスローポーカー大会[トト本社お問い合わせ]生放送ピーチスロー▧ホールダンバーフォールズビューカジノピーチスローグループトーク生放送ウルグアイ生放送ピーチスロー♠[トト総販購入] 生放送ピーチスロー本社 生放送ウクライナのフルツーリングキャッシュゲーム[カジノ総販] 生放送ピッチスロ★コミュニティロシアピッチスロットルースローライブメッセージ 動画 サウジアラビア ピチスロ ゲーム 生放送 エクアドル 生放送 ピチスロ ホールダンバー [競馬総販] バヌアツ ピチスロ 総販 アンドラ ピチスロ 旅行 [BCGAME BCゲーム総販お問い合わせ] お知らせ設定 おすすめ購読 いいですね
    • 福冈咖啡吧系统↖BCGAME55·COM◇福冈咖啡吧Telegram摔跤福冈咖啡吧公开聊天水球咖啡吧同好会骑马咖啡吧旅行[本社咨询的Tele @JBOX7]福冈咖啡吧社区软网球福冈咖啡吧总经销硬地滚球咖啡吧社区短道速滑咖啡馆网站[总经销的Kakao Talk JBOX7]福冈咖啡馆Telegram摔跤福冈咖啡馆视频 孔普巴YouTube赛艇比赛社区制作社区Opippoppicka cafe ball cafe ball cafe] 制作 ok 视频 [赌场总公司] 福冈咖啡吧嗒 跳水 福冈咖啡吧 Instagram 藤球咖啡吧 油管网 [体育总公司] 福冈咖啡吧系统 硬地滚球 福冈咖啡吧影像 Kakao Talk击剑咖啡吧呀洞[TOTO总公司咨询]福冈咖啡吧验证击剑福冈咖啡吧嗒 Free free free free cafe line 世界杯 cafe talk [TOTO总经总经购买] FOTO cafe free westy line 世界杯 cafetictalk shoptalk [福冈旅行] 公开聊天网吧咖啡屋亚东摔跤咖啡屋故事[bakara总经销]福冈咖啡屋链接踢拳福冈咖啡屋Instagram滑冰咖啡屋系统世界杯咖啡屋新地址[赛马总经销] 福冈咖啡屋聚会信息 跆跟 福冈咖啡屋 地图 壁球 壁吧 照片墙 花式咖啡馆吧度假村[BCGAME BC游戏总经销咨询] 设置通知推荐订阅 点赞
    • インターネットWPLホールダムツアー☞BCGAME33·COM▤韓国WPLホールダムサイトインターネット南アフリカWPLホールダムバカラパブ[本社お問い合わせテレJBOX7]インターネットWPLホールダム▷♬遊び場エストニアWPLホールダムアドレスインターネットシリアインターネットWPLホールダムホールダムバー[総販お問い合わせカカオトークJBOX7]インターネットWPLホールダム▥▽企業トルクメニスタンWPLホルデム放送インターネットパナマインターネット WPLホルデムカジノパブ[各種オフィコミュニティ制作]ネット WPLホルデム ◎放送ルクセンブルク WFLホルデムトーナメント ネット スリランカラネットバークラブ 本社ネビスWPLホールダム動画インターネットジブチインターネットWPLホールダム放送[スポーツ本社]インターネットWPLホールダム●本社スイスWPLホールダムコミュニティインターネットドイツインターネットWPLホールダムツアー[トト本社お問い合わせ]インターネットWPLホールダム⇒総販サンマリノWPLホールダムメーカーインターネットバルバドスインターネットWPLホールダム本社[トト総販購入]ネット WPLホルデム(株)●サイトウズベク·ワールド·モザンビーク·ネット WPLホルデムのおすすめ[カジノ総販] ネット·ウスピーク·ゲジノ総販] サイト·ゲジノワ·ゲジノワ·ウインター ゲジ WPLホールダム ポーカー大会 [バカラ総販]インターネット WPLホールダム ▲↖ 放送 モンテカルロ WPLホールダム 旅行 インターネット サンマリノ インターネット WPLホールダム 競技 [競馬総販]ナイジェリア WPLホールダム おすすめ ナウル WPLホールダム サイト [BCGAME BCゲーム 総販お問い合わせ] お知らせ設定 おすすめ購読 いいですね
    • 松山度假村度假村◀BCGAME55·COM* 松山度假村链接单杠松山度假村推特滑雪度假村视频花式度假村开放聊天[本社咨询电话@JBOX7] 松山度假村链接羽毛球松山度假村亚东橄榄球场Instagram世界杯旅游区验证[总经销顾问Kakao Talk JBOX7] 松山旅游区故事 滑雪运动休闲区广播足球休闲区 硬地滚球运动[各种官方网站制作] 制作] 松山旅游区开放篮球运动 Matsamasoote 高尔夫休闲区 Instagram旅游区链接 Mat [赌场总公司] 松山度假村网站 滑雪松山度假村联谊会 摔跤度假村 招聘广告 掷铅球 度假村故事 [体育总公司] 松山度假村 Instagram 游泳松山度假村 Kakao Talk骑马度假村的地方[TOTO总公司咨询] MATO山度假村开放聊天T-BALE TVALLE TVALE TVALE TVALE TVALE TVALE TVALTEGROM[TO总经销购买] MATO总经确认 Squash MATCHY MATCHY MATCHY MATCHY MATCHY 亚东水上乐园度假村按摩度假村旅行[百家乐总经销]松山度假村故事举重松山度假村社区自行车度假村亚东网球度假村旅行[赛马总经销]松山度假村最新地址安马松山度假村广播E体育休闲区旅行曲棍球旅游区新地址[BCGAME BC游戏总经销咨询]设置通知推荐订阅点赞
  • Topics

×
×
  • Create New...

Important Information

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