Jump to content

[1.15.2] How to properly damage entity every second


lisilew

Recommended Posts

I have an enchantment that deals certain damage to an entity every second over certain amount of time.

I attach a capability that contains current state (active or not), player id, duration and damage to the entity.

Then, I use LivingUpdateEvent to decrease duration every tick and damage the entity every 20 ticks passed.

I have two questions related to this implementation.

  1. What happens when no one is tracking the entity? Will the entity still get damaged?
  2. Is this considered a bad practice in terms of performance? If so, what method would you recommend?
Link to comment
Share on other sites

27 minutes ago, lisilew said:

What happens when no one is tracking the entity? Will the entity still get damaged?

Yes.

28 minutes ago, lisilew said:

Is this considered a bad practice in terms of performance? If so, what method would you recommend?

It's fine, but stuff like potion effects might be better.

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

13 hours ago, poopoodice said:

Potion effect might be a easier way to do this

 

13 hours ago, DavidM said:

potion effects might be better.

Potion effect sounds good as it has a method that gets called every tick but I want to damage the entity using DamageSource.cuasePlayerDamage, thus, I save player id in the capability.

As far as I know, Effect is constructed only once so how can I store extra data?

2 hours ago, diesieben07 said:

You could also use World#getGameTime, which is incremented every tick

Do you mean I put start time in the capability and check every tick if difference between current game time and start time is multiple of 20 instead of decrementing duration? Or is there a different way to use it?

Link to comment
Share on other sites

1 hour ago, diesieben07 said:

attach a capability to players and in that capability store the entity that is being damaged.

Actually, I attach the capability to the entity that is being damaged so only one player can affect the entity at the same time but one player can affect many entities at the same time.

Player's unique id is stored in the capability and when LivingUpdateEvent is fired, I get Player object from World#getPlayerByUuid.

How would this approach work when the entity is not tracked by any players and despawns?

Is this approach wrong and should I flip it like you said and attach the capability to players?

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

    • Hi, I was wondering if you could expand on this? I'm trying to remove the clouds from my custom dimension but I don't really know where to start.
    • My server console: INFO java.lang.NullPointerException: Cannot invoke "net.minecraft.server.level.ServerLevel.m_6857_()" because "serverlevel2" is null 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_129885_(MinecraftServer.java:513) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_7041_(MinecraftServer.java:584) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.dedicated.DedicatedServer.m_7041_(DedicatedServer.java:510) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A} 02.12 22:25:44 [Server] net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:689) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:? {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A} 02.12 22:25:44 [Multicraft] Server shut down (running) 02.12 22:25:44 [Multicraft] Not restarting crashed server. 02.12 22:25:44 [Multicraft] Stopping server! 02.12 22:25:46 [Multicraft] Server stopped ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Crash file:  ---- Minecraft Crash Report ---- // Oops. Time: 2023-12-02 22:25:43 Description: Exception in server tick loop java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonArray.iterator()" because "$$1" is null     at net.minecraft.server.players.StoredUserList.m_11399_(StoredUserList.java:121) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.m_139596_(DedicatedPlayerList.java:85) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedPlayerList.<init>(DedicatedPlayerList.java:24) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:classloading}     at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:158) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:tombstone.mixins.json:DedicatedServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:634) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.20.1-20230612.114412-srg.jar%23225!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) ~[?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.20.1     Minecraft Version ID: 1.20.1     Operating System: Linux (amd64) version 4.15.0-206-generic     Java Version: 17, Oracle Corporation     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Oracle Corporation     Memory: 554926416 bytes (529 MiB) / 1665138688 bytes (1588 MiB) up to 6442450944 bytes (6144 MiB)     CPUs: 24     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 9 3900X 12-Core Processor     Identifier: AuthenticAMD Family 23 Model 113 Stepping 0     Microarchitecture: Zen 2     Frequency (GHz): -0.00     Number of physical packages: 1     Number of physical CPUs: 12     Number of logical CPUs: 24     Graphics card #0 name: ASPEED Graphics Family     Graphics card #0 vendor: ASPEED Technology, Inc. (0x1a03)     Graphics card #0 VRAM (MB): 0.00     Graphics card #0 deviceId: 0x2000     Graphics card #0 versionInfo: unknown     Virtual memory max (MB): 70588.73     Virtual memory used (MB): 99740.80     Swap memory total (MB): 6144.00     Swap memory used (MB): 46.75     JVM Flags: 2 total; -Xmx6144M -Xms512M     Server Running: true     Data Packs: vanilla, mod:betterdungeons, mod:villagesandpillages (incompatible), mod:supermartijn642configlib (incompatible), mod:mutantmonsters, mod:rechiseled (incompatible), mod:geckolib, mod:jei, mod:graveyard (incompatible), mod:libraryferret, mod:goblintraders (incompatible), mod:dynamiclights (incompatible), mod:sophisticatedcore (incompatible), mod:reap, mod:waystones, mod:monsterplus (incompatible), mod:forgeendertech, mod:structory, mod:journeymap (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:artifacts, mod:yungsapi, mod:mixinextras (incompatible), mod:dungeoncrawl, mod:sophisticatedbackpacks (incompatible), mod:balm, mod:terralith, mod:fusion, mod:usefulslime (incompatible), mod:imst, mod:puzzlesaccessapi, mod:betterfortresses, mod:cloth_config (incompatible), mod:forge, mod:twilightforest, mod:supplementaries, mod:geophilic, mod:athena, mod:dungeons_arise, mod:chipped (incompatible), mod:vanillaplustools (incompatible), mod:moonlight (incompatible), mod:mixinsquared (incompatible), mod:jade (incompatible), mod:creativecore, mod:sleep_tight (incompatible), mod:supermartijn642corelib (incompatible), mod:curios (incompatible), mod:brutalbosses (incompatible), mod:securitycraft, mod:bettervillage, mod:elevatorid, mod:betterstrongholds, mod:tombstone, mod:resourcefullib (incompatible), mod:architectury (incompatible), mod:appleskin (incompatible), mod:cupboard (incompatible), mod:puzzleslib, mod:jadeaddons (incompatible), mod:framework, mod:expandability (incompatible), mod:bettermineshafts, mod:playerrevive, mod:cristellib (incompatible), Supplementaries Generated Pack, mutantmonsters:biome_modifications     Enabled Feature Flags: minecraft:vanilla     World Generation: Experimental     Is Modded: Definitely; Server brand changed to 'forge'     Type: Dedicated Server (map_server.txt)     ModLauncher: 10.0.9+10.0.9+main.dcd20f30     ModLauncher launch target: forgeserver     ModLauncher naming: srg     ModLauncher services:          mixin-0.8.5.jar mixin PLUGINSERVICE          eventbus-6.0.5.jar eventbus PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar slf4jfixer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar object_holder_definalize PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtime_enum_extender PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar capability_token_subclass PLUGINSERVICE          accesstransformers-8.0.4.jar accesstransformer PLUGINSERVICE          fmlloader-1.20.1-47.2.8.jar runtimedistcleaner PLUGINSERVICE          modlauncher-10.0.9.jar mixin TRANSFORMATIONSERVICE          modlauncher-10.0.9.jar fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          YungsBetterDungeons-1.20-Forge-4.0.3.jar          |YUNG's Better Dungeons        |betterdungeons                |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         villagesandpillages-forge-mc1.20.1-1.0.0.jar      |Villages&Pillages             |villagesandpillages           |1.0.0               |DONE      |Manifest: NOSIGNATURE         supermartijn642configlib-1.1.8-forge-mc1.20.jar   |SuperMartijn642's Config Libra|supermartijn642configlib      |1.1.8               |DONE      |Manifest: NOSIGNATURE         MutantMonsters-v8.0.4-1.20.1-Forge.jar            |Mutant Monsters               |mutantmonsters                |8.0.4               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         rechiseled-1.1.5c-forge-mc1.20.jar                |Rechiseled                    |rechiseled                    |1.1.5c              |DONE      |Manifest: NOSIGNATURE         geckolib-forge-1.20.1-4.2.4.jar                   |GeckoLib 4                    |geckolib                      |4.2.4               |DONE      |Manifest: NOSIGNATURE         jei-1.20.1-forge-15.2.0.27.jar                    |Just Enough Items             |jei                           |15.2.0.27           |DONE      |Manifest: NOSIGNATURE         The_Graveyard_2.6.2_(FORGE)_for_1.20+.jar         |The Graveyard                 |graveyard                     |2.6.2               |DONE      |Manifest: NOSIGNATURE         libraryferret-forge-1.20.1-4.0.0.jar              |Library ferret                |libraryferret                 |4.0.0               |DONE      |Manifest: NOSIGNATURE         goblintraders-forge-1.20.1-1.9.3.jar              |Goblin Traders                |goblintraders                 |1.9.3               |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         dynamiclights-1.20.1.2.jar                        |Dynamic Lights                |dynamiclights                 |1.20.1.2            |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.20.1-0.5.107.496.jar          |Sophisticated Core            |sophisticatedcore             |0.5.107.496         |DONE      |Manifest: NOSIGNATURE         reap-1.20.1-1.0.2.jar                             |Reap Mod                      |reap                          |1.20.1-1.0.2        |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.20-14.0.2.jar                   |Waystones                     |waystones                     |14.0.2              |DONE      |Manifest: NOSIGNATURE         MonsterPlus-Forge1.20.1-v1.1.6.1.jar              |Monster Plus                  |monsterplus                   |1.0                 |DONE      |Manifest: NOSIGNATURE         ForgeEndertech-1.20.1-11.1.0.0-build.0142.jar     |ForgeEndertech                |forgeendertech                |11.1.0.0            |DONE      |Manifest: NOSIGNATURE         Structory_1.20.2_v1.3.3.jar                       |Structory                     |structory                     |1.3.3               |DONE      |Manifest: NOSIGNATURE         journeymap-1.20.1-5.9.18-neoforge.jar             |Journeymap                    |journeymap                    |5.9.18              |DONE      |Manifest: NOSIGNATURE         citadel-2.4.9-1.20.1.jar                          |Citadel                       |citadel                       |2.4.9               |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.22.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.22.6              |DONE      |Manifest: NOSIGNATURE         artifacts-forge-9.2.0.jar                         |Artifacts                     |artifacts                     |9.2.0               |DONE      |Manifest: NOSIGNATURE         YungsApi-1.20-Forge-4.0.2.jar                     |YUNG's API                    |yungsapi                      |1.20-Forge-4.0.2    |DONE      |Manifest: NOSIGNATURE         mixinextras-forge-0.2.1-beta.2.jar                |MixinExtras                   |mixinextras                   |0.2.1-beta.2        |DONE      |Manifest: NOSIGNATURE         Dungeon+Crawl-1.20.1-2.3.14.jar                   |Dungeon Crawl                 |dungeoncrawl                  |2.3.14              |DONE      |Manifest: NOSIGNATURE         sophisticatedbackpacks-1.20.1-3.18.68.952.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |3.18.68.952         |DONE      |Manifest: NOSIGNATURE         balm-forge-1.20.1-7.1.4.jar                       |Balm                          |balm                          |7.1.4               |DONE      |Manifest: NOSIGNATURE         Terralith_1.20.2_v2.4.8.jar                       |Terralith                     |terralith                     |2.4.8               |DONE      |Manifest: NOSIGNATURE         fusion-1.1.0b-forge-mc1.20.1.jar                  |Fusion                        |fusion                        |1.1.0b              |DONE      |Manifest: NOSIGNATURE         UsefulSlime-forge-1.20.2-1.7.1.jar                |Useful Slime                  |usefulslime                   |1.7.1               |DONE      |Manifest: NOSIGNATURE         imst-2.1.0.jar                                    |Immersive Structures          |imst                          |2.1.0               |DONE      |Manifest: NOSIGNATURE         puzzlesaccessapi-forge-8.0.7.jar                  |Puzzles Access Api            |puzzlesaccessapi              |8.0.7               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         YungsBetterNetherFortresses-1.20-Forge-2.0.5.jar  |YUNG's Better Nether Fortresse|betterfortresses              |1.20-Forge-2.0.5    |DONE      |Manifest: NOSIGNATURE         cloth-config-11.1.106-forge.jar                   |Cloth Config v10 API          |cloth_config                  |11.1.106            |DONE      |Manifest: NOSIGNATURE         forge-1.20.1-47.2.8-universal.jar                 |Forge                         |forge                         |47.2.8              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         twilightforest-1.20.1-4.3.1893-universal.jar      |The Twilight Forest           |twilightforest                |4.3.1893            |DONE      |Manifest: NOSIGNATURE         supplementaries-1.20-2.6.31.jar                   |Supplementaries               |supplementaries               |1.20-2.6.31         |DONE      |Manifest: NOSIGNATURE         geophilic-v2.1.0-mc1.20u1.20.2.jar                |Geophilic                     |geophilic                     |2.1.0-mc1.20u1.20.2 |DONE      |Manifest: NOSIGNATURE         athena-forge-1.20.1-3.1.1.jar                     |Athena                        |athena                        |3.1.1               |DONE      |Manifest: NOSIGNATURE         DungeonsArise-1.20.1-2.1.57-release.jar           |When Dungeons Arise           |dungeons_arise                |2.1.57-1.20.1       |DONE      |Manifest: NOSIGNATURE         chipped-forge-1.20.1-3.0.1.jar                    |Chipped                       |chipped                       |3.0.1               |DONE      |Manifest: NOSIGNATURE         server-1.20.1-20230612.114412-srg.jar             |Minecraft                     |minecraft                     |1.20.1              |DONE      |Manifest: NOSIGNATURE         vanillaplustools-1.20-1.0.jar                     |Vanilla+ Tools                |vanillaplustools              |1.20-1.0            |DONE      |Manifest: NOSIGNATURE         moonlight-1.20-2.8.66-forge.jar                   |Moonlight Library             |moonlight                     |1.20-2.8.66         |DONE      |Manifest: NOSIGNATURE         mixinsquared-forge-0.1.1.jar                      |MixinSquared                  |mixinsquared                  |0.1.1               |DONE      |Manifest: NOSIGNATURE         Jade-1.20.1-forge-11.6.3.jar                      |Jade                          |jade                          |11.6.3              |DONE      |Manifest: NOSIGNATURE         CreativeCore_FORGE_v2.11.10_mc1.20.1.jar          |CreativeCore                  |creativecore                  |2.11.10             |DONE      |Manifest: NOSIGNATURE         sleep_tight-1.20-1.1.8.jar                        |Sleep Tight                   |sleep_tight                   |1.20-1.1.8          |DONE      |Manifest: NOSIGNATURE         supermartijn642corelib-1.1.15-forge-mc1.20.jar    |SuperMartijn642's Core Lib    |supermartijn642corelib        |1.1.15              |DONE      |Manifest: NOSIGNATURE         curios-forge-5.4.3+1.20.1.jar                     |Curios API                    |curios                        |5.4.3+1.20.1        |DONE      |Manifest: NOSIGNATURE         brutalbosses-1.20.1-6.6.jar                       |brutalbosses mod              |brutalbosses                  |1.20.1-6.6          |DONE      |Manifest: NOSIGNATURE         [1.20.1]+SecurityCraft+v1.9.8.jar                 |SecurityCraft                 |securitycraft                 |1.9.8               |DONE      |Manifest: NOSIGNATURE         bettervillage-forge-1.20.1-3.2.0 (1).jar          |Better village                |bettervillage                 |3.1.0               |DONE      |Manifest: NOSIGNATURE         elevatorid-1.20.1-lex-1.9.jar                     |Elevator Mod                  |elevatorid                    |1.20.1-lex-1.9      |DONE      |Manifest: NOSIGNATURE         YungsBetterStrongholds-1.20-Forge-4.0.3.jar       |YUNG's Better Strongholds     |betterstrongholds             |1.20-Forge-4.0.3    |DONE      |Manifest: NOSIGNATURE         tombstone-8.5.5-1.20.1.jar                        |Corail Tombstone              |tombstone                     |8.5.5               |DONE      |Manifest: NOSIGNATURE         resourcefullib-forge-1.20.1-2.1.18.jar            |Resourceful Lib               |resourcefullib                |2.1.18              |DONE      |Manifest: NOSIGNATURE         architectury-9.1.12-forge.jar                     |Architectury                  |architectury                  |9.1.12              |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.20.1-2.5.1.jar                |AppleSkin                     |appleskin                     |2.5.1+mc1.20.1      |DONE      |Manifest: NOSIGNATURE         cupboard-1.20.1-2.1.jar                           |Cupboard utilities            |cupboard                      |1.20.1-2.1          |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v8.1.9-1.20.1-Forge.jar                |Puzzles Lib                   |puzzleslib                    |8.1.9               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         JadeAddons-1.20.1-forge-5.2.1.jar                 |Jade Addons                   |jadeaddons                    |5.2.1               |DONE      |Manifest: NOSIGNATURE         framework-forge-1.20.1-0.6.16.jar                 |Framework                     |framework                     |0.6.16              |DONE      |Manifest: 0d:78:5f:44:c0:47:0c:8c:e2:63:a3:04:43:d4:12:7d:b0:7c:35:37:dc:40:b1:c1:98:ec:51:eb:3b:3c:45:99         expandability-forge-9.0.0.jar                     |ExpandAbility                 |expandability                 |9.0.0               |DONE      |Manifest: NOSIGNATURE         YungsBetterMineshafts-1.20-Forge-4.0.4.jar        |YUNG's Better Mineshafts      |bettermineshafts              |1.20-Forge-4.0.4    |DONE      |Manifest: NOSIGNATURE         PlayerRevive_FORGE_v2.0.19_mc1.20.1.jar           |PlayerRevive                  |playerrevive                  |2.0.19              |DONE      |Manifest: NOSIGNATURE         cristellib-1.1.5-forge.jar                        |Cristel Lib                   |cristellib                    |1.1.5               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 0bd76986-5800-4dc8-8381-8851e0739175     FML: 47.2     Forge: net.minecraftforge:47.2.8
    • When loading into the world I can see a glimpse of the terrain load and then the game crashes. The same thing happens for my friend. I'm not sure what mod is causing the crash.   Here is the crash log: https://pastebin.com/k80kuS1d
    • Hice este video sobre Minecraft y es el primer video de mi canal, me gustaría que puedan verlo y apoyarme, pero también critiquen en el video para poder mejorar el contenido, gracias https://www.youtube.com/watch?v=bYpNWs8M7zs&t=21s
  • Topics

×
×
  • Create New...

Important Information

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