From 22c09ea4872e9db833a4403bb3b18a5fd0c030d2 Mon Sep 17 00:00:00 2001 From: Nicolas Adamoglou Date: Tue, 17 Dec 2019 18:28:15 +0100 Subject: [PATCH] Update to 1.15.1 --- build.gradle | 9 +++-- gradle.properties | 13 ++++--- .../tesseract/api/DimensionRegistry.java | 2 +- .../dev/vatuu/tesseract/impl/Tesseract.java | 2 ++ .../impl/cmd/ChangeDimensionCommand.java | 36 +++++++++++++++++++ .../impl/cmd/RegisterTestCommand.java | 9 +++-- .../extensions/mixins/BeeEntityMixin.java | 30 ++++++++++++++++ .../mixins/MinecraftServerMixin.java | 1 + .../impl/world/DimensionRegistryImpl.java | 5 +-- .../impl/world/DimensionSettings.java | 6 +++- .../impl/world/TesseractDimension.java | 2 ++ .../impl/world/TesseractDimensionType.java | 2 +- src/main/resources/tesseract.mixins.json | 3 +- 13 files changed, 103 insertions(+), 17 deletions(-) create mode 100644 src/main/java/dev/vatuu/tesseract/impl/cmd/ChangeDimensionCommand.java create mode 100644 src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/BeeEntityMixin.java diff --git a/build.gradle b/build.gradle index f985b22..7350b63 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.2.6-SNAPSHOT' + id 'fabric-loom' version '0.2.7-SNAPSHOT' id 'maven-publish' } @@ -20,8 +20,11 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_build}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" - modImplementation "net.fabricmc.fabric-api:fabric-events-lifecycle-v0:${project.cmd_version}" - modImplementation "net.fabricmc.fabric-api:fabric-api-base:${project.base_version}" + modImplementation "net.fabricmc.fabric-api:fabric-api:${project.api_version}" + //modImplementation "net.fabricmc.fabric-api:fabric-api-base:${project.base_version}" + //modImplementation "net.fabricmc.fabric-api:fabric-events-lifecycle-v0:${project.event_version}" + //modImplementation "net.fabricmc.fabric-api:fabric-commands-v0:${project.cmd_version}" + //modImplementation "net.fabricmc.fabric-api:fabric-dimensions-v1:${project.dim_version}" } processResources { diff --git a/gradle.properties b/gradle.properties index 8fd61f6..9b16ed0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx2G # Fabric Properties -minecraft_version=1.15-pre1 -yarn_build=3 -loader_version=0.7.1+build.173 +minecraft_version=1.15.1 +yarn_build=1 +loader_version=0.7.2+build.175 # Mod Properties mod_version = 0.3 @@ -12,5 +12,8 @@ maven_group = dev.vatuu archives_base_name = tesseract # Dependencies -cmd_version=0.1.1+eff46b3d42 -base_version=0.1.0+b494ebeb42 +api_version=0.4.24+build.279-1.15 +event_version=0.1.2+b7f9825de8 +base_version=0.1.2+b7f9825de4 +cmd_version=0.1.2+b7f9825de4 +dim_version=0.2.2+b7f9825de4 diff --git a/src/main/java/dev/vatuu/tesseract/api/DimensionRegistry.java b/src/main/java/dev/vatuu/tesseract/api/DimensionRegistry.java index a34db85..73fe5cd 100644 --- a/src/main/java/dev/vatuu/tesseract/api/DimensionRegistry.java +++ b/src/main/java/dev/vatuu/tesseract/api/DimensionRegistry.java @@ -3,7 +3,7 @@ import dev.vatuu.tesseract.impl.world.DimensionRegistryImpl; import net.minecraft.util.Identifier; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeAccessType; +import net.minecraft.world.biome.source.BiomeAccessType; import net.minecraft.world.dimension.Dimension; import net.minecraft.world.dimension.DimensionType; diff --git a/src/main/java/dev/vatuu/tesseract/impl/Tesseract.java b/src/main/java/dev/vatuu/tesseract/impl/Tesseract.java index 72c15e6..af88d56 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/Tesseract.java +++ b/src/main/java/dev/vatuu/tesseract/impl/Tesseract.java @@ -1,5 +1,6 @@ package dev.vatuu.tesseract.impl; +import dev.vatuu.tesseract.impl.cmd.ChangeDimensionCommand; import dev.vatuu.tesseract.impl.cmd.RegisterTestCommand; import dev.vatuu.tesseract.impl.cmd.WorldResetCommand; import net.fabricmc.api.ModInitializer; @@ -13,6 +14,7 @@ public class Tesseract implements ModInitializer { @Override public void onInitialize() { ServerStartCallback.EVENT.register((ci) -> { + ChangeDimensionCommand.register(ci.getCommandManager().getDispatcher()); RegisterTestCommand.register(ci.getCommandManager().getDispatcher()); WorldResetCommand.register(ci.getCommandManager().getDispatcher()); }); diff --git a/src/main/java/dev/vatuu/tesseract/impl/cmd/ChangeDimensionCommand.java b/src/main/java/dev/vatuu/tesseract/impl/cmd/ChangeDimensionCommand.java new file mode 100644 index 0000000..edda120 --- /dev/null +++ b/src/main/java/dev/vatuu/tesseract/impl/cmd/ChangeDimensionCommand.java @@ -0,0 +1,36 @@ +package dev.vatuu.tesseract.impl.cmd; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import net.fabricmc.fabric.api.dimension.v1.FabricDimensions; +import net.minecraft.command.arguments.BlockPosArgumentType; +import net.minecraft.command.arguments.DimensionArgumentType; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.server.command.CommandManager; +import net.minecraft.server.command.ServerCommandSource; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.dimension.DimensionType; + +public class ChangeDimensionCommand { + + public static void register(CommandDispatcher dispatcher){ + dispatcher.register( + CommandManager.literal("changeDimension") + .requires(src -> src.hasPermissionLevel(4)) + .executes(ctx -> activate(ctx, DimensionType.OVERWORLD, new BlockPos(0, 64, 0))) + .then(CommandManager.argument("dim", DimensionArgumentType.dimension()) + .executes(ctx -> activate(ctx, DimensionArgumentType.getDimensionArgument(ctx, "dim"), new BlockPos(0, 64, 0))) + .then(CommandManager.argument("pos", BlockPosArgumentType.blockPos()) + .executes(ctx -> activate(ctx, DimensionArgumentType.getDimensionArgument(ctx, "dim"),BlockPosArgumentType.getBlockPos(ctx, "pos"))) + ) + )); + } + + private static int activate(CommandContext context, DimensionType type, BlockPos pos) throws CommandSyntaxException { + PlayerEntity entity = context.getSource().getPlayer(); + FabricDimensions.teleport(entity, type); + entity.teleport(pos.getX(), pos.getY(), pos.getZ()); + return 0; + } +} diff --git a/src/main/java/dev/vatuu/tesseract/impl/cmd/RegisterTestCommand.java b/src/main/java/dev/vatuu/tesseract/impl/cmd/RegisterTestCommand.java index f489514..9707b5d 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/cmd/RegisterTestCommand.java +++ b/src/main/java/dev/vatuu/tesseract/impl/cmd/RegisterTestCommand.java @@ -11,7 +11,8 @@ import net.minecraft.server.command.CommandManager; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.util.Identifier; -import net.minecraft.world.biome.HorizontalVoronoiBiomeAccessType; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.biome.source.HorizontalVoronoiBiomeAccessType; import net.minecraft.world.dimension.DimensionType; public class RegisterTestCommand { @@ -31,8 +32,10 @@ public static void register(CommandDispatcher dispatcher){ private static int activate(CommandContext src, String id, boolean save) throws CommandSyntaxException { DimensionType dim = DimensionRegistry.getInstance().registerDimensionType(new Identifier(Tesseract.MOD_ID, id), true, (w, d) -> new DimensionBuilderImpl() - .bedsExplode(true) - .vaporizeWater(true) + .bedsExplode(true) + .vaporizeWater(true) + .beesExplode(true) + .forcedSpawnPoint(new BlockPos(0, 64, 0)) .build(w, d), HorizontalVoronoiBiomeAccessType.INSTANCE); return 1; } diff --git a/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/BeeEntityMixin.java b/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/BeeEntityMixin.java new file mode 100644 index 0000000..18d6be1 --- /dev/null +++ b/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/BeeEntityMixin.java @@ -0,0 +1,30 @@ +package dev.vatuu.tesseract.impl.extensions.mixins; + +import dev.vatuu.tesseract.impl.world.TesseractDimension; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.damage.DamageSource; +import net.minecraft.entity.damage.EntityDamageSource; +import net.minecraft.entity.passive.AnimalEntity; +import net.minecraft.entity.passive.BeeEntity; +import net.minecraft.world.World; +import net.minecraft.world.explosion.Explosion; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(BeeEntity.class) +public abstract class BeeEntityMixin extends AnimalEntity { + + public BeeEntityMixin(EntityType type, World world){ + super(type, world); + } + + @Inject(method = "damage", at = @At(value = "RETURN")) + public void damage(DamageSource src, float amount, CallbackInfoReturnable info){ + if(amount > 0 && src instanceof EntityDamageSource) + if(((TesseractDimension)this.getEntityWorld().dimension).getSettings().isBeesExplode()) + this.kill(); + this.getEntityWorld().createExplosion(this, this.getPos().x, this.getPos().y, this.getPos().z, 2.3F, true, Explosion.DestructionType.BREAK); + } +} diff --git a/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/MinecraftServerMixin.java b/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/MinecraftServerMixin.java index 81601f3..090cc72 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/MinecraftServerMixin.java +++ b/src/main/java/dev/vatuu/tesseract/impl/extensions/mixins/MinecraftServerMixin.java @@ -3,6 +3,7 @@ import dev.vatuu.tesseract.api.DimensionState; import dev.vatuu.tesseract.impl.world.DimensionRegistryImpl; import dev.vatuu.tesseract.impl.world.TesseractDimension; +import net.minecraft.entity.passive.BeeEntity; import net.minecraft.server.MinecraftServer; import net.minecraft.server.WorldGenerationProgressListener; import net.minecraft.server.world.SecondaryServerWorld; diff --git a/src/main/java/dev/vatuu/tesseract/impl/world/DimensionRegistryImpl.java b/src/main/java/dev/vatuu/tesseract/impl/world/DimensionRegistryImpl.java index d527843..9fcb958 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/world/DimensionRegistryImpl.java +++ b/src/main/java/dev/vatuu/tesseract/impl/world/DimensionRegistryImpl.java @@ -3,10 +3,11 @@ import dev.vatuu.tesseract.api.DimensionRegistry; import dev.vatuu.tesseract.impl.extensions.mixins.SimpleRegistryMixin; import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; +import net.fabricmc.fabric.api.dimension.v1.FabricDimensionType; import net.minecraft.util.Identifier; import net.minecraft.util.registry.Registry; import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeAccessType; +import net.minecraft.world.biome.source.BiomeAccessType; import net.minecraft.world.dimension.Dimension; import net.minecraft.world.dimension.DimensionType; @@ -28,7 +29,7 @@ public static DimensionRegistryImpl getInstance(){ } public DimensionType registerDimensionType(Identifier name, boolean hasSkyLight, BiFunction factory, BiomeAccessType biomeAccessor){ - int id = registered.size() + 3; + int id = 5 + registered.size(); TesseractDimensionType t = new TesseractDimensionType(id, name.getPath(), hasSkyLight, factory, biomeAccessor); registered.put(id, t); return Registry.register(Registry.DIMENSION, id, name.toString(), t); diff --git a/src/main/java/dev/vatuu/tesseract/impl/world/DimensionSettings.java b/src/main/java/dev/vatuu/tesseract/impl/world/DimensionSettings.java index 55ef5dd..0f67561 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/world/DimensionSettings.java +++ b/src/main/java/dev/vatuu/tesseract/impl/world/DimensionSettings.java @@ -16,7 +16,7 @@ import java.util.function.Function; -final class DimensionSettings { +public final class DimensionSettings { boolean shouldBedsExplode = false; boolean hasVisibleSky = false; @@ -40,4 +40,8 @@ final class DimensionSettings { return ChunkGeneratorType.FLAT.create(world, BiomeSourceType.FIXED.applyConfig(biomeConfig), config); }; + + public boolean isBeesExplode(){ + return beesExplode; + } } diff --git a/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimension.java b/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimension.java index 1887fa1..41b5077 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimension.java +++ b/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimension.java @@ -43,4 +43,6 @@ public class TesseractDimension extends OverworldDimension { public DimensionState getSaveState() { return saveState; } public void setSaveState(DimensionState state) { saveState = state; } + + public DimensionSettings getSettings() { return settings; } } diff --git a/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimensionType.java b/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimensionType.java index ba27e85..cf5299a 100644 --- a/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimensionType.java +++ b/src/main/java/dev/vatuu/tesseract/impl/world/TesseractDimensionType.java @@ -2,7 +2,7 @@ import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeAccessType; +import net.minecraft.world.biome.source.BiomeAccessType; import net.minecraft.world.dimension.Dimension; import net.minecraft.world.dimension.DimensionType; diff --git a/src/main/resources/tesseract.mixins.json b/src/main/resources/tesseract.mixins.json index 088a3c5..7e59cb1 100644 --- a/src/main/resources/tesseract.mixins.json +++ b/src/main/resources/tesseract.mixins.json @@ -7,6 +7,7 @@ "mixins": [ "MinecraftServerMixin", "SimpleRegistryMixin", - "ServerChunkManagerMixin" + "ServerChunkManagerMixin", + "BeeEntityMixin" ] }