Merge pull request #484 from AllayMC/dev/allay-update

fix: adapt allay update
This commit is contained in:
Zoë Gidiere
2025-02-26 10:20:43 -07:00
committed by GitHub
15 changed files with 1234 additions and 901 deletions

View File

@@ -79,6 +79,6 @@ object Versions {
}
object Allay {
const val api = "0114e0b290"
const val api = "0.1.3"
}
}
}

View File

@@ -2,7 +2,7 @@
## Resource files
Current mapping version: je 1.21 to be 1.21.30
Current mapping version: je 1.21.4 to be 1.21.50
- `mapping/biomes.json` obtain from GeyserMC/mappings.
- `mapping/items.json` obtain from GeyserMC/mappings.

View File

@@ -47,7 +47,7 @@ public class AllayPlatform extends AbstractPlatform {
var dimension = wrapper.getAllayWorldGenerator().getDimension();
TerraAllayPlugin.INSTANCE.getPluginLogger().info(
"Replaced pack in chunk generator for world {}",
dimension.getWorld().getWorldData().getName() + ":" + dimension.getDimensionInfo().dimensionId()
dimension.getWorld().getWorldData().getDisplayName() + ":" + dimension.getDimensionInfo().dimensionId()
);
});
});

View File

@@ -73,7 +73,7 @@ public final class Mapping {
public static Map<String, String> getJeBlockDefaultProperties(String jeBlockIdentifier) {
Map<String, String> defaultProperties = JE_BLOCK_DEFAULT_PROPERTIES.get(jeBlockIdentifier);
if( defaultProperties == null) {
if(defaultProperties == null) {
TerraAllayPlugin.INSTANCE.getPluginLogger().warn("Failed to find default properties for {}", jeBlockIdentifier);
return Map.of();
}
@@ -85,8 +85,8 @@ public final class Mapping {
}
private static boolean initBiomeMapping() {
try (InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/biomes.json")) {
if (stream == null) {
try(InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/biomes.json")) {
if(stream == null) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("biomes mapping not found");
return false;
}
@@ -100,12 +100,12 @@ public final class Mapping {
}
private static boolean initItemMapping() {
try (InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/items.json")) {
if (stream == null) {
try(InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/items.json")) {
if(stream == null) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("items mapping not found");
return false;
}
Set<Entry<String, Map<String, Object>>> mappings = JSONUtils.from(stream, new TypeToken<Map<String, Map<String, Object>>>(){}).entrySet();
Set<Entry<String, Map<String, Object>>> mappings = JSONUtils.from(stream, new TypeToken<Map<String, Map<String, Object>>>() {}).entrySet();
mappings.forEach(mapping -> {
ItemType<?> item = ItemTypeSafeGetter
.name((String) mapping.getValue().get("bedrock_identifier"))
@@ -121,13 +121,13 @@ public final class Mapping {
}
private static boolean initBlockStateMapping() {
try (InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/blocks.json")) {
if (stream == null) {
try(InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("mapping/blocks.json")) {
if(stream == null) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("blocks mapping not found");
return false;
}
// noinspection unchecked
List<Map<String, Map<String, Object>>> mappings = (List<Map<String, Map<String, Object>>>) JSONUtils.from(stream, new TypeToken<Map<String, Object>>(){}).get("mappings");
List<Map<String, Map<String, Object>>> mappings = (List<Map<String, Map<String, Object>>>) JSONUtils.from(stream, new TypeToken<Map<String, Object>>() {}).get("mappings");
mappings.forEach(mapping -> {
JeBlockState jeState = createJeBlockState(mapping.get("java_state"));
BlockState beState = createBeBlockState(mapping.get("bedrock_state"));
@@ -141,12 +141,12 @@ public final class Mapping {
}
private static boolean initJeBlockDefaultProperties() {
try (InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("je_block_default_states.json")) {
if (stream == null) {
try(InputStream stream = Mapping.class.getClassLoader().getResourceAsStream("je_block_default_states.json")) {
if(stream == null) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("je_block_default_states.json not found");
return false;
}
Map<String, Map<String, String>> states = JSONUtils.from(stream, new TypeToken<Map<String, Map<String, String>>>(){});
Map<String, Map<String, String>> states = JSONUtils.from(stream, new TypeToken<>() {});
for(Entry<String, Map<String, String>> entry : states.entrySet()) {
String identifier = entry.getKey();
Map<String, String> properties = entry.getValue();
@@ -161,7 +161,7 @@ public final class Mapping {
private static BlockState createBeBlockState(Map<String, Object> data) {
Getter getter = BlockStateSafeGetter
.name("minecraft:" + data.get("bedrock_identifier"));
if (data.containsKey("state")) {
if(data.containsKey("state")) {
// noinspection unchecked
convertValueType((Map<String, Object>) data.get("state")).forEach(getter::property);
}
@@ -170,8 +170,8 @@ public final class Mapping {
private static Map<String, Object> convertValueType(Map<String, Object> data) {
TreeMap<String, Object> result = new TreeMap<>();
for (Entry<String, Object> entry : data.entrySet()) {
if (entry.getValue() instanceof Number number) {
for(Entry<String, Object> entry : data.entrySet()) {
if(entry.getValue() instanceof Number number) {
// Convert double to int because the number in json is double
result.put(entry.getKey(), number.intValue());
} else {

View File

@@ -40,9 +40,8 @@ public class TerraAllayPlugin extends Plugin {
AllayGeneratorWrapper wrapper = new AllayGeneratorWrapper(preset);
AllayPlatform.GENERATOR_WRAPPERS.add(wrapper);
return wrapper.getAllayWorldGenerator();
} catch (IllegalArgumentException e) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("Fail to create world generator with preset: {}", preset);
TerraAllayPlugin.INSTANCE.getPluginLogger().error("Reason: {}", e.getMessage());
} catch(IllegalArgumentException e) {
TerraAllayPlugin.INSTANCE.getPluginLogger().error("Fail to create world generator with preset: {}", preset, e);
return Registries.WORLD_GENERATOR_FACTORIES.get("FLAT").apply("");
}
});

View File

@@ -17,7 +17,7 @@ public record AllayBlockType(BlockType<?> allayBlockType) implements com.dfsek.t
@Override
public boolean isSolid() {
return allayBlockType.getMaterial().isSolid();
return allayBlockType.getDefaultState().getBlockStateData().isSolid();
}
@Override

View File

@@ -21,8 +21,7 @@ public record AllayChunk(ServerWorld world, Chunk allayChunk) implements com.dfs
public void setBlock(int x, int y, int z, BlockState data, boolean physics) {
AllayBlockState allayBlockState = (AllayBlockState) data;
allayChunk.setBlockState(x, y, z, allayBlockState.allayBlockState());
boolean containsWater = allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER);
if (containsWater) {
if (allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER)) {
allayChunk.setBlockState(x, y, z, WATER, 1);
}
}

View File

@@ -26,8 +26,7 @@ public record AllayProtoChunk(UnsafeChunk allayChunk) implements ProtoChunk {
public void setBlock(int x, int y, int z, @NotNull BlockState blockState) {
AllayBlockState allayBlockState = (AllayBlockState) blockState;
allayChunk.setBlockState(x, y, z, allayBlockState.allayBlockState());
boolean containsWater = allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER);
if (containsWater) {
if(allayBlockState.containsWater() || allayChunk.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER)) {
allayChunk.setBlockState(x, y, z, WATER, 1);
}
}

View File

@@ -41,10 +41,11 @@ public record AllayProtoWorld(AllayServerWorld allayServerWorld, OtherChunkAcces
@Override
public void setBlockState(int x, int y, int z, BlockState data, boolean physics) {
AllayBlockState allayBlockState = (AllayBlockState)data;
boolean containsWater = allayBlockState.containsWater() || context.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER);
AllayBlockState allayBlockState = (AllayBlockState) data;
context.setBlockState(x, y, z, allayBlockState.allayBlockState());
if (containsWater) context.setBlockState(x, y, z, WATER, 1);
if(allayBlockState.containsWater() || context.getBlockState(x, y, z).getBlockType().hasBlockTag(BlockTags.WATER)) {
context.setBlockState(x, y, z, WATER, 1);
}
}
@Override

View File

@@ -1,7 +1,5 @@
package com.dfsek.terra.allay.delegate;
import org.allaymc.api.block.property.type.BlockPropertyTypes;
import org.allaymc.api.block.type.BlockTypes;
import org.allaymc.api.world.Dimension;
import com.dfsek.terra.allay.Mapping;
@@ -21,12 +19,9 @@ import com.dfsek.terra.api.world.chunk.generation.ChunkGenerator;
* @author daoge_cmd
*/
public record AllayServerWorld(AllayGeneratorWrapper allayGeneratorWrapper, Dimension allayDimension) implements ServerWorld {
private static final org.allaymc.api.block.type.BlockState WATER = BlockTypes.WATER.ofState(BlockPropertyTypes.LIQUID_DEPTH.createValue(0));
@Override
public Chunk getChunkAt(int x, int z) {
return new AllayChunk(this, allayDimension.getChunkService().getChunk(x ,z));
return new AllayChunk(this, allayDimension.getChunkService().getChunk(x, z));
}
@Override

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1,197 @@
{ "minecraft:badlands": { "bedrock_id": 37 }, "minecraft:bamboo_jungle": { "bedrock_id": 48 }, "minecraft:basalt_deltas": { "bedrock_id": 181 }, "minecraft:beach": { "bedrock_id": 16 }, "minecraft:birch_forest": { "bedrock_id": 27 }, "minecraft:cherry_grove": { "bedrock_id": 192 }, "minecraft:cold_ocean": { "bedrock_id": 44 }, "minecraft:crimson_forest": { "bedrock_id": 179 }, "minecraft:dark_forest": { "bedrock_id": 29 }, "minecraft:deep_cold_ocean": { "bedrock_id": 45 }, "minecraft:deep_dark": { "bedrock_id": 190 }, "minecraft:deep_frozen_ocean": { "bedrock_id": 47 }, "minecraft:deep_lukewarm_ocean": { "bedrock_id": 43 }, "minecraft:deep_ocean": { "bedrock_id": 24 }, "minecraft:desert": { "bedrock_id": 2 }, "minecraft:dripstone_caves": { "bedrock_id": 188 }, "minecraft:end_barrens": { "bedrock_id": 9 }, "minecraft:end_highlands": { "bedrock_id": 9 }, "minecraft:end_midlands": { "bedrock_id": 9 }, "minecraft:eroded_badlands": { "bedrock_id": 165 }, "minecraft:flower_forest": { "bedrock_id": 132 }, "minecraft:forest": { "bedrock_id": 4 }, "minecraft:frozen_ocean": { "bedrock_id": 46 }, "minecraft:frozen_peaks": { "bedrock_id": 183 }, "minecraft:frozen_river": { "bedrock_id": 11 }, "minecraft:grove": { "bedrock_id": 185 }, "minecraft:ice_spikes": { "bedrock_id": 140 }, "minecraft:jagged_peaks": { "bedrock_id": 182 }, "minecraft:jungle": { "bedrock_id": 21 }, "minecraft:lukewarm_ocean": { "bedrock_id": 42 }, "minecraft:lush_caves": { "bedrock_id": 187 }, "minecraft:mangrove_swamp": { "bedrock_id": 191 }, "minecraft:meadow": { "bedrock_id": 186 }, "minecraft:mushroom_fields": { "bedrock_id": 14 }, "minecraft:nether_wastes": { "bedrock_id": 8 }, "minecraft:ocean": { "bedrock_id": 0 }, "minecraft:old_growth_birch_forest": { "bedrock_id": 155 }, "minecraft:old_growth_pine_taiga": { "bedrock_id": 32 }, "minecraft:old_growth_spruce_taiga": { "bedrock_id": 160 }, "minecraft:plains": { "bedrock_id": 1 }, "minecraft:river": { "bedrock_id": 7 }, "minecraft:savanna": { "bedrock_id": 35 }, "minecraft:savanna_plateau": { "bedrock_id": 36 }, "minecraft:small_end_islands": { "bedrock_id": 9 }, "minecraft:snowy_beach": { "bedrock_id": 26 }, "minecraft:snowy_plains": { "bedrock_id": 12 }, "minecraft:snowy_slopes": { "bedrock_id": 184 }, "minecraft:snowy_taiga": { "bedrock_id": 30 }, "minecraft:soul_sand_valley": { "bedrock_id": 178 }, "minecraft:sparse_jungle": { "bedrock_id": 23 }, "minecraft:stony_peaks": { "bedrock_id": 189 }, "minecraft:stony_shore": { "bedrock_id": 25 }, "minecraft:sunflower_plains": { "bedrock_id": 129 }, "minecraft:swamp": { "bedrock_id": 6 }, "minecraft:taiga": { "bedrock_id": 5 }, "minecraft:the_end": { "bedrock_id": 9 }, "minecraft:the_void": { "bedrock_id": 7 }, "minecraft:warm_ocean": { "bedrock_id": 40 }, "minecraft:warped_forest": { "bedrock_id": 180 }, "minecraft:windswept_forest": { "bedrock_id": 34 }, "minecraft:windswept_gravelly_hills": { "bedrock_id": 131 }, "minecraft:windswept_hills": { "bedrock_id": 3 }, "minecraft:windswept_savanna": { "bedrock_id": 163 }, "minecraft:wooded_badlands": { "bedrock_id": 38 } }
{
"minecraft:badlands": {
"bedrock_id": 37
},
"minecraft:bamboo_jungle": {
"bedrock_id": 48
},
"minecraft:basalt_deltas": {
"bedrock_id": 181
},
"minecraft:beach": {
"bedrock_id": 16
},
"minecraft:birch_forest": {
"bedrock_id": 27
},
"minecraft:cherry_grove": {
"bedrock_id": 192
},
"minecraft:cold_ocean": {
"bedrock_id": 44
},
"minecraft:crimson_forest": {
"bedrock_id": 179
},
"minecraft:dark_forest": {
"bedrock_id": 29
},
"minecraft:deep_cold_ocean": {
"bedrock_id": 45
},
"minecraft:deep_dark": {
"bedrock_id": 190
},
"minecraft:deep_frozen_ocean": {
"bedrock_id": 47
},
"minecraft:deep_lukewarm_ocean": {
"bedrock_id": 43
},
"minecraft:deep_ocean": {
"bedrock_id": 24
},
"minecraft:desert": {
"bedrock_id": 2
},
"minecraft:dripstone_caves": {
"bedrock_id": 188
},
"minecraft:end_barrens": {
"bedrock_id": 9
},
"minecraft:end_highlands": {
"bedrock_id": 9
},
"minecraft:end_midlands": {
"bedrock_id": 9
},
"minecraft:eroded_badlands": {
"bedrock_id": 165
},
"minecraft:flower_forest": {
"bedrock_id": 132
},
"minecraft:forest": {
"bedrock_id": 4
},
"minecraft:frozen_ocean": {
"bedrock_id": 46
},
"minecraft:frozen_peaks": {
"bedrock_id": 183
},
"minecraft:frozen_river": {
"bedrock_id": 11
},
"minecraft:grove": {
"bedrock_id": 185
},
"minecraft:ice_spikes": {
"bedrock_id": 140
},
"minecraft:jagged_peaks": {
"bedrock_id": 182
},
"minecraft:jungle": {
"bedrock_id": 21
},
"minecraft:lukewarm_ocean": {
"bedrock_id": 42
},
"minecraft:lush_caves": {
"bedrock_id": 187
},
"minecraft:mangrove_swamp": {
"bedrock_id": 191
},
"minecraft:meadow": {
"bedrock_id": 186
},
"minecraft:mushroom_fields": {
"bedrock_id": 14
},
"minecraft:nether_wastes": {
"bedrock_id": 8
},
"minecraft:ocean": {
"bedrock_id": 0
},
"minecraft:old_growth_birch_forest": {
"bedrock_id": 155
},
"minecraft:old_growth_pine_taiga": {
"bedrock_id": 32
},
"minecraft:old_growth_spruce_taiga": {
"bedrock_id": 160
},
"minecraft:pale_garden": {
"bedrock_id": 62
},
"minecraft:plains": {
"bedrock_id": 1
},
"minecraft:river": {
"bedrock_id": 7
},
"minecraft:savanna": {
"bedrock_id": 35
},
"minecraft:savanna_plateau": {
"bedrock_id": 36
},
"minecraft:small_end_islands": {
"bedrock_id": 9
},
"minecraft:snowy_beach": {
"bedrock_id": 26
},
"minecraft:snowy_plains": {
"bedrock_id": 12
},
"minecraft:snowy_slopes": {
"bedrock_id": 184
},
"minecraft:snowy_taiga": {
"bedrock_id": 30
},
"minecraft:soul_sand_valley": {
"bedrock_id": 178
},
"minecraft:sparse_jungle": {
"bedrock_id": 23
},
"minecraft:stony_peaks": {
"bedrock_id": 189
},
"minecraft:stony_shore": {
"bedrock_id": 25
},
"minecraft:sunflower_plains": {
"bedrock_id": 129
},
"minecraft:swamp": {
"bedrock_id": 6
},
"minecraft:taiga": {
"bedrock_id": 5
},
"minecraft:the_end": {
"bedrock_id": 9
},
"minecraft:the_void": {
"bedrock_id": 7
},
"minecraft:warm_ocean": {
"bedrock_id": 40
},
"minecraft:warped_forest": {
"bedrock_id": 180
},
"minecraft:windswept_forest": {
"bedrock_id": 34
},
"minecraft:windswept_gravelly_hills": {
"bedrock_id": 131
},
"minecraft:windswept_hills": {
"bedrock_id": 3
},
"minecraft:windswept_savanna": {
"bedrock_id": 163
},
"minecraft:wooded_badlands": {
"bedrock_id": 38
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,17 @@
{
"entrance": "com.dfsek.terra.allay.TerraAllayPlugin",
"name": "Terra",
"authors": ["daoge_cmd", "dfsek", "duplexsystem", "Astrash", "solonovamax", "Sancires", "Aureus", "RogueShade"],
"authors": [
"daoge_cmd",
"IWareQ",
"dfsek",
"duplexsystem",
"Astrash",
"solonovamax",
"Sancires",
"Aureus",
"RogueShade"
],
"version": "@VERSION@",
"description": "@DESCRIPTION@",
"website": "@WIKI@"