Jump to content

Recommended Posts

Posted
6 hours ago, ocome said:

By the way, if this is a java thing, I hope you don't mind, but why do I get a static context error with getManaData

the method is static, so you don't need a instance of the class to call this method

6 hours ago, ocome said:
ManaData statsa1s = MyCapabilityImplementation.getManaData();

this is completely wrong, call Player#getCapability to get your Capability inside of a LazyOptional then call LazyOptional#orElseThrow to get the Capability Interface and to throw a Exception if the Capability is not present,
then you can get the data from your Capability Interface

1 hour ago, ocome said:
final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity();

you didn't do what i told you to do, you should create a constructor with the Player and store it in your MyCapabilityImplementation

1 hour ago, ocome said:
new MyCapabilityImplementation().tick(eventObject);

what on earth is that?

Posted
17 hours ago, Luis_ST said:

this is completely wrong, call Player#getCapability to get your Capability inside of a LazyOptional then call LazyOptional#orElseThrow to get the Capability Interface and to throw a Exception if the Capability is not present,
then you can get the data from your Capability Interface

        LazyOptional<MyCapabilityInterface> stats1 = minecraft.player.getCapability(MyCapability.INSTANCE);
        MyCapabilityInterface myCapabilityInterface=stats1.orElseThrow(IllegalStateException::new);
        ManaData manaData= myCapabilityInterface.getManaData();
        int level =manaData.getManaLevel();

implemented. No errors are seen.

 

17 hours ago, Luis_ST said:

you didn't do what i told you to do, you should create a constructor with the Player and store it in your MyCapabilityImplementation

        public MyCapabilityProviderEntity(Player eventObject) {
           new MyCapabilityImplementation(eventObject) ;
        }

 

    public void  onAttachingCapabilitiesEntity(final AttachCapabilitiesEvent<Entity> event) {
        boolean iof =  event.getObject()  instanceof Player;
        if (iof ==true) {
            Player eventObject = (Player) event.getObject();
            final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity(eventObject);
            event.addCapability(MyCapabilityProviderEntity.IDENTIFIER, provider);
       }
    }

MyCapabilityImplementation


public  class MyCapabilityImplementation implements MyCapabilityInterface {
    protected   ManaData manaData = new ManaData();
    private static final String NBT_KEY_DAMAGE_DEALT = "damageDealt";
    public Player player ;
    public Level level;
    private String Value = "";
    public Minecraft minecraft;

    public MyCapabilityImplementation() {
    }

    public MyCapabilityImplementation(Player object) {
        player=object;
    }
    @Override
    public ManaData getManaData() {
        return this.manaData;
    }

Is this what it means to create in the player?
Honestly, I'm not sure I'm getting it right due to the way the meaning is conveyed and my lack of knowledge

 

Posted
4 hours ago, ocome said:

implemented. No errors are seen.

correct, you can short up the code a bit but this is optional 

4 hours ago, ocome said:

Is this what it means to create in the player?

yeah

4 hours ago, ocome said:

Honestly, I'm not sure I'm getting it right due to the way the meaning is conveyed and my lack of knowledge

that's basic java, to create a Constructor with a parameter and then to store the Object in Field 

Posted (edited)
13 hours ago, Luis_ST said:

that's basic java, to create a Constructor with a parameter

MyCapabilityAttacher

            Player eventObject = (Player) event.getObject();
            final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity(eventObject);
            event.addCapability(MyCapabilityProviderEntity.IDENTIFIER, provider);
        public MyCapabilityProviderEntity(Player eventObject) {
            new MyCapabilityImplementation(eventObject);
        }
13 hours ago, Luis_ST said:

and then to store the Object in Field 

MyCapabilityImplementation

public  class MyCapabilityImplementation implements MyCapabilityInterface {
    protected   ManaData manaData = new ManaData();
    private static final String NBT_KEY_DAMAGE_DEALT = "damageDealt";
    public Player player ;
    public Level level;
    private String Value = "";

    public MyCapabilityImplementation(Player eventObject) {
        player=eventObject;
    }

Is this correct?

I tried to make it as described, but it may not have come across correctly.

Edited by ocome
Posted (edited)
1 hour ago, Luis_ST said:

you could make the fields final and initialize the level field in the constructor,
does it work?

public  class MyCapabilityImplementation implements MyCapabilityInterface {
    protected   ManaData manaData = new ManaData();
    private static final String NBT_KEY_DAMAGE_DEALT = "damageDealt";
    public final Player player ;
    public final Level level ;
    private  String Value = "";

    public MyCapabilityImplementation(Player eventObject) {
        player=eventObject;
        level = eventObject.getLevel();
    }

    public MyCapabilityImplementation() {
        player = null;
        level = null;
    }

It works and no special errors occur anymore

I added it to the previous section thinking it should be executed at Player runtime, but it was only executed at the start.

Edited by ocome
Posted
8 hours ago, ocome said:

I added it to the previous section thinking it should be executed at Player runtime, but it was only executed at the start.

what are you talking about?

Posted

Oh, I left out an explanation.

I think I need a method that runs all the time, but in the above location, it is only called at startup.
I'd like to get some hints on where to call it.

Posted
29 minutes ago, ocome said:

I'd like to get some hints on where to call it.

about which method you are talking, MyCapabilityInterface#tick?

it depends on what the method should do

Posted

then subscribe to TickEvent.Player and check if it's on server,
then get your Capability and call tick there

Note: TickEvents are fired twice you need to check the phase of the Event

  • Like 1
Posted
On 2/4/2022 at 11:40 PM, Luis_ST said:

hen subscribe to TickEvent.Player and check if it's on server,
then get your Capability and call tick there

Note: TickEvents are fired twice you need to check the phase of the Event

    @SubscribeEvent
    public void onPlayerPreTick(final AttachCapabilitiesEvent<Entity> event){
        Player player =Minecraft.getInstance().player;
        boolean playercheck = MinecraftForge.EVENT_BUS.post(new TickEvent.PlayerTickEvent(TickEvent.Phase.START, player));
        if(playercheck ==true)
        {
            Minecraft minecraft = Minecraft.getInstance();
            LazyOptional<MyCapabilityInterface> stats1 = minecraft.player.getCapability(MyCapability.INSTANCE);
            MyCapabilityInterface myCapabilityInterface = stats1.orElseThrow(IllegalStateException::new);
            myCapabilityInterface.tick();
        }
    }

Is this wrong?
player is being called, but all return false

Posted
9 minutes ago, ocome said:
MinecraftForge.EVENT_BUS.post(new TickEvent.PlayerTickEvent(TickEvent.Phase.START, player));

why on earth are you doing this?

 

10 minutes ago, ocome said:
Minecraft minecraft = Minecraft.getInstance();

thus is client side only, what do you want to call each tick

Posted
19 minutes ago, Luis_ST said:

why on earth are you doing this?

I thought if I used this it would return true for Player.END

 

22 minutes ago, Luis_ST said:

thus is client side only, what do you want to call each tick

Okay, I'll think about it some more.

Posted (edited)
1 hour ago, ocome said:

I thought if I used this it would return true for Player.END

no you create a new TickEvent inside the TickEvent, you basically need to check if the Phase which is given by the Event equals Phase.START or Phase.END

1 hour ago, ocome said:

Okay, I'll think about it some more.

please answer my question

Edited by Luis_ST
Posted
5 minutes ago, ocome said:

I thought I needed to call capability

yeah but use the Player from the Event

1 hour ago, ocome said:
public void onPlayerPreTick(final AttachCapabilitiesEvent<Entity> event)

you need to use there TickEvent.Player and not AttachCapabilitiesEvent

2 hours ago, ocome said:
myCapabilityInterface.tick();

what does this method do?

Posted
24 minutes ago, Luis_ST said:

yeah but use the Player from the Event

My idea is to get the vanilla player, call Capability when the vanilla START is obtained, and then call tick from Interface.... 

However, from your answer, it seems that it is not. 
It's hard to .... I want to understand :(

 

21 minutes ago, Luis_ST said:

you need to use there TickEvent.Player and not AttachCapabilitiesEvent

I did not know what parameters were available.
I'm sure there is a way to find out from somewhere, but do you know of one?

 

21 minutes ago, Luis_ST said:

what does this method do?

implementation

public void tick() {
        if (!this.level.isClientSide) {
            this.manaData.tick(player);
        }
}

 

    net.minecraftforge.event.ForgeEventFactory.onPlayerPreTick(player);

need equivalent of this code?

 

Manadata

    public void tick(Player p_38711_) {
        Difficulty difficulty = p_38711_.level.getDifficulty();
        this.lastManaLevel = this.manaLevel;
        if (this.exhaustionLevel > 4.0F) {
            this.exhaustionLevel -= 4.0F;
            if (this.saturationLevel > 0.0F) {
                this.saturationLevel = Math.max(this.saturationLevel - 1.0F, 0.0F);
            } else if (difficulty != Difficulty.PEACEFUL) {
                this.manaLevel = Math.max(this.manaLevel - 1, 0);
            }
        }

        boolean flag = p_38711_.level.getGameRules().getBoolean(GameRules.RULE_NATURAL_REGENERATION);
        if (flag && this.saturationLevel > 0.0F && p_38711_.isHurt() && this.manaLevel >= 20) {
            ++this.tickTimer;
            if (this.tickTimer >= 10) {
                float f = Math.min(this.saturationLevel, 6.0F);
                p_38711_.heal(f / 6.0F);
                this.addExhaustion(f);
                this.tickTimer = 0;
            }
        } else if (flag && this.manaLevel >= 18 && p_38711_.isHurt()) {
            ++this.tickTimer;
            if (this.tickTimer >= 80) {
                p_38711_.heal(1.0F);
                this.addExhaustion(6.0F);
                this.tickTimer = 0;
            }
        } else if (this.manaLevel <= 0) {
            ++this.tickTimer;
            if (this.tickTimer >= 80) {
                if (p_38711_.getHealth() > 10.0F || difficulty == Difficulty.HARD || p_38711_.getHealth() > 1.0F && difficulty == Difficulty.NORMAL) {
                    p_38711_.hurt(DamageSource.STARVE, 1.0F);
                }

                this.tickTimer = 0;
            }
        } else {
            this.tickTimer = 0;
        }

    }

 

Posted (edited)
8 hours ago, ocome said:

need equivalent of this code?

no just create a Event handler, similar to the AttachCapabilitiesEvent but with TickEvent.Player

Edit: I would recommend you to read the doc about Events

Edited by Luis_ST
  • Like 1
Posted (edited)
20 hours ago, Luis_ST said:

no just create a Event handler, similar to the AttachCapabilitiesEvent but with TickEvent.Player

    @SubscribeEvent
    public void onPlayerPreTick(final TickEvent.PlayerTickEvent  event){
        Player player = event.player;
      boolean iof = player  instanceof Player;
        if (iof ==true) {
            LazyOptional<MyCapabilityInterface> stats1 = player.getCapability(MyCapability.INSTANCE);
            try {
                MyCapabilityInterface myCapabilityInterface = stats1.orElseThrow(IllegalStateException::new);
                myCapabilityInterface.tick(event.player);
            } catch (IllegalStateException e) {
                return;
            }
        }
    }

Basically, it's working!

Edited by ocome
Posted

OK!!! I've created a system for regeneration mana  it's working!(not perfect, but I think it's adjustable.)
I was able to do this while thinking about it, and I think I have gained some abilities that I can use in other ways.
Thank you very much for answering my questions so many times over a very long period of time! :D

Posted

I could be wrong, but I seem to get an error when I try to load a player when they are killed.

Um... Does this mean that I need to make sure that the player exists on the server?
And if they aren't, don't try read them?

Posted
7 hours ago, diesieben07 said:

What error?

---- Minecraft Crash Report ----
// There are four lights!

Time: 2022/02/09 1:28
Description: Ticking player

java.lang.IllegalStateException: null
	at net.minecraftforge.common.util.LazyOptional.orElseThrow(LazyOptional.java:295) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2376%2382!/:?] {re:classloading}
	at com.playerelementtutorial.playerelementtutorialmod.MyCapabilityAttacher.onPlayerPreTick(MyCapabilityAttacher.java:72) ~[%2381!/:?] {re:classloading}
	at net.minecraftforge.eventbus.ASMEventHandler_1_MyCapabilityAttacher_onPlayerPreTick_PlayerTickEvent.invoke(.dynamic) ~[?:?] {}
	at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.event.ForgeEventFactory.onPlayerPostTick(ForgeEventFactory.java:856) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2376%2382!/:?] {re:classloading}
	at net.minecraft.world.entity.player.Player.tick(Player.java:278) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:439) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:206) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.network.Connection.tick(Connection.java:233) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:142) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:882) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:808) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:86) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:668) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:258) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at java.lang.Thread.run(Thread.java:833) [?:?] {}


A detailed walkthrough of the error, its code path and all known details is as follows:
---------------------------------------------------------------------------------------

-- Head --
Thread: Server thread
Stacktrace:
	at net.minecraftforge.common.util.LazyOptional.orElseThrow(LazyOptional.java:295) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2376%2382!/:?] {re:classloading}
	at com.playerelementtutorial.playerelementtutorialmod.MyCapabilityAttacher.onPlayerPreTick(MyCapabilityAttacher.java:72) ~[%2381!/:?] {re:classloading}
	at net.minecraftforge.eventbus.ASMEventHandler_1_MyCapabilityAttacher_onPlayerPreTick_PlayerTickEvent.invoke(.dynamic) ~[?:?] {}
	at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:302) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) ~[eventbus-5.0.7.jar%239!/:?] {}
	at net.minecraftforge.event.ForgeEventFactory.onPlayerPostTick(ForgeEventFactory.java:856) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2376%2382!/:?] {re:classloading}
	at net.minecraft.world.entity.player.Player.tick(Player.java:278) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
-- Player being ticked --
Details:
	Entity Type: minecraft:player (net.minecraft.server.level.ServerPlayer)
	Entity ID: 154
	Entity Name: Dev
	Entity's Exact location: -239.30, 65.00, 496.09
	Entity's Block location: World: (-240,65,496), Section: (at 0,1,0 in -15,4,31; chunk contains blocks -240,-64,496 to -225,319,511), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,-64,0 to -1,319,511)
	Entity's Momentum: 0.00, -0.16, 0.00
	Entity's Passengers: []
	Entity's Vehicle: null
Stacktrace:
	at net.minecraft.server.level.ServerPlayer.doTick(ServerPlayer.java:439) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.network.ServerGamePacketListenerImpl.tick(ServerGamePacketListenerImpl.java:206) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.network.Connection.tick(Connection.java:233) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.server.network.ServerConnectionListener.tick(ServerConnectionListener.java:142) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading}
	at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:882) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:808) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.client.server.IntegratedServer.tickServer(IntegratedServer.java:86) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:668) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:258) ~[forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp.jar%2377!/:?] {re:classloading,pl:accesstransformer:B}
	at java.lang.Thread.run(Thread.java:833) [?:?] {}


-- System Details --
Details:
	Minecraft Version: 1.18.1
	Minecraft Version ID: 1.18.1
	Operating System: Windows 10 (amd64) version 10.0
	Java Version: 17.0.1, Oracle Corporation
	Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation
	Memory: 4097892080 bytes (3908 MiB) / 6509559808 bytes (6208 MiB) up to 12859736064 bytes (12264 MiB)
	CPUs: 8
	Processor Vendor: GenuineIntel
	Processor Name: Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
	Identifier: Intel64 Family 6 Model 158 Stepping 9
	Microarchitecture: Kaby Lake
	Frequency (GHz): 3.60
	Number of physical packages: 1
	Number of physical CPUs: 4
	Number of logical CPUs: 8
	Graphics card #0 name: NVIDIA GeForce GTX 1050 Ti
	Graphics card #0 vendor: NVIDIA (0x10de)
	Graphics card #0 VRAM (MB): 4095.00
	Graphics card #0 deviceId: 0x1c82
	Graphics card #0 versionInfo: DriverVersion=30.0.14.7111
	Graphics card #1 name: Intel(R) HD Graphics 630
	Graphics card #1 vendor: Intel Corporation (0x8086)
	Graphics card #1 VRAM (MB): 1024.00
	Graphics card #1 deviceId: 0x5912
	Graphics card #1 versionInfo: DriverVersion=27.20.100.8681
	Memory slot #0 capacity (MB): 8192.00
	Memory slot #0 clockSpeed (GHz): 2.40
	Memory slot #0 type: DDR4
	Memory slot #1 capacity (MB): 16384.00
	Memory slot #1 clockSpeed (GHz): 2.40
	Memory slot #1 type: DDR4
	Memory slot #2 capacity (MB): 8192.00
	Memory slot #2 clockSpeed (GHz): 2.40
	Memory slot #2 type: DDR4
	Memory slot #3 capacity (MB): 16384.00
	Memory slot #3 clockSpeed (GHz): 2.40
	Memory slot #3 type: DDR4
	Virtual memory max (MB): 79089.23
	Virtual memory used (MB): 35052.52
	Swap memory total (MB): 30061.29
	Swap memory used (MB): 659.84
	JVM Flags: 1 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump
	Server Running: true
	Player Count: 1 / 8; [ServerPlayer['Dev'/154, l='ServerLevel[new world]', x=-239.30, y=65.00, z=496.09, removed=KILLED]]
	Data Packs: vanilla, mod:playerelementtutorialmod, mod:forge
	Type: Integrated Server (map_client.txt)
	Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'
	ModLauncher: 9.1.0+9.1.0+main.6690ee51
	ModLauncher launch target: forgeclientuserdev
	ModLauncher naming: mcp
	ModLauncher services: 
		 mixin PLUGINSERVICE 
		 eventbus PLUGINSERVICE 
		 object_holder_definalize PLUGINSERVICE 
		 runtime_enum_extender PLUGINSERVICE 
		 capability_token_subclass PLUGINSERVICE 
		 accesstransformer PLUGINSERVICE 
		 runtimedistcleaner PLUGINSERVICE 
		 mixin TRANSFORMATIONSERVICE 
		 fml TRANSFORMATIONSERVICE 
	FML Language Providers: 
		[email protected]
		javafml@null
	Mod List: 
		forge-1.18.1-39.0.64_mapped_official_1.18.1-recomp|Minecraft                     |minecraft                     |1.18.1              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f
		main                                              |Player Element Tutorialmod    |playerelementtutorialmod      |0.0NONE             |DONE      |Manifest: NOSIGNATURE
		                                                  |Forge                         |forge                         |39.0.64             |DONE      |Manifest: NOSIGNATURE
	Crash Report UUID: ac5951cf-4cbe-4001-910d-a749a904453a
	FML: 39.0
	Forge: net.minecraftforge:39.0.64

 

Posted
            myCapabilityInterface.tick(event.player);
            final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity(player);
            event.addCapability(IDENTIFIER, provider);

Does that mean we need addcapability?
I don't think tickevent has it, but is there a way to do it?

Posted (edited)
        if (iof ==true) {
            LazyOptional<MyCapabilityInterface> stats1 = player.getCapability(MyCapability.INSTANCE);
            MyCapabilityInterface myCapabilityInterface = stats1.orElseThrow(IllegalStateException::new);
            myCapabilityInterface.tick(event.player);
            final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity(player);
            AttachCapabilitiesEvent.addCapability(IDENTIFIER, provider);

Is this simply how it is?
This would cause a context error, but...

Edited by ocome

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




×
×
  • Create New...

Important Information

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