Add BlockData to FALLING_BLOCK command constructing

This commit is contained in:
libraryaddict 2020-08-12 16:04:09 +12:00
parent f530af0ae8
commit 325e73d059

View File

@ -3,17 +3,20 @@ package me.libraryaddict.disguise.utilities.parser;
import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.comphenix.protocol.wrappers.WrappedGameProfile;
import me.libraryaddict.disguise.DisguiseConfig; import me.libraryaddict.disguise.DisguiseConfig;
import me.libraryaddict.disguise.disguisetypes.*; import me.libraryaddict.disguise.disguisetypes.*;
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
import me.libraryaddict.disguise.utilities.DisguiseUtilities; import me.libraryaddict.disguise.utilities.DisguiseUtilities;
import me.libraryaddict.disguise.utilities.modded.ModdedEntity; import me.libraryaddict.disguise.utilities.modded.ModdedEntity;
import me.libraryaddict.disguise.utilities.modded.ModdedManager; import me.libraryaddict.disguise.utilities.modded.ModdedManager;
import me.libraryaddict.disguise.utilities.params.ParamInfo; import me.libraryaddict.disguise.utilities.params.ParamInfo;
import me.libraryaddict.disguise.utilities.params.ParamInfoManager; import me.libraryaddict.disguise.utilities.params.ParamInfoManager;
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
import me.libraryaddict.disguise.utilities.translations.LibsMsg; import me.libraryaddict.disguise.utilities.translations.LibsMsg;
import me.libraryaddict.disguise.utilities.translations.TranslateType; import me.libraryaddict.disguise.utilities.translations.TranslateType;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
@ -787,21 +790,36 @@ public class DisguiseParser {
} else if (disguisePerm.isMisc()) { } else if (disguisePerm.isMisc()) {
// Its a misc, we are going to use the MiscDisguise constructor. // Its a misc, we are going to use the MiscDisguise constructor.
ItemStack itemStack = new ItemStack(Material.STONE); ItemStack itemStack = new ItemStack(Material.STONE);
// The steps I go through for 1.12..
Object blockData = null;
int miscId = -1; int miscId = -1;
if (args.length > 1) { if (args.length > 1) {
switch (disguisePerm.getType()) { switch (disguisePerm.getType()) {
case FALLING_BLOCK: case FALLING_BLOCK:
case DROPPED_ITEM: case DROPPED_ITEM:
ParamInfo info = disguisePerm.getType() == DisguiseType.FALLING_BLOCK ? ParamInfo info;
ParamInfoManager.getParamInfoItemBlock() :
ParamInfoManager.getParamInfo(ItemStack.class);
try { try {
if (disguisePerm.getType() == DisguiseType.FALLING_BLOCK) {
if (NmsVersion.v1_13.isSupported()) {
info = ParamInfoManager.getParamInfo(BlockData.class);
blockData = info
.fromString(new ArrayList<>(Collections.singletonList(args[1])));
} else {
info = ParamInfoManager.getParamInfoItemBlock();
itemStack = (ItemStack) info itemStack = (ItemStack) info
.fromString(new ArrayList<>(Collections.singletonList(args[1]))); .fromString(new ArrayList<>(Collections.singletonList(args[1])));
} }
catch (IllegalArgumentException ex) { } else {
info = ParamInfoManager.getParamInfo(ItemStack.class);
itemStack = (ItemStack) info
.fromString(new ArrayList<>(Collections.singletonList(args[1])));
}
}
catch (Exception ex) {
break; break;
} }
@ -862,6 +880,10 @@ public class DisguiseParser {
if (!customName) { if (!customName) {
name = disguise.getDisguiseName(); name = disguise.getDisguiseName();
} }
if (blockData != null && disguisePerm.getType() == DisguiseType.FALLING_BLOCK) {
((FallingBlockWatcher) disguise.getWatcher()).setBlockData((BlockData) blockData);
}
} else { } else {
disguise = new MiscDisguise(disguisePerm.getType(), miscId); disguise = new MiscDisguise(disguisePerm.getType(), miscId);
} }