mirror of
https://github.com/ViaVersion/ViaFabricPlus.git
synced 2024-09-28 04:27:25 +02:00
Fixed loading priority issues
This commit is contained in:
parent
d5f50cc01f
commit
572f6203df
@ -19,6 +19,7 @@ package de.florianmichael.viafabricplus.definition;
|
||||
|
||||
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
|
||||
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
|
||||
import de.florianmichael.vialoadingbase.ViaLoadingBase;
|
||||
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
|
||||
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
|
||||
import net.minecraft.item.Item;
|
||||
@ -39,16 +40,19 @@ public class ItemReleaseVersionDefinition {
|
||||
public static void create() {
|
||||
INSTANCE = new ItemReleaseVersionDefinition();
|
||||
INSTANCE.load();
|
||||
INSTANCE.update(ViaLoadingBase.getClassWrapper().getTargetVersion());
|
||||
|
||||
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> {
|
||||
INSTANCE.currentMap.clear();
|
||||
INSTANCE.currentMap.addAll(Registries.ITEM.stream().filter(item -> INSTANCE.contains(item, protocolVersion)).toList());
|
||||
});
|
||||
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> INSTANCE.update(protocolVersion));
|
||||
}
|
||||
|
||||
private final Map<Item, ProtocolRange[]> itemMap = new HashMap<>();
|
||||
private final List<Item> currentMap = new ArrayList<>();
|
||||
|
||||
public void update(final ComparableProtocolVersion protocolVersion) {
|
||||
INSTANCE.currentMap.clear();
|
||||
INSTANCE.currentMap.addAll(Registries.ITEM.stream().filter(item -> INSTANCE.contains(item, protocolVersion)).toList());
|
||||
}
|
||||
|
||||
public boolean contains(final Item item, final ComparableProtocolVersion protocolVersion) {
|
||||
if (!itemMap.containsKey(item)) return true;
|
||||
|
||||
|
@ -1,29 +0,0 @@
|
||||
/*
|
||||
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
|
||||
* Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package de.florianmichael.viafabricplus.injection.access;
|
||||
|
||||
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
|
||||
|
||||
public interface IItemGroup_DisplayContext {
|
||||
|
||||
ComparableProtocolVersion viafabricplus_getVersion();
|
||||
void viafabricplus_setVersion(final ComparableProtocolVersion comparableProtocolVersion);
|
||||
|
||||
boolean viafabricplus_isState();
|
||||
void viafabricplus_setState(final boolean state);
|
||||
}
|
@ -1,64 +0,0 @@
|
||||
/*
|
||||
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
|
||||
* Copyright (C) 2021-2023 FlorianMichael/EnZaXD and contributors
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.item;
|
||||
|
||||
import de.florianmichael.viafabricplus.injection.access.IItemGroup_DisplayContext;
|
||||
import de.florianmichael.viafabricplus.settings.groups.GeneralSettings;
|
||||
import de.florianmichael.vialoadingbase.ViaLoadingBase;
|
||||
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.resource.featuretoggle.FeatureSet;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
|
||||
@Mixin(ItemGroup.DisplayContext.class)
|
||||
public class MixinItemGroup_DisplayContext implements IItemGroup_DisplayContext {
|
||||
|
||||
@Unique
|
||||
private static ComparableProtocolVersion viafabricplus_version;
|
||||
|
||||
@Unique
|
||||
private static boolean viafabricplus_state;
|
||||
|
||||
@Redirect(method = "doesNotMatch", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/featuretoggle/FeatureSet;equals(Ljava/lang/Object;)Z"))
|
||||
private boolean adjustLastVersionMatchCheck(FeatureSet instance, Object o) {
|
||||
return instance.equals(o) && viafabricplus_version == ViaLoadingBase.getClassWrapper().getTargetVersion() && viafabricplus_state == GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ComparableProtocolVersion viafabricplus_getVersion() {
|
||||
return viafabricplus_version;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void viafabricplus_setVersion(ComparableProtocolVersion comparableProtocolVersion) {
|
||||
viafabricplus_version = comparableProtocolVersion;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean viafabricplus_isState() {
|
||||
return viafabricplus_state;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void viafabricplus_setState(boolean state) {
|
||||
viafabricplus_state = state;
|
||||
}
|
||||
}
|
@ -17,7 +17,6 @@
|
||||
*/
|
||||
package de.florianmichael.viafabricplus.injection.mixin.fixes.minecraft.item;
|
||||
|
||||
import de.florianmichael.viafabricplus.injection.access.IItemGroup_DisplayContext;
|
||||
import de.florianmichael.viafabricplus.settings.groups.GeneralSettings;
|
||||
import de.florianmichael.vialoadingbase.ViaLoadingBase;
|
||||
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
|
||||
@ -31,19 +30,32 @@ import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.Unique;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.Redirect;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
@Mixin(ItemGroups.class)
|
||||
public class MixinItemGroups {
|
||||
public abstract class MixinItemGroups {
|
||||
|
||||
@Shadow @Nullable private static ItemGroup.@Nullable DisplayContext displayContext;
|
||||
|
||||
@Inject(method = "updateDisplayContext", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemGroups;updateEntries(Lnet/minecraft/item/ItemGroup$DisplayContext;)V", shift = At.Shift.BEFORE))
|
||||
private static void trackLastVersion(FeatureSet enabledFeatures, boolean operatorEnabled, RegistryWrapper.WrapperLookup lookup, CallbackInfoReturnable<Boolean> cir) {
|
||||
final IItemGroup_DisplayContext accessor = (IItemGroup_DisplayContext) (Object) displayContext;
|
||||
@Shadow
|
||||
protected static void updateEntries(ItemGroup.DisplayContext displayContext) {
|
||||
}
|
||||
@Unique
|
||||
private static ComparableProtocolVersion viafabricplus_version;
|
||||
|
||||
accessor.viafabricplus_setVersion(ViaLoadingBase.getClassWrapper().getTargetVersion());
|
||||
accessor.viafabricplus_setState(GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue());
|
||||
@Unique
|
||||
private static boolean viafabricplus_state;
|
||||
|
||||
@Inject(method = "updateDisplayContext", at = @At("HEAD"), cancellable = true)
|
||||
private static void trackLastVersion(FeatureSet enabledFeatures, boolean operatorEnabled, RegistryWrapper.WrapperLookup lookup, CallbackInfoReturnable<Boolean> cir) {
|
||||
if (viafabricplus_version != ViaLoadingBase.getClassWrapper().getTargetVersion() || viafabricplus_state != GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue()) {
|
||||
viafabricplus_version = ViaLoadingBase.getClassWrapper().getTargetVersion();
|
||||
viafabricplus_state = GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue();
|
||||
|
||||
displayContext = new ItemGroup.DisplayContext(enabledFeatures, operatorEnabled, lookup);
|
||||
updateEntries(displayContext);
|
||||
|
||||
cir.setReturnValue(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -144,7 +144,6 @@
|
||||
"fixes.jsonwebtoken.MixinClasses",
|
||||
"fixes.jsonwebtoken.MixinDefaultCompressionCodecResolver",
|
||||
"fixes.jsonwebtoken.MixinDefaultJwtParserBuilder",
|
||||
"fixes.minecraft.item.MixinItemGroup_DisplayContext",
|
||||
"fixes.viabedrock.MixinBedrockProtocol",
|
||||
"fixes.viabedrock.MixinJoinPackets"
|
||||
],
|
||||
|
Loading…
Reference in New Issue
Block a user