feat: elytra craftable
This commit is contained in:
8 files changed
+101
-4
No files matched your search
@@ -2,7 +2,6 @@ package com.github.zly2006.carpetslsaddition;
|
||||
|
||||
import carpet.api.settings.Rule;
|
||||
import carpet.api.settings.RuleCategory;
|
||||
import net.minecraft.block.RedstoneBlock;
|
||||
|
||||
import static com.github.zly2006.carpetslsaddition.ServerMain.CARPET_ID;
|
||||
|
||||
@@ -55,5 +54,5 @@ public class SLSCarpetSettings {
|
||||
public static boolean optimizedOnDragonRespawn = false;
|
||||
|
||||
@Rule(categories = {CARPET_ID, RuleCategory.FEATURE})
|
||||
public static boolean printStackTraceOnVillagerSpawn = false;
|
||||
public static boolean elytraCraftable = false;
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.datapack;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||
import net.minecraft.resource.ResourcePackProfile;
|
||||
import net.minecraft.resource.ResourceType;
|
||||
import net.minecraft.resource.VanillaResourcePackProvider;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.spongepowered.asm.mixin.Final;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.net.URISyntaxException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
|
||||
@Mixin(VanillaResourcePackProvider.class)
|
||||
public abstract class MixinVanillaResourcePackProvider {
|
||||
@Shadow protected abstract void forEachProfile(@Nullable Path namespacedPath, BiConsumer<String, Function<String, ResourcePackProfile>> consumer);
|
||||
|
||||
@Shadow @Final private ResourceType type;
|
||||
|
||||
@Inject(
|
||||
method = "forEachProfile(Ljava/util/function/BiConsumer;)V",
|
||||
at = @At("RETURN")
|
||||
)
|
||||
private void andMe(BiConsumer<String, Function<String, ResourcePackProfile>> consumer, CallbackInfo ci) throws URISyntaxException {
|
||||
if (type == ResourceType.SERVER_DATA) {
|
||||
Path path = Path.of(SLSCarpetSettings.class.getClassLoader().getResource("data/slsa/datapacks").toURI());
|
||||
this.forEachProfile(path, consumer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.github.zly2006.carpetslsaddition.mixin.elytra;
|
||||
|
||||
import com.github.zly2006.carpetslsaddition.SLSCarpetSettings;
|
||||
import net.minecraft.item.*;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
|
||||
@Mixin(ElytraItem.class)
|
||||
public abstract class MixinElytraItem extends Item implements Equipment {
|
||||
public MixinElytraItem(Settings settings) {
|
||||
super(settings);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasRecipeRemainder() {
|
||||
return SLSCarpetSettings.elytraCraftable;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getRecipeRemainder(ItemStack stack) {
|
||||
if (SLSCarpetSettings.elytraCraftable) {
|
||||
return stack;
|
||||
}
|
||||
else return ItemStack.EMPTY;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user