Jump to content

Recommended Posts

Posted
  On 2/2/2022 at 12:59 AM, 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

Expand  

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

  On 2/2/2022 at 12:59 AM, ocome said:
ManaData statsa1s = MyCapabilityImplementation.getManaData();
Expand  

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

  On 2/2/2022 at 6:21 AM, ocome said:
final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity();
Expand  

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

  On 2/2/2022 at 6:21 AM, ocome said:
new MyCapabilityImplementation().tick(eventObject);
Expand  

what on earth is that?

Posted
  On 2/2/2022 at 7:29 AM, 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

Expand  
        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.

 

  On 2/2/2022 at 7:29 AM, 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

Expand  
        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
  On 2/3/2022 at 1:00 AM, ocome said:

implemented. No errors are seen.

Expand  

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

  On 2/3/2022 at 1:00 AM, ocome said:

Is this what it means to create in the player?

Expand  

yeah

  On 2/3/2022 at 1:00 AM, 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

Expand  

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

Posted (edited)
  On 2/3/2022 at 5:30 AM, Luis_ST said:

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

Expand  

MyCapabilityAttacher

            Player eventObject = (Player) event.getObject();
            final MyCapabilityProviderEntity provider = new MyCapabilityProviderEntity(eventObject);
            event.addCapability(MyCapabilityProviderEntity.IDENTIFIER, provider);
        public MyCapabilityProviderEntity(Player eventObject) {
            new MyCapabilityImplementation(eventObject);
        }
  On 2/3/2022 at 5:30 AM, Luis_ST said:

and then to store the Object in Field 

Expand  

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)
  On 2/3/2022 at 7:30 PM, Luis_ST said:

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

Expand  
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

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

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 2: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

Expand  
    @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
  On 2/7/2022 at 5:53 AM, ocome said:
MinecraftForge.EVENT_BUS.post(new TickEvent.PlayerTickEvent(TickEvent.Phase.START, player));
Expand  

why on earth are you doing this?

 

  On 2/7/2022 at 5:53 AM, ocome said:
Minecraft minecraft = Minecraft.getInstance();
Expand  

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

Posted (edited)
  On 2/7/2022 at 6:28 AM, ocome said:

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

Expand  

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

  On 2/7/2022 at 6:28 AM, ocome said:

Okay, I'll think about it some more.

Expand  

please answer my question

Edited by Luis_ST
Posted
  On 2/7/2022 at 7:46 AM, ocome said:

I thought I needed to call capability

Expand  

yeah but use the Player from the Event

  On 2/7/2022 at 5:53 AM, ocome said:
public void onPlayerPreTick(final AttachCapabilitiesEvent<Entity> event)
Expand  

you need to use there TickEvent.Player and not AttachCapabilitiesEvent

  On 2/7/2022 at 5:53 AM, ocome said:
myCapabilityInterface.tick();
Expand  

what does this method do?

Posted
  On 2/7/2022 at 7:53 AM, Luis_ST said:

yeah but use the Player from the Event

Expand  

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 :(

 

  On 2/7/2022 at 7:53 AM, Luis_ST said:

you need to use there TickEvent.Player and not AttachCapabilitiesEvent

Expand  

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?

 

  On 2/7/2022 at 7:53 AM, Luis_ST said:

what does this method do?

Expand  

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)
  On 2/7/2022 at 11:59 AM, Luis_ST said:

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

Expand  
    @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
  On 2/8/2022 at 9:27 AM, diesieben07 said:

What error?

Expand  
---- 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: 
		minecraft@1.0
		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.