Skip to content

Commit

Permalink
Add support for Minecraft 1.21.3
Browse files Browse the repository at this point in the history
  • Loading branch information
PseudoKnight committed Nov 9, 2024
1 parent 2de6573 commit 62e47f3
Show file tree
Hide file tree
Showing 41 changed files with 723 additions and 348 deletions.
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -178,12 +178,12 @@
<!-- GPL -->
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.21-R0.1-SNAPSHOT</version>
<version>1.21.2-R0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21-R0.1-SNAPSHOT</version>
<version>1.21.1-R0.1-SNAPSHOT</version>
</dependency>

<!-- Used for storing and retreiving Constructs in a storage transparent medium: JSONs -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,10 @@ public DynamicEnum(Abstracted abstracted, Concrete concrete) {

public abstract String name();

/**
* Override me in API
*
* @return
*/
public Abstracted getAbstracted() {
return abstracted;
}

/**
* Override me in Implementation if needed
*
* @return
*/
public Concrete getConcrete() {
return concrete;
}
Expand Down
76 changes: 76 additions & 0 deletions src/main/java/com/laytonsmith/abstraction/MCParticleData.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.laytonsmith.abstraction;

public class MCParticleData {

public static class DustTransition {
MCColor from;
MCColor to;

public DustTransition(MCColor from, MCColor to) {
this.from = from;
this.to = to;
}

public MCColor from() {
return this.from;
}

public MCColor to() {
return this.to;
}
}

public static class TargetColor {
MCLocation location;
MCColor color;

public TargetColor(MCLocation location, MCColor color) {
this.location = location;
this.color = color;
}

public MCLocation location() {
return this.location;
}

public MCColor color() {
return this.color;
}
}

public static class VibrationBlockDestination {
MCLocation location;
int arrivalTime;

public VibrationBlockDestination(MCLocation location, int arrivalTime) {
this.location = location;
this.arrivalTime = arrivalTime;
}

public MCLocation location() {
return this.location;
}

public int arrivalTime() {
return this.arrivalTime;
}
}

public static class VibrationEntityDestination {
MCEntity entity;
int arrivalTime;

public VibrationEntityDestination(MCEntity entity, int arrivalTime) {
this.entity = entity;
this.arrivalTime = arrivalTime;
}

public MCEntity entity() {
return this.entity;
}

public int arrivalTime() {
return this.arrivalTime;
}
}
}
51 changes: 50 additions & 1 deletion src/main/java/com/laytonsmith/abstraction/blocks/MCMaterial.java
Original file line number Diff line number Diff line change
Expand Up @@ -1672,7 +1672,56 @@ public enum MCVanillaMaterial {
// 1.21 additions
MUSIC_DISC_CREATOR(MCVersion.MC1_21),
MUSIC_DISC_CREATOR_MUSIC_BOX(MCVersion.MC1_21),
MUSIC_DISC_PRECIPICE(MCVersion.MC1_21);
MUSIC_DISC_PRECIPICE(MCVersion.MC1_21),

// 1.21.2 additions
BLACK_BUNDLE(MCVersion.MC1_21_3),
BLUE_BUNDLE(MCVersion.MC1_21_3),
BROWN_BUNDLE(MCVersion.MC1_21_3),
CYAN_BUNDLE(MCVersion.MC1_21_3),
GRAY_BUNDLE(MCVersion.MC1_21_3),
GREEN_BUNDLE(MCVersion.MC1_21_3),
LIGHT_BLUE_BUNDLE(MCVersion.MC1_21_3),
LIGHT_GRAY_BUNDLE(MCVersion.MC1_21_3),
LIME_BUNDLE(MCVersion.MC1_21_3),
MAGENTA_BUNDLE(MCVersion.MC1_21_3),
ORANGE_BUNDLE(MCVersion.MC1_21_3),
PINK_BUNDLE(MCVersion.MC1_21_3),
PURPLE_BUNDLE(MCVersion.MC1_21_3),
RED_BUNDLE(MCVersion.MC1_21_3),
WHITE_BUNDLE(MCVersion.MC1_21_3),
YELLOW_BUNDLE(MCVersion.MC1_21_3),
BORDURE_INDENTED_BANNER_PATTERN(MCVersion.MC1_21_3),
FIELD_MASONED_BANNER_PATTERN(MCVersion.MC1_21_3),

// 1.21.2 experimental additions
CREAKING_HEART(MCVersion.MC1_21_3),
CREAKING_SPAWN_EGG(MCVersion.MC1_21_3),
PALE_HANGING_MOSS(MCVersion.MC1_21_3),
PALE_MOSS_BLOCK(MCVersion.MC1_21_3),
PALE_MOSS_CARPET(MCVersion.MC1_21_3),
PALE_OAK_BOAT(MCVersion.MC1_21_3),
PALE_OAK_BUTTON(MCVersion.MC1_21_3),
PALE_OAK_CHEST_BOAT(MCVersion.MC1_21_3),
PALE_OAK_DOOR(MCVersion.MC1_21_3),
PALE_OAK_FENCE(MCVersion.MC1_21_3),
PALE_OAK_FENCE_GATE(MCVersion.MC1_21_3),
PALE_OAK_HANGING_SIGN(MCVersion.MC1_21_3),
PALE_OAK_LEAVES(MCVersion.MC1_21_3),
PALE_OAK_LOG(MCVersion.MC1_21_3),
PALE_OAK_PLANKS(MCVersion.MC1_21_3),
PALE_OAK_PRESSURE_PLATE(MCVersion.MC1_21_3),
PALE_OAK_SAPLING(MCVersion.MC1_21_3),
PALE_OAK_SIGN(MCVersion.MC1_21_3),
PALE_OAK_SLAB(MCVersion.MC1_21_3),
PALE_OAK_STAIRS(MCVersion.MC1_21_3),
PALE_OAK_TRAPDOOR(MCVersion.MC1_21_3),
PALE_OAK_WALL_HANGING_SIGN(MCVersion.MC1_21_3),
PALE_OAK_WALL_SIGN(MCVersion.MC1_21_3),
PALE_OAK_WOOD(MCVersion.MC1_21_3),
POTTED_PALE_OAK_SAPLING(MCVersion.MC1_21_3),
STRIPPED_PALE_OAK_LOG(MCVersion.MC1_21_3),
STRIPPED_PALE_OAK_WOOD(MCVersion.MC1_21_3);

private final MCVersion since;
private final MCVersion until;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@
import com.laytonsmith.abstraction.enums.MCRecipeType;
import com.laytonsmith.abstraction.enums.MCTone;
import com.laytonsmith.abstraction.enums.MCVersion;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCAttribute;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCDyeColor;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCEntityType;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCEquipmentSlot;
Expand All @@ -105,6 +104,7 @@
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.World;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeModifier;
import org.bukkit.block.Banner;
import org.bukkit.block.Beacon;
Expand Down Expand Up @@ -308,7 +308,7 @@ public MCAttributeModifier GetAttributeModifier(MCAttribute attr, UUID id, Strin
AttributeModifier mod = new AttributeModifier(id, name, amt,
BukkitMCAttributeModifier.Operation.getConvertor().getConcreteEnum(op),
BukkitMCEquipmentSlot.getConvertor().getConcreteEnum(slot));
return new BukkitMCAttributeModifier(BukkitMCAttribute.getConvertor().getConcreteEnum(attr), mod);
return new BukkitMCAttributeModifier((Attribute) attr.getConcrete(), mod);
}

@Override
Expand All @@ -325,7 +325,7 @@ public MCAttributeModifier GetAttributeModifier(MCAttribute attr, UUID id, Strin
AttributeModifier mod = new AttributeModifier(id, name, amt,
BukkitMCAttributeModifier.Operation.getConvertor().getConcreteEnum(op),
EquipmentSlotGroup.getByName(slot.name()));
return new BukkitMCAttributeModifier(BukkitMCAttribute.getConvertor().getConcreteEnum(attr), mod);
return new BukkitMCAttributeModifier((Attribute) attr.getConcrete(), mod);
}

@Override
Expand All @@ -334,7 +334,7 @@ public MCAttributeModifier GetAttributeModifier(MCAttribute attr, MCNamespacedKe
AttributeModifier mod = new AttributeModifier((NamespacedKey) key.getHandle(), amt,
BukkitMCAttributeModifier.Operation.getConvertor().getConcreteEnum(op),
es == null ? EquipmentSlotGroup.ANY : es.getGroup());
return new BukkitMCAttributeModifier(BukkitMCAttribute.getConvertor().getConcreteEnum(attr), mod);
return new BukkitMCAttributeModifier((Attribute) attr.getConcrete(), mod);
}

@Override
Expand All @@ -348,7 +348,7 @@ public MCAttributeModifier GetAttributeModifier(MCAttribute attr, MCNamespacedKe
AttributeModifier mod = new AttributeModifier((NamespacedKey) key.getHandle(), amt,
BukkitMCAttributeModifier.Operation.getConvertor().getConcreteEnum(op),
EquipmentSlotGroup.getByName(slot.name()));
return new BukkitMCAttributeModifier(BukkitMCAttribute.getConvertor().getConcreteEnum(attr), mod);
return new BukkitMCAttributeModifier((Attribute) attr.getConcrete(), mod);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public String getAttributeName() {

@Override
public MCAttribute getAttribute() {
return BukkitMCAttribute.getConvertor().getAbstractedEnum(a);
return BukkitMCAttribute.valueOfConcrete(a);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import java.util.Map.Entry;
import java.util.Set;

import com.laytonsmith.abstraction.enums.bukkit.BukkitMCAttribute;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCEnchantment;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCItemFlag;
import org.bukkit.Material;
Expand Down Expand Up @@ -238,8 +237,7 @@ public List<MCAttributeModifier> getAttributeModifiers() {
public void setAttributeModifiers(List<MCAttributeModifier> modifiers) {
Multimap<Attribute, AttributeModifier> map = LinkedHashMultimap.create();
for(MCAttributeModifier m : modifiers) {
map.put(BukkitMCAttribute.getConvertor().getConcreteEnum(m.getAttribute()),
(AttributeModifier) m.getHandle());
map.put((Attribute) m.getAttribute().getConcrete(), (AttributeModifier) m.getHandle());
}
im.setAttributeModifiers(map);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public static void build() {
// These values will still be accepted on an MC server, but will be missing from cmdline.
for(Material m : Material.values()) {
if(!m.isLegacy() && !BUKKIT_MAP.containsKey(m)) {
MSLog.GetLogger().w(MSLog.Tags.GENERAL, "Could not find MCMaterial for " + m.name(), Target.UNKNOWN);
BukkitMCMaterial wrapper = new BukkitMCMaterial(null, m);
BY_STRING.put(m.name(), wrapper);
BUKKIT_MAP.put(m, wrapper);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
import com.laytonsmith.abstraction.enums.MCAttribute;
import com.laytonsmith.abstraction.enums.MCPotionEffectType;
import com.laytonsmith.abstraction.enums.MCVersion;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCAttribute;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCPotionEffectType;
import com.laytonsmith.core.Static;
import com.laytonsmith.core.constructs.Target;
Expand Down Expand Up @@ -415,7 +414,7 @@ public boolean isTameable() {
}

private AttributeInstance getAttributeInstance(MCAttribute attr) {
AttributeInstance instance = le.getAttribute(BukkitMCAttribute.getConvertor().getConcreteEnum(attr));
AttributeInstance instance = le.getAttribute((Attribute) attr.getConcrete());
if(instance == null) {
throw new IllegalArgumentException("This attribute is not applicable to this entity type.");
}
Expand Down Expand Up @@ -450,7 +449,7 @@ public void resetAttributeBase(MCAttribute attr) {

@Override
public List<MCAttributeModifier> getAttributeModifiers(MCAttribute attr) {
Attribute bukkitAttribute = BukkitMCAttribute.getConvertor().getConcreteEnum(attr);
Attribute bukkitAttribute = (Attribute) attr.getConcrete();
AttributeInstance instance = le.getAttribute(bukkitAttribute);
if(instance == null) {
throw new IllegalArgumentException("This attribute is not applicable to this entity type.");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@

import com.laytonsmith.abstraction.entities.MCPainting;
import com.laytonsmith.abstraction.enums.MCArt;
import com.laytonsmith.abstraction.enums.bukkit.BukkitMCArt;
import org.bukkit.Art;
import org.bukkit.NamespacedKey;
import org.bukkit.Registry;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Painting;

import java.util.Locale;

public class BukkitMCPainting extends BukkitMCHanging implements MCPainting {

Painting p;
Expand All @@ -17,7 +21,7 @@ public BukkitMCPainting(Entity painting) {

@Override
public MCArt getArt() {
return BukkitMCArt.getConvertor().getAbstractedEnum(p.getArt());
return MCArt.valueOf(p.getArt().getKey().getKey().toUpperCase(Locale.ROOT));
}

@Override
Expand All @@ -27,7 +31,11 @@ public boolean setArt(MCArt art) {

@Override
public boolean setArt(MCArt art, boolean force) {
return p.setArt(BukkitMCArt.getConvertor().getConcreteEnum(art), force);
Art concreteArt = Registry.ART.get(NamespacedKey.minecraft(art.name().toLowerCase(Locale.ROOT)));
if(concreteArt != null) {
return p.setArt(concreteArt, force);
}
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -415,25 +415,28 @@ public void setTempOp(Boolean value) throws ClassNotFoundException, NoSuchFieldE
String nms = "net.minecraft.server";
String playersPackage = nms + ".players";
String ops = "p";
String getPlayerList = isPaper ? "getPlayerList" : "ah";
String getPlayerList = isPaper ? "getPlayerList" : "ag";
MCVersion mcversion = Static.getServer().getMinecraftVersion();
if(mcversion.lt(MCVersion.MC1_20_6)) {
getPlayerList = "ae";
if(mcversion.lt(MCVersion.MC1_20_4)) {
getPlayerList = "ac";
if(mcversion.lt(MCVersion.MC1_20_2)) {
ops = "o";
if(mcversion.equals(MCVersion.MC1_19_3)) {
getPlayerList = "ab";
} else if(mcversion.lt(MCVersion.MC1_19_1)) {
ops = "n";
if(mcversion.lt(MCVersion.MC1_18)) {
getPlayerList = "getPlayerList";
if(mcversion.lt(MCVersion.MC1_17)) {
String version = ((BukkitMCServer) Static.getServer()).getCraftBukkitPackage().split("\\.")[3];
nms = "net.minecraft.server." + version;
playersPackage = nms;
ops = "operators";
if(mcversion.lt(MCVersion.MC1_21_3)) {
getPlayerList = isPaper ? "getPlayerList" : "ah";
if(mcversion.lt(MCVersion.MC1_20_6)) {
getPlayerList = "ae";
if(mcversion.lt(MCVersion.MC1_20_4)) {
getPlayerList = "ac";
if(mcversion.lt(MCVersion.MC1_20_2)) {
ops = "o";
if(mcversion.equals(MCVersion.MC1_19_3)) {
getPlayerList = "ab";
} else if(mcversion.lt(MCVersion.MC1_19_1)) {
ops = "n";
if(mcversion.lt(MCVersion.MC1_18)) {
getPlayerList = "getPlayerList";
if(mcversion.lt(MCVersion.MC1_17)) {
String version = ((BukkitMCServer) Static.getServer()).getCraftBukkitPackage().split("\\.")[3];
nms = "net.minecraft.server." + version;
playersPackage = nms;
ops = "operators";
}
}
}
}
Expand Down
Loading

0 comments on commit 62e47f3

Please sign in to comment.