Skip to content

Commit

Permalink
Bedrock 1.21.30
Browse files Browse the repository at this point in the history
  • Loading branch information
wode490390 committed Aug 23, 2024
1 parent ca644a6 commit d400b1a
Show file tree
Hide file tree
Showing 20 changed files with 201 additions and 137 deletions.
1 change: 1 addition & 0 deletions src/main/java/cn/nukkit/GameVersion.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public enum GameVersion {
V1_21_0(685, "1.21.0", "1.21"),
V1_21_2(686, "1.21.2"),
V1_21_20(712, "1.21.20"),
V1_21_30(729, "1.21.30"),
;

private static GameVersion FEATURE_VERSION = GameVersion.V1_18_0;
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/cn/nukkit/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ public class Player extends EntityHuman implements CommandSender, InventoryHolde
protected boolean swinging;
protected int swingTime;

protected int damageNearbyMobsTick;
public int damageNearbyMobsTick;

protected int shieldBlockingTick;
protected int prevShieldBlockingTick;
Expand Down Expand Up @@ -6400,6 +6400,12 @@ public void openSignEditor(BlockVector3 pos, boolean front) {
public void playEmote(String emoteId, long entityRuntimeId, int flags) {
}

/**
* @since 1.21.30
*/
public void playEmote(String emoteId, long entityRuntimeId, int flags, int emoteTicks) {
}

/**
* @since 1.19.10
*/
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/cn/nukkit/block/BlockWallCobblestone.java
Original file line number Diff line number Diff line change
Expand Up @@ -81,20 +81,20 @@ public float getHardness() {
case TYPE_STONE_BRICK:
case TYPE_MOSSY_STONE_BRICK:
case TYPE_PRISMARINE:
if (ENABLE_BLOCK_DESTROY_SPEED_COMPATIBILITY /*|| V1_21_30.isAvailable()*/) {
if (ENABLE_BLOCK_DESTROY_SPEED_COMPATIBILITY || V1_21_30.isAvailable()) {
return 1.5f;
}
break;
case TYPE_SANDSTONE:
case TYPE_RED_SANDSTONE:
if (ENABLE_BLOCK_DESTROY_SPEED_COMPATIBILITY /*|| V1_21_30.isAvailable()*/) {
if (ENABLE_BLOCK_DESTROY_SPEED_COMPATIBILITY || V1_21_30.isAvailable()) {
return 0.8f;
}
break;
case TYPE_END_BRICK:
// if (V1_21_30.isAvailable()) {
// return 3;
// }
if (V1_21_30.isAvailable()) {
return 3;
}
break;
}
return 2;
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/cn/nukkit/block/Blocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -1315,7 +1315,7 @@ private static void registerComplexAliases() {
registerComplexAlias(ItemBlockNames.CHISELED_QUARTZ_BLOCK, QUARTZ_BLOCK, BlockQuartz.CHISELED, V1_21_20);
registerComplexAlias(ItemBlockNames.QUARTZ_PILLAR, QUARTZ_BLOCK, BlockQuartz.PILLAR, V1_21_20);
registerComplexAlias(ItemBlockNames.SMOOTH_QUARTZ, QUARTZ_BLOCK, BlockQuartz.SMOOTH, V1_21_20);
/*

registerComplexAlias(ItemBlockNames.DEPRECATED_PURPUR_BLOCK_1, PURPUR_BLOCK, BlockPurpur.CHISELED, V1_21_30);
registerComplexAlias(ItemBlockNames.PURPUR_PILLAR, PURPUR_BLOCK, BlockPurpur.PILLAR, V1_21_30);
registerComplexAlias(ItemBlockNames.DEPRECATED_PURPUR_BLOCK_2, PURPUR_BLOCK, BlockPurpur.SMOOTH, V1_21_30);
Expand Down Expand Up @@ -1348,7 +1348,7 @@ private static void registerComplexAliases() {
registerComplexAlias(ItemBlockNames.LAB_TABLE, CHEMISTRY_TABLE, BlockChemistryTable.TYPE_LAB_TABLE, V1_21_30);

registerComplexAlias(ItemBlockNames.UNDERWATER_TNT, TNT, BlockTNT.ALLOW_UNDERWATER_BIT, V1_21_30);
*/

}

private static Class<? extends Block> registerBlock(String blockName, String itemName, int id, Class<? extends Block> clazz) {
Expand Down
36 changes: 33 additions & 3 deletions src/main/java/cn/nukkit/entity/attribute/Attribute.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ public class Attribute implements AttributeID {

private final int id;
private final String name;
private float defaultMinValue;
private float minValue;
private float defaultMaxValue;
private float maxValue;
private float defaultValue;
private float currentValue;
Expand All @@ -37,7 +39,9 @@ public class Attribute implements AttributeID {
Attribute(int id, String name, float minValue, float maxValue, float defaultValue, RedefinitionMode redefinitionMode, boolean shouldSend) {
this.id = id;
this.name = name;
this.defaultMinValue = minValue;
this.minValue = minValue;
this.defaultMaxValue = maxValue;
this.maxValue = maxValue;
this.defaultValue = defaultValue;
this.redefinitionMode = redefinitionMode;
Expand All @@ -48,11 +52,13 @@ public class Attribute implements AttributeID {
this.calculatedValues = new float[3];
}

private Attribute(int id, String name, float minValue, float maxValue, float defaultValue, float currentValue, RedefinitionMode redefinitionMode, boolean shouldSend,
private Attribute(int id, String name, float defaultMinValue, float minValue, float defaultMaxValue, float maxValue, float defaultValue, float currentValue, RedefinitionMode redefinitionMode, boolean shouldSend,
EnumMap<Operation, Set<AttributeModifier>> modifiersByOperation, Object2ObjectArrayMap<UUID, AttributeModifier> modifiersById, float[] calculatedValues, boolean dirty) {
this.id = id;
this.name = name;
this.defaultMinValue = defaultMinValue;
this.minValue = minValue;
this.defaultMaxValue = defaultMaxValue;
this.maxValue = maxValue;
this.defaultValue = defaultValue;
this.currentValue = currentValue;
Expand Down Expand Up @@ -82,6 +88,18 @@ public static Attribute getAttributeByName(String name) {
return Attributes.getAttribute(name);
}

public float getDefaultMinValue() {
return this.defaultMinValue;
}

public Attribute setDefaultMinValue(float defaultMinValue) {
if (defaultMinValue > this.getDefaultMaxValue()) {
throw new IllegalArgumentException("Value " + defaultMinValue + " is bigger than the maxValue!");
}
this.defaultMinValue = defaultMinValue;
return this;
}

public float getMinValue() {
return this.minValue;
}
Expand All @@ -94,6 +112,18 @@ public Attribute setMinValue(float minValue) {
return this;
}

public float getDefaultMaxValue() {
return this.defaultMaxValue;
}

public Attribute setDefaultMaxValue(float defaultMaxValue) {
if (defaultMaxValue < this.getDefaultMinValue()) {
throw new IllegalArgumentException("Value " + defaultMaxValue + " is bigger than the minValue!");
}
this.defaultMaxValue = defaultMaxValue;
return this;
}

public float getMaxValue() {
return this.maxValue;
}
Expand All @@ -111,7 +141,7 @@ public float getDefaultValue() {
}

public Attribute setDefaultValue(float defaultValue) {
if (defaultValue > this.getMaxValue() || defaultValue < this.getMinValue()) {
if (defaultValue > this.getDefaultMaxValue() || defaultValue < this.getDefaultMinValue()) {
throw new IllegalArgumentException("Value " + defaultValue + " exceeds the range!");
}
this.defaultValue = defaultValue;
Expand Down Expand Up @@ -169,7 +199,7 @@ public Attribute copy() {
modifiersByOperation.put(entry.getKey(), new HashSet<>(modifiers));
}
}
return new Attribute(id, name, minValue, maxValue, defaultValue, currentValue, redefinitionMode, shouldSend,
return new Attribute(id, name, defaultMinValue, minValue, defaultMaxValue, maxValue, defaultValue, currentValue, redefinitionMode, shouldSend,
modifiersByOperation, modifiersById.clone(), calculatedValues.clone(), dirty);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ protected DataPacket createAddEntityPacket() {
int maxHealth = getMaxHealth();
float jumpStrength = getJumpStrength();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.MOVEMENT).setDefaultValue(movementSpeed).setValue(movementSpeed),
Attribute.getAttribute(Attribute.HORSE_JUMP_STRENGTH).setDefaultValue(jumpStrength).setValue(jumpStrength),
};
Expand All @@ -377,7 +377,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -395,7 +395,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/nukkit/entity/passive/EntityCamel.java
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ protected DataPacket createAddEntityPacket() {

int maxHealth = getMaxHealth();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.MOVEMENT).setDefaultValue(movementSpeed).setValue(movementSpeed),
};

Expand All @@ -179,7 +179,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -197,7 +197,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/nukkit/entity/passive/EntityLlama.java
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ protected DataPacket createAddEntityPacket() {

int maxHealth = getMaxHealth();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};

return addEntity;
Expand All @@ -210,7 +210,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -228,7 +228,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/nukkit/entity/passive/EntityPig.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ protected DataPacket createAddEntityPacket() {

int maxHealth = getMaxHealth();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};

return addEntity;
Expand All @@ -130,7 +130,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -148,7 +148,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/nukkit/entity/passive/EntityStrider.java
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ protected DataPacket createAddEntityPacket() {

int maxHealth = getMaxHealth();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};

return addEntity;
Expand All @@ -116,7 +116,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -134,7 +134,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/cn/nukkit/entity/passive/EntityTraderLlama.java
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ protected DataPacket createAddEntityPacket() {

int maxHealth = getMaxHealth();
addEntity.attributes = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};

return addEntity;
Expand All @@ -198,7 +198,7 @@ public boolean setHealth(float health) {
packet.entityId = getId();
int maxHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maxHealth).setDefaultMaxValue(maxHealth).setDefaultValue(maxHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
return true;
Expand All @@ -216,7 +216,7 @@ public void setMaxHealth(int maxHealth) {
packet.entityId = getId();
int maximumHealth = getMaxHealth();
packet.entries = new Attribute[]{
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
Attribute.getAttribute(Attribute.HEALTH).setMaxValue(maximumHealth).setDefaultMaxValue(maximumHealth).setDefaultValue(maximumHealth).setValue(getHealth()),
};
Server.broadcastPacket(getViewers().values(), packet);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,7 @@ public enum DamageCause {
SONIC_BOOM,
CAMPFIRE,
SOUL_CAMPFIRE,
MACE_SMASH,
/**
* Plugins
*/
Expand Down
13 changes: 12 additions & 1 deletion src/main/java/cn/nukkit/item/ItemTrident.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,18 @@ public boolean onRelease(Player player, int ticksUsed) {
return false;
}

if (this.hasEnchantment(Enchantment.RIPTIDE)) {
int riptide = getEnchantmentLevel(Enchantment.RIPTIDE);
if (riptide > 0) {
if (player.getProtocol() >= 729
&& (player.isInsideOfWater(false) || player.level.isRaining() && player.level.canBlockSeeSky(player.getEyePosition()))
&& player.setDataFlag(Entity.DATA_FLAG_SPIN_ATTACK, true)) {
player.damageNearbyMobsTick = 20;
player.level.addLevelSoundEvent(player.add(0, player.getHeight() * 0.5f, 0), switch (riptide) {
case 1 -> LevelSoundEventPacket.SOUND_ITEM_TRIDENT_RIPTIDE_1;
case 2 -> LevelSoundEventPacket.SOUND_ITEM_TRIDENT_RIPTIDE_2;
default -> LevelSoundEventPacket.SOUND_ITEM_TRIDENT_RIPTIDE_3;
});
}
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ enum StaticVersion {
V1_20_80(671, false),
V1_21_0(685, false),
V1_21_20(712, false),
V1_21_30(729, false),
;

private static final StaticVersion MINIMUM_AVAILABLE_VERSION = V1_18_30;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ public class DisconnectPacket extends DataPacket {
public static final int REASON_CONN_NOT_LOGGED_IN = 114;
public static final int REASON_CONN_CLIENT_SIGNALING_ERROR = 115;
public static final int REASON_SUB_CLIENT_LOGIN_DISABLED = 116;
public static final int REASON_DEEP_LINK_TRYING_TO_OPEN_DEMO_WORLD_WHILE_SIGNED_IN = 117;

public int reason = REASON_UNKNOWN;
public boolean hideDisconnectionScreen;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,7 @@ public class LevelSoundEventPacket extends DataPacket {
public static final int SOUND_RECORD_CREATOR_MUSIC_BOX = 528;
public static final int SOUND_RECORD_PRECIPICE = 529;
public static final int SOUND_VAULT_REJECT_REWARDED_PLAYER = 530;
public static final int SOUND_IMITATE_DROWNED = 531;

public int sound;
public float x;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/cn/nukkit/network/protocol/ProtocolInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,8 @@ public interface ProtocolInfo {
int JIGSAW_STRUCTURE_DATA_PACKET = 0x139; // 313 c
int CURRENT_STRUCTURE_FEATURE_PACKET = 0x13a; // 314 c
int SERVERBOUND_DIAGNOSTICS_PACKET = 0x13b; // 315 s
int CAMERA_AIM_ASSIST_PACKET = 0x13c; // 316 c
int CONTAINER_REGISTRY_CLEANUP_PACKET = 0x13d; // 317 c


int COUNT = 1024;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ public class TransferPacket extends DataPacket {

public String address; // Server address
public int port = 19132; // Server port
public boolean reloadWorld;

@Override
public void decode() {
Expand Down
Loading

0 comments on commit d400b1a

Please sign in to comment.