fix(LitematicConverter): Properties can be absent if it's empty

This commit is contained in:
iceBear67 committed 2025-09-19 12:06:35 +08:00
1 parent 3b552a678d
commit c38af011a6
4 files changed
+15 -7

No files matched your search

+1 -1
View File
@@ -6,6 +6,6 @@ loader_version=0.16.14
# Fabric API # Fabric API
fabric_version=0.127.0+1.21.6 fabric_version=0.127.0+1.21.6
# Mod Properties # Mod Properties
mod_version=1.1 mod_version=1.2
maven_group=io.ib67 maven_group=io.ib67
archives_base_name=sfcraft archives_base_name=sfcraft
@@ -25,11 +25,16 @@ public class ProjectileEntityMixin {
@Unique @Unique
private boolean isPlayer; private boolean isPlayer;
@Inject(at = @At("HEAD"), method = "setOwner") @Inject(at = @At("HEAD"), method = "setOwner(Lnet/minecraft/entity/Entity;)V")
private void setOwner(@Nullable Entity owner, CallbackInfo ci) { private void setOwner(@Nullable Entity owner, CallbackInfo ci) {
isPlayer = owner instanceof PlayerEntity; isPlayer = owner instanceof PlayerEntity;
} }
@Inject(at=@At("HEAD"), method = "setOwner(Lnet/minecraft/entity/LazyEntityReference;)V")
private void setOwner(@Nullable LazyEntityReference<Entity> owner, CallbackInfo ci) {
isPlayer = LazyEntityReference.resolve(owner, $().getWorld(), Entity.class) instanceof PlayerEntity;
}
/** /**
* @reason Implement the logic correctly. * @reason Implement the logic correctly.
* @author icybear * @author icybear
@@ -55,11 +55,13 @@ public class WelcomeModule extends ServerModule {
Files.createDirectory(announcementDir); Files.createDirectory(announcementDir);
} }
announcements = new HashMap<>(); announcements = new HashMap<>();
for (var ele : Files.list(announcementDir).toList()) { try(var lines = Files.list(announcementDir)){
if (!ele.endsWith("txt")) continue; for (var ele : lines.toList()) {
if (!ele.toString().endsWith("txt")) continue;
announcements.put("sfwelcome_"+ele.getFileName().toString().replace(".txt", ""), Files.readString(ele).replaceAll("&", "§")); announcements.put("sfwelcome_"+ele.getFileName().toString().replace(".txt", ""), Files.readString(ele).replaceAll("&", "§"));
} }
} }
}
public void onPlayerJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender public void onPlayerJoin(ServerPlayNetworkHandler serverPlayNetworkHandler, PacketSender
packetSender, MinecraftServer minecraftServer) { packetSender, MinecraftServer minecraftServer) {
@@ -72,7 +74,7 @@ public class WelcomeModule extends ServerModule {
for (String s : announcements.keySet()) { for (String s : announcements.keySet()) {
if (!player.getCommandTags().contains(s)) { if (!player.getCommandTags().contains(s)) {
player.addCommandTag(s); player.addCommandTag(s);
s.lines().map(Text::of).forEach(player::sendMessage); announcements.get(s).lines().map(Text::of).forEach(player::sendMessage);
} }
} }
} }
@@ -119,8 +119,9 @@ public class LitematicConverter implements AutoCloseable {
for (int i = 0; i < paletteNbt.size(); i++) { for (int i = 0; i < paletteNbt.size(); i++) {
var entry = (NbtCompound) paletteNbt.get(i); var entry = (NbtCompound) paletteNbt.get(i);
var name = new StringBuilder(entry.getString("Name").orElseThrow(() -> new IllegalStateException("Name not found"))); var name = new StringBuilder(entry.getString("Name").orElseThrow(() -> new IllegalStateException("Name not found")));
var properties = entry.getCompound("Properties").orElseThrow(() -> new IllegalStateException("Properties not found")); var _properties = entry.getCompound("Properties");
if (!properties.isEmpty()) { if (_properties.isPresent()) {
var properties = _properties.get();
name.append("["); name.append("[");
var props = new ArrayList<String>(); var props = new ArrayList<String>();
for (String key : properties.getKeys()) { for (String key : properties.getKeys()) {