Skip to content

Commit 9400da0

Browse files
committed
updated to 26.1
1 parent 9c1c4cf commit 9400da0

12 files changed

Lines changed: 103 additions & 101 deletions

gradle.properties

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@ org.gradle.parallel=true
55
# Fabric Properties
66
# check these on https://fabricmc.net/develop
77
minecraft_version=26.1
8-
additional_supported_mc_versions=1.21.6,1.21.7,1.21.8,1.21.9,1.21.10,1.21.11
9-
#yarn_mappings=1.21.11+build.3
8+
additional_supported_mc_versions=
109
loader_version=0.18.5
1110

1211

src/main/java/de/linusdev/OneWorldFolderModClient.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,16 @@
22

33
import com.mojang.logging.LogUtils;
44
import de.linusdev.data.parser.exceptions.ParseException;
5-
import de.linusdev.mixin.client.MinecraftClientAccessor;
5+
import de.linusdev.mixin.client.MinecraftAccessor;
66
import de.linusdev.oneworldfolder.ITitleScreenMixin;
77
import de.linusdev.oneworldfolder.config.Config;
88
import net.fabricmc.api.ClientModInitializer;
99
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
1010
import net.fabricmc.fabric.api.event.Event;
11-
import net.minecraft.client.MinecraftClient;
12-
import net.minecraft.client.gui.screen.TitleScreen;
13-
import net.minecraft.util.Identifier;
14-
import net.minecraft.world.level.storage.LevelStorage;
11+
import net.minecraft.client.Minecraft;
12+
import net.minecraft.client.gui.screens.TitleScreen;
13+
import net.minecraft.resources.Identifier;
14+
import net.minecraft.world.level.storage.LevelStorageSource;
1515
import org.jetbrains.annotations.Nullable;
1616
import org.slf4j.Logger;
1717
import org.slf4j.LoggerFactory;
@@ -22,13 +22,13 @@
2222

2323
public class OneWorldFolderModClient implements ClientModInitializer {
2424

25-
public static final Identifier OWF_TITLE_SCREEN_IDENTIFIER = Identifier.of("oneworldfolder", "titlescreen");
26-
public static final Identifier OWF_ICON_ID = Identifier.of("oneworldfolder", "icon/owf-icon-16");
27-
public static final Identifier NO_SMALL_OWF_ICON_ID = Identifier.of("oneworldfolder", "icon/no-small-owf-icon-16");
25+
public static final Identifier OWF_TITLE_SCREEN_IDENTIFIER = Identifier.fromNamespaceAndPath("oneworldfolder", "titlescreen");
26+
public static final Identifier OWF_ICON_ID = Identifier.fromNamespaceAndPath("oneworldfolder", "icon/owf-icon-16");
27+
public static final Identifier NO_SMALL_OWF_ICON_ID = Identifier.fromNamespaceAndPath("oneworldfolder", "icon/no-small-owf-icon-16");
2828

2929
public static final Logger LOG = LoggerFactory.getLogger("oneworldfolder");
3030

31-
public static LevelStorage customLevelStorage;
31+
public static LevelStorageSource customLevelStorage;
3232
public static boolean useCustomLevelStorage = false;
3333

3434
public static Config config = reloadConfig();
@@ -38,11 +38,11 @@ public void onInitializeClient() {
3838
if(config == null) return;
3939

4040
if(config.isSupportsCustomLevelStorage()) {
41-
customLevelStorage = new LevelStorage(
41+
customLevelStorage = new LevelStorageSource(
4242
config.getExternalMinecraftDirectory().resolve(config.getExternalSavesDirName()),
4343
config.getExternalMinecraftDirectory().resolve("backups"),
44-
LevelStorage.createSymlinkFinder(config.getExternalMinecraftDirectory().resolve("allowed_symlinks.txt")),
45-
((MinecraftClientAccessor)MinecraftClient.getInstance()).getDataFixer()
44+
LevelStorageSource.parseValidator(config.getExternalMinecraftDirectory().resolve("allowed_symlinks.txt")),
45+
((MinecraftAccessor) Minecraft.getInstance()).getFixerUpper()
4646
);
4747
}
4848

@@ -56,7 +56,7 @@ public void onInitializeClient() {
5656

5757
public static Config reloadConfig() {
5858
try {
59-
return config = Config.from(getDefaultMinecraftFolder(), MinecraftClient.getInstance().runDirectory.toPath());
59+
return config = Config.from(getDefaultMinecraftFolder(), Minecraft.getInstance().gameDirectory.toPath());
6060
} catch (IOException | ParseException e) {
6161
LogUtils.getLogger().error("Cannot Load config: {}", e.getMessage());
6262
return null;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package de.linusdev.mixin.client;
2+
3+
import com.mojang.datafixers.DataFixer;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.world.level.storage.LevelStorageSource;
6+
import org.spongepowered.asm.mixin.Mixin;
7+
import org.spongepowered.asm.mixin.gen.Accessor;
8+
9+
@Mixin(Minecraft.class)
10+
public interface MinecraftAccessor {
11+
12+
@Accessor("fixerUpper")
13+
public DataFixer getFixerUpper();
14+
15+
16+
}

src/main/java/de/linusdev/mixin/client/MinecraftClientAccessor.java

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/main/java/de/linusdev/mixin/client/MinecraftClientMixin.java renamed to src/main/java/de/linusdev/mixin/client/MinecraftMixin.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
package de.linusdev.mixin.client;
22

33
import de.linusdev.OneWorldFolderModClient;
4-
import net.minecraft.client.MinecraftClient;
5-
import net.minecraft.server.integrated.IntegratedServerLoader;
6-
import net.minecraft.world.level.storage.LevelStorage;
4+
import net.minecraft.client.Minecraft;
5+
import net.minecraft.client.gui.screens.worldselection.WorldOpenFlows;
6+
import net.minecraft.world.level.storage.LevelStorageSource;
77
import org.spongepowered.asm.mixin.Final;
88
import org.spongepowered.asm.mixin.Mixin;
99
import org.spongepowered.asm.mixin.Overwrite;
1010
import org.spongepowered.asm.mixin.Shadow;
1111

12-
@Mixin(MinecraftClient.class)
13-
public class MinecraftClientMixin {
12+
@Mixin(Minecraft.class)
13+
public class MinecraftMixin {
1414

1515
@Shadow
1616
@Final
17-
private LevelStorage levelStorage;
17+
private LevelStorageSource levelSource;
1818

1919
/**
2020
* @author LinusDev
2121
* @reason required to swap level storage because it is a final variable
2222
*/
2323
@Overwrite
24-
public LevelStorage getLevelStorage() {
25-
return OneWorldFolderModClient.useCustomLevelStorage ? OneWorldFolderModClient.customLevelStorage : this.levelStorage;
24+
public LevelStorageSource getLevelSource() {
25+
return OneWorldFolderModClient.useCustomLevelStorage ? OneWorldFolderModClient.customLevelStorage : this.levelSource;
2626
}
2727

2828
/**
2929
* @author LinusDev
3030
* @reason required to swap level storage because it is a final variable
3131
*/
3232
@Overwrite
33-
public IntegratedServerLoader createIntegratedServerLoader() {
34-
return new IntegratedServerLoader(MinecraftClient.getInstance(), getLevelStorage());
33+
public WorldOpenFlows createWorldOpenFlows() {
34+
return new WorldOpenFlows(Minecraft.getInstance(), getLevelSource());
3535
}
3636
}

src/main/java/de/linusdev/mixin/client/ResourcePackManagerMixin.java renamed to src/main/java/de/linusdev/mixin/client/PackRepositoryMixin.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package de.linusdev.mixin.client;
22

33
import de.linusdev.OneWorldFolderModClient;
4-
import net.minecraft.resource.*;
5-
import net.minecraft.util.path.SymlinkFinder;
6-
import org.apache.commons.io.filefilter.SymbolicLinkFileFilter;
4+
import net.minecraft.server.packs.PackType;
5+
import net.minecraft.server.packs.repository.*;
6+
import net.minecraft.world.level.validation.DirectoryValidator;
77
import org.slf4j.Logger;
88
import org.slf4j.LoggerFactory;
99
import org.spongepowered.asm.mixin.*;
@@ -16,32 +16,34 @@
1616
import java.util.Map;
1717
import java.util.Set;
1818

19-
@Mixin(ResourcePackManager.class)
20-
public abstract class ResourcePackManagerMixin {
19+
20+
21+
@Mixin(PackRepository.class)
22+
public abstract class PackRepositoryMixin {
2123
@Unique
2224
private static final Logger LOGGER = LoggerFactory.getLogger("ResourcePackManagerMixin");
2325

2426
@Shadow
2527
@Final
2628
@Mutable
27-
private Set<ResourcePackProvider> providers;
29+
private Set<RepositorySource> sources;
2830

2931
@Shadow
30-
private Map<String, ResourcePackProfile> profiles;
32+
private Map<String, Pack> available;
3133

3234
@Inject(method = "<init>", at = @At("RETURN"))
33-
public void construct(ResourcePackProvider[] resourcePackProviders, CallbackInfo info) {
35+
public void construct(RepositorySource[] resourcePackProviders, CallbackInfo info) {
3436
// Use a LinkedHashSet to preserve ordering
35-
providers = new LinkedHashSet<>(providers);
37+
sources = new LinkedHashSet<>(sources);
3638

3739
if(OneWorldFolderModClient.config == null) return;
3840

3941
for (String additionalPackDir : OneWorldFolderModClient.config.getAdditionalPackDirs()) {
40-
providers.add(new FileResourcePackProvider(
42+
sources.add(new net.minecraft.server.packs.repository.FolderRepositorySource(
4143
Paths.get(additionalPackDir),
42-
ResourceType.CLIENT_RESOURCES,
43-
ResourcePackSource.NONE,
44-
new SymlinkFinder(path -> true)
44+
PackType.CLIENT_RESOURCES,
45+
PackSource.DEFAULT,
46+
new DirectoryValidator(path -> true)
4547
));
4648
}
4749

src/main/java/de/linusdev/mixin/client/SelectWorldScreenMixin.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
import de.linusdev.OneWorldFolderModClient;
44
import de.linusdev.oneworldfolder.MySelectWorldScreen;
5-
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
5+
import net.minecraft.client.gui.screens.worldselection.SelectWorldScreen;
66
import org.spongepowered.asm.mixin.Mixin;
77
import org.spongepowered.asm.mixin.injection.At;
88
import org.spongepowered.asm.mixin.injection.Inject;
99
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
1010

11+
1112
@Mixin(SelectWorldScreen.class)
1213
public class SelectWorldScreenMixin {
1314

src/main/java/de/linusdev/mixin/client/TitleScreenMixin.java

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44
import de.linusdev.oneworldfolder.ErrorDialogScreen;
55
import de.linusdev.oneworldfolder.ITitleScreenMixin;
66
import de.linusdev.oneworldfolder.MySelectWorldScreen;
7-
import net.minecraft.client.gui.screen.Screen;
8-
import net.minecraft.client.gui.screen.TitleScreen;
9-
import net.minecraft.client.gui.screen.world.SelectWorldScreen;
10-
import net.minecraft.client.gui.widget.ButtonWidget;
11-
import net.minecraft.client.gui.widget.TextIconButtonWidget;
12-
import net.minecraft.text.Text;
7+
import net.minecraft.client.gui.screens.Screen;
8+
import net.minecraft.client.gui.screens.TitleScreen;
9+
import net.minecraft.client.gui.screens.worldselection.SelectWorldScreen;
10+
import net.minecraft.client.gui.components.Button;
11+
import net.minecraft.client.gui.components.SpriteIconButton;
12+
import net.minecraft.network.chat.Component;
1313
import org.spongepowered.asm.mixin.Mixin;
1414
import org.spongepowered.asm.mixin.Unique;
1515

1616
@Mixin(TitleScreen.class)
1717
public abstract class TitleScreenMixin extends Screen implements ITitleScreenMixin {
1818

19-
protected TitleScreenMixin(Text title) {
19+
protected TitleScreenMixin(Component title) {
2020
super(title);
2121
}
2222

@@ -27,10 +27,10 @@ protected TitleScreenMixin(Text title) {
2727
//reduce size of the singlePlayer button
2828
int x = 0;
2929
int y = 0;
30-
Text singlePlayerText = Text.translatable("menu.singleplayer");
30+
Component singlePlayerText = Component.translatable("menu.singleplayer");
3131

3232
for(var c : this.children()) {
33-
if(c instanceof ButtonWidget b) {
33+
if(c instanceof Button b) {
3434
if(b.getMessage().equals(singlePlayerText)) {
3535

3636
if(!OneWorldFolderModClient.config.isReplaceSingleplayerButton())
@@ -41,33 +41,33 @@ protected TitleScreenMixin(Text title) {
4141
y = b.getY();
4242

4343
if(OneWorldFolderModClient.config.isReplaceSingleplayerButton()) {
44-
this.addDrawableChild(
45-
TextIconButtonWidget.builder(
46-
Text.translatable("menu.singleplayer"),
44+
this.addRenderableWidget(
45+
SpriteIconButton.builder(
46+
Component.translatable("menu.singleplayer"),
4747
(button) -> openMyWorldSelectScreen(true),
4848
false
4949
)
50-
.texture(OneWorldFolderModClient.OWF_ICON_ID, 15, 15)
51-
.dimension(b.getWidth(), b.getHeight())
50+
.sprite(OneWorldFolderModClient.OWF_ICON_ID, 15, 15)
51+
.size(b.getWidth(), b.getHeight())
5252
.build()
5353
).setPosition(b.getX(), b.getY());
54-
this.remove(b);
54+
this.removeWidget(b);
5555

5656
} else if(OneWorldFolderModClient.config.isSwapOwfButtonAndSingleplayerButton()) {
57-
this.addDrawableChild(
58-
ButtonWidget.builder(
59-
Text.translatable("menu.singleplayer"),
57+
this.addRenderableWidget(
58+
Button.builder(
59+
Component.translatable("menu.singleplayer"),
6060
(button) -> openMyWorldSelectScreen(true)
6161
)
62-
.dimensions(
62+
.bounds(
6363
b.getX(),
6464
b.getY(),
6565
b.getWidth(),
6666
b.getHeight()
6767
)
6868
.build()
6969
);
70-
this.remove(b);
70+
this.removeWidget(b);
7171

7272
}
7373

@@ -81,26 +81,26 @@ protected TitleScreenMixin(Text title) {
8181

8282
if(OneWorldFolderModClient.config.isSwapOwfButtonAndSingleplayerButton()) {
8383
//add no-one-world-folder button
84-
this.addDrawableChild(
85-
TextIconButtonWidget.builder(
86-
Text.of(""),
87-
(button) -> this.client.setScreen(new SelectWorldScreen(this)),
84+
this.addRenderableWidget(
85+
SpriteIconButton.builder(
86+
Component.literal(""),
87+
(button) -> this.minecraft.setScreen(new SelectWorldScreen(this)),
8888
true
8989
)
9090
.width(20)
91-
.texture(OneWorldFolderModClient.NO_SMALL_OWF_ICON_ID, 15, 15)
91+
.sprite(OneWorldFolderModClient.NO_SMALL_OWF_ICON_ID, 15, 15)
9292
.build()
9393
).setPosition(x, y);
9494
} else {
9595
//add one-world-folder button
96-
this.addDrawableChild(
97-
TextIconButtonWidget.builder(
98-
Text.of(""),
96+
this.addRenderableWidget(
97+
SpriteIconButton.builder(
98+
Component.literal(""),
9999
(button) -> openMyWorldSelectScreen(true),
100100
true
101101
)
102102
.width(20)
103-
.texture(OneWorldFolderModClient.OWF_ICON_ID, 15, 15)
103+
.sprite(OneWorldFolderModClient.OWF_ICON_ID, 15, 15)
104104
.build()
105105
).setPosition(x, y);
106106
}
@@ -119,11 +119,11 @@ public void openMyWorldSelectScreen(boolean tryReload) {
119119
}
120120

121121
OneWorldFolderModClient.LOG.error("One world folder error :( {}", OneWorldFolderModClient.config.getDebugString());
122-
this.client.setScreen(new ErrorDialogScreen(() -> this.client.setScreen(this)));
122+
this.minecraft.setScreen(new ErrorDialogScreen(() -> this.minecraft.setScreen(this)));
123123
return;
124124
}
125125

126-
this.client.setScreen(new MySelectWorldScreen(this));
126+
this.minecraft.setScreen(new MySelectWorldScreen(this));
127127

128128
}
129129
}

0 commit comments

Comments
 (0)