package com.bergerkiller.bukkit.common.reflection.classes; import java.util.List; import com.bergerkiller.bukkit.common.conversion.ConversionPairs; import com.bergerkiller.bukkit.common.reflection.ClassTemplate; import com.bergerkiller.bukkit.common.reflection.FieldAccessor; import com.bergerkiller.bukkit.common.reflection.NMSClassTemplate; import com.bergerkiller.bukkit.common.reflection.SafeDirectField; import com.bergerkiller.bukkit.common.reflection.TranslatorFieldAccessor; import com.bergerkiller.bukkit.common.wrappers.EntityTracker; import com.bergerkiller.bukkit.common.wrappers.IntHashMap; public class WorldServerRef extends WorldRef { public static final ClassTemplate<?> TEMPLATE = NMSClassTemplate.create("WorldServer"); public static final FieldAccessor<Object> playerChunkMap = TEMPLATE.getField("manager"); public static final FieldAccessor<List<Object>> accessList = TEMPLATE.getField("u"); public static final FieldAccessor<EntityTracker> entityTracker = TEMPLATE.getField("tracker").translate(ConversionPairs.entityTracker); /** * Type: IntHashMap */ public static final TranslatorFieldAccessor<IntHashMap<Object>> entitiesById = TEMPLATE.getField("entitiesById").translate(ConversionPairs.intHashMap); public static final FieldAccessor<Object> chunkProviderServer = new SafeDirectField<Object>() { private final FieldAccessor<Object> field1 = TEMPLATE.getField("chunkProviderServer"); private final FieldAccessor<Object> field2 = TEMPLATE.getField("chunkProvider"); @Override public Object get(Object instance) { return field1.get(instance); } @Override public boolean set(Object instance, Object value) { return field1.set(instance, value) && field2.set(instance, value); } }; }