mirror of
https://github.com/libraryaddict/LibsDisguises.git
synced 2024-12-14 15:26:54 +01:00
Automagically copy and delete premium jars in the LibsDisguises folder
This commit is contained in:
parent
8b39450490
commit
e8ba0a2adc
@ -0,0 +1,149 @@
|
||||
package me.libraryaddict.disguise.disguisetypes;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.CustomWatcher;
|
||||
import me.libraryaddict.disguise.utilities.modded.CustomEntity;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 15/04/2020.
|
||||
*/
|
||||
public class CustomDisguise extends TargetedDisguise {
|
||||
@Getter
|
||||
private CustomEntity customEntity;
|
||||
|
||||
public CustomDisguise(CustomEntity customEntity) {
|
||||
super(customEntity.isLiving() ? DisguiseType.CUSTOM_LIVING : DisguiseType.CUSTOM_MISC);
|
||||
|
||||
this.customEntity = customEntity;
|
||||
createDisguise();
|
||||
}
|
||||
|
||||
public CustomDisguise(DisguiseType disguiseType) {
|
||||
super(disguiseType);
|
||||
|
||||
if (disguiseType != DisguiseType.UNKNOWN) {
|
||||
throw new InvalidParameterException(
|
||||
"CustomDisguise is only for DisguiseType.CUSTOM and DisguiseType.UNKNOWN");
|
||||
}
|
||||
|
||||
createDisguise();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCustomDisguise() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMobDisguise() {
|
||||
return getCustomEntity().isLiving();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMiscDisguise() {
|
||||
return !getCustomEntity().isLiving();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise addPlayer(Player player) {
|
||||
return (CustomDisguise) super.addPlayer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise addPlayer(String playername) {
|
||||
return (CustomDisguise) super.addPlayer(playername);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise clone() {
|
||||
CustomDisguise disguise = new CustomDisguise(getCustomEntity());
|
||||
|
||||
clone(disguise);
|
||||
|
||||
return disguise;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomWatcher getWatcher() {
|
||||
return (CustomWatcher) super.getWatcher();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setWatcher(FlagWatcher newWatcher) {
|
||||
return (CustomDisguise) super.setWatcher(newWatcher);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise removePlayer(Player player) {
|
||||
return (CustomDisguise) super.removePlayer(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise removePlayer(String playername) {
|
||||
return (CustomDisguise) super.removePlayer(playername);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setDisguiseTarget(TargetType newTargetType) {
|
||||
return (CustomDisguise) super.setDisguiseTarget(newTargetType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setEntity(Entity entity) {
|
||||
return (CustomDisguise) super.setEntity(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setHearSelfDisguise(boolean hearSelfDisguise) {
|
||||
return (CustomDisguise) super.setHearSelfDisguise(hearSelfDisguise);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setHideArmorFromSelf(boolean hideArmor) {
|
||||
return (CustomDisguise) super.setHideArmorFromSelf(hideArmor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setHideHeldItemFromSelf(boolean hideHeldItem) {
|
||||
return (CustomDisguise) super.setHideHeldItemFromSelf(hideHeldItem);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setKeepDisguiseOnPlayerDeath(boolean keepDisguise) {
|
||||
return (CustomDisguise) super.setKeepDisguiseOnPlayerDeath(keepDisguise);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setModifyBoundingBox(boolean modifyBox) {
|
||||
return (CustomDisguise) super.setModifyBoundingBox(modifyBox);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setReplaceSounds(boolean areSoundsReplaced) {
|
||||
return (CustomDisguise) super.setReplaceSounds(areSoundsReplaced);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setVelocitySent(boolean sendVelocity) {
|
||||
return (CustomDisguise) super.setVelocitySent(sendVelocity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise setViewSelfDisguise(boolean viewSelfDisguise) {
|
||||
return (CustomDisguise) super.setViewSelfDisguise(viewSelfDisguise);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise silentlyAddPlayer(String playername) {
|
||||
return (CustomDisguise) super.silentlyAddPlayer(playername);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CustomDisguise silentlyRemovePlayer(String playername) {
|
||||
return (CustomDisguise) super.silentlyRemovePlayer(playername);
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import me.libraryaddict.disguise.utilities.plugin.PluginInformation;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.util.FileUtil;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
@ -312,6 +313,53 @@ public class LibsPremium {
|
||||
doSecondaryCheck(version);
|
||||
} else {
|
||||
DisguiseUtilities.getLogger().info("Registered to: " + getSanitizedUser(getUserID()));
|
||||
|
||||
boolean foundBetter = false;
|
||||
|
||||
// Lets not do any sanity checks since it won't affect legit users
|
||||
for (File f : LibsDisguises.getInstance().getDataFolder().listFiles()) {
|
||||
if (f.isDirectory() || !f.getName().endsWith(".jar")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
try {
|
||||
PluginInformation info = getInformation(f);
|
||||
|
||||
if (info.getBuildNumber() == null || !info.getBuildNumber().matches("[0-9]+")) {
|
||||
f.delete();
|
||||
DisguiseUtilities.getLogger().info("Ew, I don't recognize " + f.getName());
|
||||
continue;
|
||||
} else if (Integer.parseInt(info.getBuildNumber()) <
|
||||
Integer.parseInt(LibsDisguises.getInstance().getBuildNo())) {
|
||||
f.delete();
|
||||
DisguiseUtilities.getLogger().info("Ew, " + f.getName() + " is so old");
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!info.isLegit()) {
|
||||
f.delete();
|
||||
DisguiseUtilities.getLogger().info("Ew, I saw something nasty in " + f.getName());
|
||||
continue;
|
||||
}
|
||||
|
||||
foundBetter = true;
|
||||
break;
|
||||
}
|
||||
catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundBetter) {
|
||||
File f = new File(
|
||||
LibsDisguises.getInstance().getClass().getProtectionDomain().getCodeSource().getLocation()
|
||||
.getFile());
|
||||
|
||||
FileUtil.copy(f, new File(LibsDisguises.getInstance().getDataFolder(), f.getName()));
|
||||
|
||||
DisguiseUtilities.getLogger().info("Copied " + f.getName() +
|
||||
" to the plugin folder! This is incase you want to use dev builds.");
|
||||
}
|
||||
}
|
||||
|
||||
if (isPremium()) {
|
||||
|
@ -0,0 +1,22 @@
|
||||
package me.libraryaddict.disguise.utilities.modded;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 14/04/2020.
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public class CustomEntity {
|
||||
@Setter
|
||||
private Object entityType;
|
||||
private final String name;
|
||||
private final boolean living;
|
||||
private final String mod;
|
||||
private final String[] versions;
|
||||
private final String required;
|
||||
@Setter
|
||||
private int typeId;
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package me.libraryaddict.disguise.utilities.modded;
|
||||
|
||||
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
|
||||
import me.libraryaddict.disguise.utilities.parser.DisguisePerm;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.NamespacedKey;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 14/04/2020.
|
||||
*/
|
||||
public class ModdedManager {
|
||||
private static final HashMap<NamespacedKey, CustomEntity> entities = new HashMap<>();
|
||||
|
||||
public static void registerCustomEntity(NamespacedKey name, CustomEntity entity, boolean register) {
|
||||
if (entities.keySet().stream().anyMatch(n -> n.toString().equalsIgnoreCase(name.toString()))) {
|
||||
throw new IllegalArgumentException(name + " has already been registered");
|
||||
}
|
||||
|
||||
if (entities.values().stream().anyMatch(n -> n.getName().equalsIgnoreCase(entity.getName()))) {
|
||||
throw new IllegalArgumentException("Modded entity " + entity.getName() + " has already been registered");
|
||||
}
|
||||
|
||||
if (register) {
|
||||
Object entityType = ReflectionManager.registerEntityType(name);
|
||||
int entityId = ReflectionManager.getEntityTypeId(entityType);
|
||||
|
||||
entity.setTypeId(entityId);
|
||||
entity.setEntityType(entityType);
|
||||
} else {
|
||||
Object entityType = ReflectionManager.getEntityType(name);
|
||||
int entityId = ReflectionManager.getEntityTypeId(entityType);
|
||||
|
||||
entity.setTypeId(entityId);
|
||||
entity.setEntityType(entityType);
|
||||
}
|
||||
|
||||
entities.put(name, entity);
|
||||
}
|
||||
|
||||
public static CustomEntity getCustomEntity(NamespacedKey name) {
|
||||
return entities.get(name);
|
||||
}
|
||||
|
||||
public static CustomEntity getCustomEntity(String name) {
|
||||
for (CustomEntity entity : entities.values()) {
|
||||
if (!entity.getName().equalsIgnoreCase(name)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
return entity;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ArrayList<DisguisePerm> getDisguiseTypes() {
|
||||
ArrayList<DisguisePerm> perms = new ArrayList<>();
|
||||
|
||||
for (Map.Entry<NamespacedKey, CustomEntity> entry : entities.entrySet()) {
|
||||
perms.add(new DisguisePerm(
|
||||
entry.getValue().isLiving() ? DisguiseType.CUSTOM_LIVING : DisguiseType.CUSTOM_MISC,
|
||||
entry.getValue().getName()));
|
||||
}
|
||||
|
||||
return perms;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user