This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

53 lines
1.6 KiB
C++

#pragma once
#include "c_entity.h"
#include "c_javaset.h"
#include "c_minecraft.h"
class c_world {
public:
c_world() {}
c_world(jobject javaclass) { java_class = javaclass; }
int get_entities() {
c_javaset* set = new c_javaset;
jfieldID ent_list = minecraft->m_jenv->GetFieldID(
minecraft->m_jenv->GetObjectClass(java_class), "c",
"Ljava/util/Set;");
return set->size(
minecraft->m_jenv->GetObjectField(java_class, ent_list));
}
// this is done incorrectly
// http://www.minecraftforge.net/forum/topic/5782-getting-a-world-object-and-player-list/
int get_player_entities() {
c_javaset* set = new c_javaset;
jfieldID ent_list = minecraft->m_jenv->GetFieldID(
minecraft->m_jenv->GetObjectClass(java_class), "j",
"Ljava/util/Set;");
return set->size(
minecraft->m_jenv->GetObjectField(java_class, ent_list));
}
c_entity* get_entity(int i) {
c_javaset* set = new c_javaset;
jfieldID ent_list = minecraft->m_jenv->GetFieldID(
minecraft->m_jenv->GetObjectClass(java_class), "c",
"Ljava/util/Set;");
return new c_entity(set->get(
minecraft->m_jenv->GetObjectField(java_class, ent_list), i));
}
void set_time(jobject java_class, jlong time) {
jmethodID set_time = minecraft->m_jenv->GetMethodID(
minecraft->m_jenv->GetObjectClass(java_class), "b", "(J)V");
minecraft->m_jenv->CallLongMethod(java_class, set_time, time);
}
bool is_valid() { return java_class; }
private:
jobject java_class;
};
extern c_world* world;