bassbone
This commit is contained in:
parent
4f122133ce
commit
779e280b87
312 changed files with 1756 additions and 1621 deletions
|
|
@ -0,0 +1,12 @@
|
|||
package love.distributedrebirth.bassboon.death;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª₮ḕ;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnCoffin {
|
||||
|
||||
BãßBȍőnCoffinGhost UNHOLY(Class<? extends BãßBȍőnꝐŕḯṿª₮ḕ<?>> familyName);
|
||||
|
||||
BãßBȍőnCoffinGhostSpell UNHOLY_SPELL(Class<? extends BãßBȍőnꝐŕḯṿª₮ḕ<?>> familyName);
|
||||
}
|
||||
|
|
@ -0,0 +1,91 @@
|
|||
package love.distributedrebirth.bassboon.death;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnCoffinGhost {
|
||||
|
||||
Object GHOST_OBJ(String key);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default <Y> Y GHOST_OBJ(String key, Class<Y> type) {
|
||||
return (Y) GHOST_OBJ(key);
|
||||
}
|
||||
|
||||
default String GHOST_STR(String key) {
|
||||
return String.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Short GHOST_SHORT(String key) {
|
||||
return Short.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Character GHOST_CHAR(String key) {
|
||||
return Character.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Integer GHOST_INT(String key) {
|
||||
return Integer.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Long GHOST_LONG(String key) {
|
||||
return Long.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Boolean GHOST_BOOL(String key) {
|
||||
return Boolean.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Float GHOST_FLOAT(String key) {
|
||||
return Float.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Double GHOST_DOUBLE(String key) {
|
||||
return Double.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default Map<String,Object> GHOST_MAP_OBJ(String key) {
|
||||
return Map.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Object GHOST_MAP_OBJ_VALUE(String key, String valueKey) {
|
||||
return GHOST_MAP_OBJ(key).get(valueKey);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default Map<String,String> GHOST_MAP_STR(String key) {
|
||||
return Map.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default String GHOST_MAP_STR_VALUE(String key, String valueKey) {
|
||||
return GHOST_MAP_STR(key).get(valueKey);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default Map<String,Integer> GHOST_MAP_INT(String key) {
|
||||
return Map.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
default Integer GHOST_MAP_INT_VALUE(String key, String valueKey) {
|
||||
return GHOST_MAP_INT(key).get(valueKey);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default List<Object> GHOST_LIST_OBJ(String key) {
|
||||
return List.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default List<String> GHOST_LIST_STR(String key) {
|
||||
return List.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
default List<Integer> GHOST_LIST_INT(String key) {
|
||||
return List.class.cast(GHOST_OBJ(key));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package love.distributedrebirth.bassboon.death;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnCoffinGhostSpell extends BãßBȍőnCoffinGhost {
|
||||
|
||||
Object PUT_GHOST(String key, Object value);
|
||||
|
||||
default void PUT_GHOST_MAP(String key) {
|
||||
PUT_GHOST(key, new HashMap<>());
|
||||
}
|
||||
|
||||
default void PUT_GHOST_LIST(String key) {
|
||||
PUT_GHOST(key, new ArrayList<>());
|
||||
}
|
||||
|
||||
static BãßBȍőnCoffinGhostSpell castᴼᶠ(BãßBȍőnCoffinGhost death) {
|
||||
return (BãßBȍőnCoffinGhostSpell) death;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
package love.distributedrebirth.bassboon.death;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnCoffinGhostSpellLock extends BãßBȍőnCoffinGhostSpell {
|
||||
|
||||
BãßBȍőnCoffinGhost LOCK();
|
||||
|
||||
static BãßBȍőnCoffinGhostSpellLock castᴼᶠ(BãßBȍőnCoffinGhost death) {
|
||||
return (BãßBȍőnCoffinGhostSpellLock) death;
|
||||
}
|
||||
|
||||
static BãßBȍőnCoffinGhostSpellLock instanceᴺᵉʷ() {
|
||||
Function<Map<String,Object>,BãßBȍőnCoffinGhost> keyMaker = v -> {
|
||||
Map<String,Object> summonedGhosts = new HashMap<>(v);
|
||||
for (String entity:v.keySet()) {
|
||||
Object spirit = summonedGhosts.get(entity);
|
||||
if (spirit instanceof List) {
|
||||
summonedGhosts.put(entity, Collections.unmodifiableList((List<?>) spirit));
|
||||
}
|
||||
if (spirit instanceof Map) {
|
||||
summonedGhosts.put(entity, Collections.unmodifiableMap((Map<?,?>) spirit));
|
||||
}
|
||||
}
|
||||
return new BãßBȍőnCoffinGhost() {
|
||||
@Override
|
||||
public Object GHOST_OBJ(String key) {
|
||||
return summonedGhosts.get(key);
|
||||
}
|
||||
};
|
||||
};
|
||||
return new BãßBȍőnCoffinGhostSpellLock() {
|
||||
private final Map<String,Object> ouijaBoard = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public BãßBȍőnCoffinGhost LOCK() {
|
||||
return keyMaker.apply(ouijaBoard);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object GHOST_OBJ(String key) {
|
||||
return ouijaBoard.get(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object PUT_GHOST(String key, Object value) {
|
||||
return ouijaBoard.put(key, value);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package love.distributedrebirth.bassboon.death.spider;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import love.distributedrebirth.bassboon.BãßBȍőnʸᴰ;
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
import love.distributedrebirth.bassboon.clazz.pirate.BãßBȍőnꝐŕḯṿª₮ḕ;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class BãßBȍőnSpider {
|
||||
|
||||
private final Map<Class<?>, BãßBȍőnSpiderSilk> spiderWeb = new HashMap<>();
|
||||
|
||||
public BãßBȍőnSpider() {
|
||||
}
|
||||
|
||||
public boolean hasEggType(Class<?> eggType) {
|
||||
return spiderWeb.containsKey(eggType);
|
||||
}
|
||||
|
||||
public BãßBȍőnSpiderSilk silkRoad(Class<?> eggType) {
|
||||
BãßBȍőnSpiderSilk silkRoad = spiderWeb.get(eggType);
|
||||
if (silkRoad == null) {
|
||||
throw new IllegalStateException("No silk road found for type: "+eggType);
|
||||
}
|
||||
return silkRoad;
|
||||
}
|
||||
|
||||
public void registrateEgg(Class<?> eggType, BãßBȍőnSpiderSilk spiderSilk) {
|
||||
if (spiderWeb.containsKey(eggType)) {
|
||||
throw new IllegalStateException("Can't registate class twice: "+eggType);
|
||||
}
|
||||
spiderWeb.put(eggType, spiderSilk);
|
||||
}
|
||||
|
||||
public void registrateEgg(Class<?> eggType, BãßBȍőnꝐŕḯṿª₮ḕ<?> pirate, Method m) {
|
||||
registrateEgg(eggType, createSenseWire(pirate, m));
|
||||
}
|
||||
|
||||
public BãßBȍőnSpiderSilk createSenseWire(BãßBȍőnꝐŕḯṿª₮ḕ<?> pirate, Method m) {
|
||||
boolean valid = false;
|
||||
Class<?>[] para = m.getParameterTypes();
|
||||
if (para.length == 0) {
|
||||
valid = true;
|
||||
}
|
||||
if (para.length == 1 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0])) {
|
||||
valid = true;
|
||||
}
|
||||
if (para.length == 2 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0]) && String.class.isAssignableFrom(para[1])) {
|
||||
valid = true;
|
||||
}
|
||||
if (para.length == 3 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0]) && String.class.isAssignableFrom(para[1]) && String.class.isAssignableFrom(para[2])) {
|
||||
valid = true;
|
||||
}
|
||||
if (!valid) {
|
||||
throw new IllegalStateException("Unknown method parameters on: "+m.getDeclaringClass().getSimpleName()+"."+m.toGenericString());
|
||||
}
|
||||
return new BãßBȍőnSpiderSilk() {
|
||||
|
||||
@Override
|
||||
public Object senseWire(BãßBȍőnʸᴰ<?> boon, String name, String description) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException {
|
||||
Class<?>[] para = m.getParameterTypes();
|
||||
if (para.length == 0) {
|
||||
return m.invoke(pirate);
|
||||
}
|
||||
if (para.length == 1 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0])) {
|
||||
return m.invoke(pirate, boon);
|
||||
}
|
||||
if (para.length == 2 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0]) && String.class.isAssignableFrom(para[1])) {
|
||||
return m.invoke(pirate, boon, name);
|
||||
}
|
||||
if (para.length == 3 && BãßBȍőnʸᴰ.class.isAssignableFrom(para[0]) && String.class.isAssignableFrom(para[1]) && String.class.isAssignableFrom(para[2])) {
|
||||
return m.invoke(pirate, boon, name, description);
|
||||
}
|
||||
throw new IllegalStateException("Unknown method parameters on: "+m.getDeclaringClass().getSimpleName()+"."+m.toGenericString());
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
package love.distributedrebirth.bassboon.death.spider;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.METHOD})
|
||||
public @interface BãßBȍőnSpiderEgg注 {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
package love.distributedrebirth.bassboon.death.spider;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import love.distributedrebirth.bassboon.BãßBȍőnʸᴰ;
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface BãßBȍőnSpiderSilk {
|
||||
|
||||
Object senseWire(BãßBȍőnʸᴰ<?> boon, String name, String description) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException;
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package love.distributedrebirth.bassboon.death.spider;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import love.distributedrebirth.bassboon.clazz.BãßBȍőnAuthor注;
|
||||
|
||||
@BãßBȍőnAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target({ElementType.FIELD})
|
||||
public @interface BãßBȍőnSpiderWire注 {
|
||||
|
||||
String name() default "";
|
||||
|
||||
String description() default "";
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue