Skip to content

Commit

Permalink
[WIP] Even more modulization
Browse files Browse the repository at this point in the history
Packets and custom entities are now in the module!
THIS WILL BE FUN TO UPDATE!
Also, item scripts are pure NBT now! No more 'hidden lore' whatsoever!
Hurray!
  • Loading branch information
Morphan1 committed Sep 20, 2016
1 parent 30b10dc commit f88e37e
Show file tree
Hide file tree
Showing 53 changed files with 955 additions and 898 deletions.
Expand Up @@ -4,6 +4,7 @@
import net.aufdemrand.denizen.nms.abstracts.ProfileEditor;
import net.aufdemrand.denizen.nms.abstracts.Sidebar;
import net.aufdemrand.denizen.nms.interfaces.*;
import net.aufdemrand.denizen.nms.interfaces.packets.PacketHandler;
import net.aufdemrand.denizen.nms.util.PlayerProfile;
import org.bukkit.block.Biome;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -71,6 +72,8 @@ public static NMSVersion getVersion() {

public abstract ChunkHelper getChunkHelper();

public abstract CustomEntityHelper getCustomEntityHelper();

public abstract EntityHelper getEntityHelper();

public abstract FishingHelper getFishingHelper();
Expand All @@ -82,4 +85,6 @@ public static NMSVersion getVersion() {
public abstract PlayerHelper getPlayerHelper();

public abstract WorldHelper getWorldHelper();

public abstract void enablePacketInterception(PacketHandler packetHandler);
}
@@ -0,0 +1,8 @@
package net.aufdemrand.denizen.nms.enums;

public enum CustomEntityType {

FAKE_ARROW,
FAKE_PLAYER,
ITEM_PROJECTILE
}
@@ -0,0 +1,8 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Entity;

public interface CustomEntity extends Entity {

String getEntityTypeName();
}
@@ -0,0 +1,13 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;

public interface CustomEntityHelper {

FakeArrow spawnFakeArrow(Location location);

ItemProjectile spawnItemProjectile(Location location, ItemStack itemStack);

FakePlayer spawnFakePlayer(Location location, String name, String skin);
}
@@ -0,0 +1,7 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Arrow;
import org.bukkit.entity.Vehicle;

public interface FakeArrow extends CustomEntity, Arrow, Vehicle {
}
@@ -0,0 +1,8 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Player;

public interface FakePlayer extends CustomEntity, Player {

String getFullName();
}
Expand Up @@ -10,4 +10,8 @@ public interface ItemHelper {
PlayerProfile getSkullSkin(ItemStack itemStack);

ItemStack setSkullSkin(ItemStack itemStack, PlayerProfile playerProfile);

ItemStack addNbtData(ItemStack itemStack, String key, String value);

String getNbtData(ItemStack itemStack, String key);
}
@@ -0,0 +1,7 @@
package net.aufdemrand.denizen.nms.interfaces;

import org.bukkit.entity.Item;
import org.bukkit.entity.Projectile;

public interface ItemProjectile extends CustomEntity, Item, Projectile {
}
@@ -0,0 +1,16 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

import org.bukkit.entity.Player;

public interface PacketHandler {

void receivePacket(Player player, PacketInResourcePackStatus resourcePackStatus);

boolean receivePacket(Player player, PacketInSteerVehicle steerVehicle);

boolean sendPacket(Player player, PacketOutChat chat);

boolean sendPacket(Player player, PacketOutSpawnEntity spawnEntity);

boolean sendPacket(Player player, PacketOutEntityMetadata entityMetadata);
}
@@ -0,0 +1,6 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

public interface PacketInResourcePackStatus {

String getStatus();
}
@@ -0,0 +1,12 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

public interface PacketInSteerVehicle {

float getLeftwardInput();

float getForwardInput();

boolean getJumpInput();

boolean getDismountInput();
}
@@ -0,0 +1,16 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

public interface PacketOutChat {

int getPosition();

String getMessage();

String getRawJson();

void setPosition(int position);

void setMessage(String message);

void setRawJson(String rawJson);
}
@@ -0,0 +1,8 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

public interface PacketOutEntityMetadata {

int getEntityId();

boolean checkForGlow();
}
@@ -0,0 +1,10 @@
package net.aufdemrand.denizen.nms.interfaces.packets;

import java.util.UUID;

public interface PacketOutSpawnEntity {

int getEntityId();

UUID getEntityUuid();
}
@@ -1,6 +1,5 @@
package net.aufdemrand.denizen.utilities;
package net.aufdemrand.denizen.nms.util;

import net.aufdemrand.denizen.utilities.debugging.dB;
import sun.misc.Unsafe;

import java.lang.reflect.Field;
Expand All @@ -18,7 +17,7 @@ public class DenizenAtomicIntegerFieldUpdater<T> extends AtomicIntegerFieldUpdat
theUnsafe = (Unsafe) field.get(null);
}
catch (Exception e) {
dB.echoError(e);
e.printStackTrace();
}
unsafe = theUnsafe;
}
Expand Down
6 changes: 6 additions & 0 deletions plugin/pom.xml
Expand Up @@ -145,6 +145,12 @@
<include>**</include>
</includes>
</filter>
<filter>
<artifact>net.aufdemrand:denizen-nmshandler</artifact>
<includes>
<include>**</include>
</includes>
</filter>
</filters>
</configuration>
</execution>
Expand Down
16 changes: 2 additions & 14 deletions plugin/src/main/java/net/aufdemrand/denizen/Denizen.java
Expand Up @@ -48,12 +48,8 @@
import net.aufdemrand.denizen.utilities.debugging.StatsRecord;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizen.utilities.depends.Depends;
import net.aufdemrand.denizen.utilities.entity.CraftFakeArrow;
import net.aufdemrand.denizen.utilities.entity.CraftFakePlayer;
import net.aufdemrand.denizen.utilities.entity.CraftItemProjectile;
import net.aufdemrand.denizen.utilities.entity.DenizenEntityType;
import net.aufdemrand.denizen.utilities.maps.DenizenMapManager;
import net.aufdemrand.denizen.utilities.packets.intercept.DenizenPacketListener;
import net.aufdemrand.denizen.utilities.packets.DenizenPacketHandler;
import net.aufdemrand.denizencore.DenizenCore;
import net.aufdemrand.denizencore.DenizenImplementation;
import net.aufdemrand.denizencore.events.OldEventManager;
Expand Down Expand Up @@ -435,13 +431,6 @@ public void onEnable() {
Depends.citizens.registerCommandClass(NPCCommandHandler.class);
}

// Register DenizenEntityTypes
DenizenEntityType.registerEntityType("ITEM_PROJECTILE", CraftItemProjectile.class);
DenizenEntityType.registerEntityType("FAKE_ARROW", CraftFakeArrow.class);
if (Settings.packetInterception()) {
DenizenEntityType.registerEntityType("FAKE_PLAYER", CraftFakePlayer.class);
}

// Track all player names for quick dPlayer matching
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
dPlayer.notePlayer(player);
Expand Down Expand Up @@ -865,8 +854,7 @@ public void onEnable() {
}

if (Settings.packetInterception()) {
// Enable custom inbound packet listener
DenizenPacketListener.enable();
NMSHandler.getInstance().enablePacketInterception(new DenizenPacketHandler());
}

// Run everything else on the first server tick
Expand Down
@@ -1,8 +1,9 @@
package net.aufdemrand.denizen.npc.traits;

import net.aufdemrand.denizen.nms.interfaces.FakeArrow;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.Utilities;
import net.aufdemrand.denizen.utilities.entity.CraftFakeArrow;
import net.aufdemrand.denizen.utilities.entity.DenizenEntityType;
import net.aufdemrand.denizencore.objects.Mechanism;
import net.citizensnpcs.api.persistence.Persist;
import net.citizensnpcs.api.trait.Trait;
Expand Down Expand Up @@ -81,7 +82,8 @@ public void sit() {
}

private void sitInternal() {
CraftFakeArrow.createArrow(npc.getEntity().getLocation(), new ArrayList<Mechanism>()).setPassenger(npc.getEntity());
DenizenEntityType.getByName("FAKE_ARROW").spawnNewEntity(npc.getEntity().getLocation(),
new ArrayList<Mechanism>()).setPassenger(npc.getEntity());
//PlayerAnimation.SIT.play((Player)npc.getEntity());
//eh.getDataWatcher().watch(0, (byte) 0x04);
sitting = true;
Expand Down Expand Up @@ -183,7 +185,7 @@ public void onBlockBreak(BlockBreakEvent event) {
@EventHandler
public void arrowDismount(final VehicleExitEvent event) {
// TODO: Move elsewhere so not multi-firing?
if (event.getVehicle() instanceof CraftFakeArrow) {
if (event.getVehicle() instanceof FakeArrow) {
Bukkit.getScheduler().runTaskLater(DenizenAPI.getCurrentInstance(), new Runnable() {
@Override
public void run() {
Expand Down
Expand Up @@ -2,6 +2,7 @@

import net.aufdemrand.denizen.flags.FlagManager;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.interfaces.FakePlayer;
import net.aufdemrand.denizen.objects.properties.entity.EntityAge;
import net.aufdemrand.denizen.objects.properties.entity.EntityColor;
import net.aufdemrand.denizen.objects.properties.entity.EntityTame;
Expand All @@ -10,7 +11,6 @@
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizen.utilities.depends.Depends;
import net.aufdemrand.denizen.utilities.entity.CraftFakePlayer;
import net.aufdemrand.denizen.utilities.entity.DenizenEntityType;
import net.aufdemrand.denizen.utilities.entity.Rotation;
import net.aufdemrand.denizen.utilities.nbt.CustomNBT;
Expand Down Expand Up @@ -698,11 +698,11 @@ public String getName() {
if (isCitizensNPC()) {
return getDenizenNPC().getCitizen().getName();
}
if (entity instanceof CraftFakePlayer) {
return ((CraftFakePlayer) entity).getFullName();
if (entity instanceof FakePlayer) {
return ((FakePlayer) entity).getFullName();
}
if (entity instanceof Player) {
return ((Player) entity).getName();
return entity.getName();
}
String customName = entity.getCustomName();
if (customName != null) {
Expand Down
11 changes: 5 additions & 6 deletions plugin/src/main/java/net/aufdemrand/denizen/objects/dPlayer.java
Expand Up @@ -10,7 +10,6 @@
import net.aufdemrand.denizen.tags.core.PlayerTags;
import net.aufdemrand.denizen.utilities.BossBarManager;
import net.aufdemrand.denizen.utilities.DenizenAPI;
import net.aufdemrand.denizen.utilities.PlayerProfileEditor;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizen.utilities.depends.Depends;
import net.aufdemrand.denizen.utilities.entity.HideEntity;
Expand Down Expand Up @@ -1595,7 +1594,7 @@ else if (isOnline()) {
// @mechanism dPlayer.skin_blob
// -->
if (attribute.startsWith("skin_blob")) {
return new Element(PlayerProfileEditor.getPlayerSkinBlob(getPlayerEntity()))
return new Element(NMSHandler.getInstance().getProfileEditor().getPlayerSkinBlob(getPlayerEntity()))
.getAttribute(attribute.fulfill(1));
}

Expand Down Expand Up @@ -1694,7 +1693,7 @@ else if (isOnline()) {
// Returns the displayed text in the nameplate of the player.
// -->
if (attribute.startsWith("nameplate")) {
return new Element(PlayerProfileEditor.getPlayerName(getPlayerEntity()))
return new Element(NMSHandler.getInstance().getProfileEditor().getPlayerName(getPlayerEntity()))
.getAttribute(attribute.fulfill(1));
}

Expand Down Expand Up @@ -2934,7 +2933,7 @@ else if (split.length > 1) {
dB.echoError("Must specify a name with no more than 16 characters.");
}
else {
PlayerProfileEditor.setPlayerName(getPlayerEntity(), value.asString());
NMSHandler.getInstance().getProfileEditor().setPlayerName(getPlayerEntity(), value.asString());
}
}

Expand All @@ -2952,7 +2951,7 @@ else if (split.length > 1) {
dB.echoError("Must specify a name with no more than 16 characters.");
}
else {
PlayerProfileEditor.setPlayerSkin(getPlayerEntity(), value.asString());
NMSHandler.getInstance().getProfileEditor().setPlayerSkin(getPlayerEntity(), value.asString());
}
}

Expand All @@ -2964,7 +2963,7 @@ else if (split.length > 1) {
// Changes the skin of the player to the specified blob.
// -->
if (mechanism.matches("skin_blob")) {
PlayerProfileEditor.setPlayerSkinBlob(getPlayerEntity(), value.asString());
NMSHandler.getInstance().getProfileEditor().setPlayerSkinBlob(getPlayerEntity(), value.asString());
}

// <--[mechanism]
Expand Down
@@ -1,5 +1,7 @@
package net.aufdemrand.denizen.scripts.containers.core;

import net.aufdemrand.denizen.Settings;
import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.objects.dItem;
import net.aufdemrand.denizen.objects.dNPC;
import net.aufdemrand.denizen.objects.dPlayer;
Expand All @@ -11,9 +13,7 @@
import net.aufdemrand.denizencore.scripts.containers.ScriptContainer;
import net.aufdemrand.denizencore.tags.TagManager;
import net.aufdemrand.denizencore.utilities.YamlConfiguration;
import org.bukkit.Bukkit;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.FurnaceRecipe;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
Expand Down Expand Up @@ -171,11 +171,17 @@ public dItem getItemFrom(dPlayer player, dNPC npc) {

// Set Id of the first, invisible lore
boolean hideLore = false;
boolean pureNbtId = false;
if (contains("NO_ID")) {
hideLore = Boolean.valueOf(getString("NO_ID"));
}
if (!hideLore) {
lore.add(0, hash);
if (!Settings.packetInterception()) {
lore.add(0, hash);
}
else {
pureNbtId = true;
}
}

// Set Display Name
Expand Down Expand Up @@ -247,6 +253,9 @@ public dItem getItemFrom(dPlayer player, dNPC npc) {
stack = book.writeBookTo(stack, player, npc);
}

if (pureNbtId) {
stack.setItemStack(NMSHandler.getInstance().getItemHelper().addNbtData(stack.getItemStack(), "Denizen Item Script", hash));
}
}
catch (Exception e) {
dB.echoError("Woah! An exception has been called with this item script!");
Expand Down

0 comments on commit f88e37e

Please sign in to comment.