Repository navigation
Expand file tree
/
Copy pathPlayerCapabilities.cpp
More file actions
79 lines (58 loc) · 2.41 KB
/
Copy pathPlayerCapabilities.cpp
File metadata and controls
79 lines (58 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "PlayerCapabilities.h"
#include "Entity.h"
jclass playerCapabilitiesClass = NULL;
jmethodID playerCapabilitiesConstructorMethod = nullptr;
jfieldID capabilitiesField = nullptr;
jfieldID isFlyingField = nullptr;
jfieldID allowFlyingField = nullptr;
jclass CPlayerCapabilities::getClass()
{ // net/minecraft/entity/player/PlayerCapabilities
if (playerCapabilitiesClass == NULL)
playerCapabilitiesClass = ct.env->FindClass("wl");
return playerCapabilitiesClass;
}
jobject CPlayerCapabilities::getInstance()
{ // mc.thePlayer.capabilities
if (capabilitiesField == nullptr)
capabilitiesField = ct.env->GetFieldID(CEntityPlayer::getEntityPlayerClass(),"bA","Lwl;");
jobject obj = ct.env->GetObjectField(CEntityPlayer::getEntityPlayerSPInstance(),
capabilitiesField);
return obj;
}
jobject CPlayerCapabilities::newFlyingInstance(bool flying, bool allowFlying)
{
if (playerCapabilitiesConstructorMethod == nullptr)
playerCapabilitiesConstructorMethod = ct.env->GetMethodID(getClass(), "<init>", "()V");
if (isFlyingField == nullptr)
isFlyingField = ct.env->GetFieldID(getClass(), "b", "Z");
if (allowFlyingField == nullptr)
allowFlyingField = ct.env->GetFieldID(getClass(), "c", "Z");
jobject obj = ct.env->NewObject(getClass(), playerCapabilitiesConstructorMethod);
ct.env->SetBooleanField(obj, isFlyingField, (jboolean)flying);
ct.env->SetBooleanField(obj, allowFlyingField, (jboolean)allowFlying);
return obj;
}
void CPlayerCapabilities::setFlying(jobject instance,bool flying)
{
if(isFlyingField == nullptr)
isFlyingField = ct.env->GetFieldID(getClass(),"b","Z");
ct.env->SetBooleanField(instance, isFlyingField, (jboolean)flying);
}
void CPlayerCapabilities::setAllowFlying(jobject instance,bool allowFlying)
{
if(allowFlyingField == nullptr)
allowFlyingField = ct.env->GetFieldID(getClass(),"c","Z");
ct.env->SetBooleanField(instance, allowFlyingField, (jboolean)allowFlying);
}
bool CPlayerCapabilities::isFlying()
{
if (isFlyingField == nullptr)
isFlyingField = ct.env->GetFieldID(getClass(), "b", "Z");
return ct.env->GetBooleanField(getInstance(),isFlyingField);
}
bool CPlayerCapabilities::isAllowFlying()
{
if (allowFlyingField == nullptr)
allowFlyingField = ct.env->GetFieldID(getClass(), "c", "Z");
return ct.env->GetBooleanField(getInstance(), allowFlyingField);
}