diff --git a/build.gradle b/build.gradle index d9acc238..8de809ef 100644 --- a/build.gradle +++ b/build.gradle @@ -250,6 +250,9 @@ repositories { name = 'mali' url = "https://raw.github.com/MegumiKasuga/kasuga-maven/mali_1.1.0/" } + maven { url = "https://maven.createmod.net" } // Create, Ponder, Flywheel + maven { url = "https://maven.ithundxr.dev/mirror" } // Registrate + maven { url = "https://raw.githubusercontent.com/Fuzss/modresources/main/maven/" } // ForgeConfigAPIPort mavenLocal() flatDir { @@ -267,9 +270,13 @@ dependencies { // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft 'net.minecraftforge:forge:1.20.1-47.1.3' - implementation fg.deobf("com.simibubi.create:create-${create_minecraft_version}:${create_version}:slim") { transitive = false } - implementation fg.deobf("com.jozufozu.flywheel:flywheel-forge-${flywheel_minecraft_version}:${flywheel_version}") - implementation fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}") + implementation(fg.deobf("com.simibubi.create:create-${minecraft_version}:${create_version}:slim") { transitive = false }) + implementation(fg.deobf("net.createmod.ponder:Ponder-Forge-${minecraft_version}:${ponder_version}")) + compileOnly(fg.deobf("dev.engine-room.flywheel:flywheel-forge-api-${minecraft_version}:${flywheel_version}")) + runtimeOnly(fg.deobf("dev.engine-room.flywheel:flywheel-forge-${minecraft_version}:${flywheel_version}")) + implementation(fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")) + compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1")) + implementation("io.github.llamalad7:mixinextras-forge:0.4.1") // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // // at runtime, use the full JEI jar // runtimeOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}") @@ -357,10 +364,6 @@ dependencies { shadedLib 'org.apache.httpcomponents:httpcore:4.4.14' shadedLib 'org.apache.httpcomponents:httpclient:4.5.13' - compileOnly(annotationProcessor("io.github.llamalad7:mixinextras-common:0.4.1")) - implementation(jarJar("io.github.llamalad7:mixinextras-forge:0.4.1")) { - jarJar.ranged(it, "[0.4.1,)") - } // testImplementation "edu.carole:Mixed-Arithmetic-Logic-Interpreter:1.0.0" diff --git a/gradle.properties b/gradle.properties index a76f639d..0df4801f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,13 +37,15 @@ mc_version=1.20.1 jarVersion = 1.20.1-0.21.4-create -create_minecraft_version = 1.20.1 -flywheel_minecraft_version = 1.20.1 -create_version = 0.5.1.j-55 -flywheel_version = 0.6.11-13 - +create_version = 6.0.8-289 +ponder_version = 1.0.91 +flywheel_version = 1.0.5 registrate_version = MC1.20-1.3.3 - +#Proxy for parchment mapping +systemProp.http.proxyHost=127.0.0.1 +systemProp.http.proxyPort=7897 +systemProp.https.proxyHost=127.0.0.1 +systemProp.https.proxyPort=7897 # ========================= # compile options # ========================= diff --git a/gradlew.bat b/gradlew.bat index f127cfd4..fe64f3d1 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -33,7 +33,7 @@ set APP_HOME=%DIRNAME% for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" "-Dnet.minecraftforge.gradle.check.certs=false" "-Xlint:deprecation" "-Xlint:unchecked" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/src/generated/resources/kasuga.mixins.json b/src/generated/resources/kasuga.mixins.json index 503eb8d4..b491c842 100644 --- a/src/generated/resources/kasuga.mixins.json +++ b/src/generated/resources/kasuga.mixins.json @@ -6,32 +6,31 @@ "refmap": "kasuga.refmap.json", "mixins": [ "MixinNbtUtils", + "MixinStationBlockEntity", "MultiPackResourceManagerAccessor", "ReloadableResourceManagerAccessor", - "resources.DelegatingPackResourcesMixin", - "resources.FilePackResourceMixin", - "resources.PathPackResourceMixin", - "MixinStationBlockEntity", + "create.EdgeDataMixin", "create.GlobalRailwayManagerMixin", - "create.TrackGraphMixin", - "create.TrackGraphAccessor", "create.SignalPropagatorMixin", - "create.EdgeDataMixin", - "create.TrainMixin" + "create.TrackGraphAccessor", + "create.TrackGraphMixin", + "create.TrackTargetingClientMixin", + "create.TrainMixin", + "resources.DelegatingPackResourcesMixin", + "resources.FilePackResourceMixin", + "resources.PathPackResourceMixin" ], "client": [ + "client.MixinBezierConnection", "client.MixinBlockModel$Deserializer", "client.MixinBlockModelBinding", "client.MixinBlockModelShaper", - "client.MixinTextureManager", - "client.MixinBezierConnection", "client.MixinBlockRenderDispatcher", "client.MixinCarriageContraptionEntityRenderer", - "client.MixinStationBlockEntityClient", "client.MixinDirectoryLister", - "client.MixinTextureManager", - "client.MixinBlockModelShaper", - "client.MixinGameRenderer" + "client.MixinGameRenderer", + "client.MixinStationBlockEntityClient", + "client.MixinTextureManager" ], "minVersion": "0.8" } diff --git a/src/main/java/kasuga/lib/KasugaLib.java b/src/main/java/kasuga/lib/KasugaLib.java index 724e71b8..10daf3d6 100644 --- a/src/main/java/kasuga/lib/KasugaLib.java +++ b/src/main/java/kasuga/lib/KasugaLib.java @@ -8,24 +8,9 @@ import kasuga.lib.core.client.frontend.webserver.GuiWebServerEndpoint; import kasuga.lib.core.javascript.commands.JavascriptModuleCommands; import kasuga.lib.core.packets.AllPackets; -import kasuga.lib.core.util.Envs; -import kasuga.lib.core.resource.KasugaPackResource; import kasuga.lib.core.webserver.KasugaHttpServer; -import kasuga.lib.example_env.ExampleMain; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.mixins.mixin.MultiPackResourceManagerAccessor; -import kasuga.lib.mixins.mixin.ReloadableResourceManagerAccessor; import lombok.Getter; -import net.minecraft.client.Minecraft; -import net.minecraft.core.RegistryAccess; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.ReloadableServerResources; -import net.minecraft.server.WorldLoader; -import net.minecraft.server.packs.PackType; -import net.minecraft.server.packs.resources.*; -import net.minecraft.world.level.storage.LevelStorageSource; -import net.minecraft.world.level.storage.WorldData; -import kasuga.lib.example_env.ExampleMain; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.DistExecutor; @@ -56,8 +41,6 @@ public KasugaLib() { FrontendCommands.invoke(); KasugaLibConfig.invoke(); KasugaHttpServer.invoke(); - if (Envs.isDevEnvironment()) - ExampleMain.invoke(); DistExecutor.unsafeRunWhenOn(Dist.CLIENT,()-> LayoutEngines::init); DistExecutor.unsafeRunWhenOn(Dist.CLIENT,()-> GuiWebServerEndpoint::invoke); } diff --git a/src/main/java/kasuga/lib/core/base/CustomTrackRenderer.java b/src/main/java/kasuga/lib/core/base/CustomTrackRenderer.java index 7a1083c6..c452197a 100644 --- a/src/main/java/kasuga/lib/core/base/CustomTrackRenderer.java +++ b/src/main/java/kasuga/lib/core/base/CustomTrackRenderer.java @@ -1,16 +1,16 @@ package kasuga.lib.core.base; -import com.jozufozu.flywheel.core.PartialModel; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; import com.simibubi.create.content.trains.track.TrackBlock; import com.simibubi.create.content.trains.track.TrackMaterial; import com.simibubi.create.content.trains.track.TrackShape; -import com.simibubi.create.foundation.render.CachedBufferer; -import com.simibubi.create.foundation.render.SuperByteBuffer; +import dev.engine_room.flywheel.lib.model.baked.PartialModel; import kasuga.lib.KasugaLib; import kasuga.lib.registrations.create.TrackMaterialReg; +import net.createmod.catnip.render.CachedBuffers; +import net.createmod.catnip.render.SuperByteBuffer; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -40,12 +40,12 @@ public synchronized void render(BlockState state, BlockPos pos, BlockAndTintGett material = getBlock().getMaterial(); offset = KasugaLib.STACKS.getCachedTrackMaterial(material).trackOffsets(); } - PartialModel left = material.getModelHolder().segment_left(), - right = material.getModelHolder().segment_right(), + PartialModel left = material.getModelHolder().leftSegment(), + right = material.getModelHolder().rightSegment(), tie = material.getModelHolder().tie(); - SuperByteBuffer leftBuffer = CachedBufferer.partial(left, state), - rightBuffer = CachedBufferer.partial(right, state), - tieBuffer = CachedBufferer.partial(tie, state); + SuperByteBuffer leftBuffer = CachedBuffers.partial(left, state), + rightBuffer = CachedBuffers.partial(right, state), + tieBuffer = CachedBuffers.partial(tie, state); TrackShape shape = state.getValue(TrackBlock.SHAPE); Direction direction = getFacingMapping(shape); if (direction == Direction.DOWN) { diff --git a/src/main/java/kasuga/lib/core/create/BogeyDataConstants.java b/src/main/java/kasuga/lib/core/create/BogeyDataConstants.java index 13957f0f..7807bb65 100644 --- a/src/main/java/kasuga/lib/core/create/BogeyDataConstants.java +++ b/src/main/java/kasuga/lib/core/create/BogeyDataConstants.java @@ -1,6 +1,6 @@ package kasuga.lib.core.create; -import com.simibubi.create.foundation.utility.NBTHelper; +import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/kasuga/lib/core/create/SimpleTrackBlock.java b/src/main/java/kasuga/lib/core/create/SimpleTrackBlock.java index 970b22e7..59fdd211 100644 --- a/src/main/java/kasuga/lib/core/create/SimpleTrackBlock.java +++ b/src/main/java/kasuga/lib/core/create/SimpleTrackBlock.java @@ -1,7 +1,6 @@ package kasuga.lib.core.create; import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; import com.simibubi.create.content.trains.track.*; import com.simibubi.create.foundation.block.IBE; @@ -16,7 +15,7 @@ import javax.annotation.Nonnull; import java.util.function.Supplier; -public class SimpleTrackBlock extends TrackBlock implements IBE, IWrenchable, ITrackBlock, ISpecialBlockItemRequirement, ProperWaterloggedBlock { +public class SimpleTrackBlock extends TrackBlock implements IBE, IWrenchable, ITrackBlock, ProperWaterloggedBlock { @Nonnull private final BogeySelector selector; public SimpleTrackBlock(@Nonnull BogeySelector selector, Properties properties, TrackMaterial material) { super(properties, material); diff --git a/src/main/java/kasuga/lib/core/create/boundary/BoundarySegmentRegistry.java b/src/main/java/kasuga/lib/core/create/boundary/BoundarySegmentRegistry.java index 794c7ffd..e092854c 100644 --- a/src/main/java/kasuga/lib/core/create/boundary/BoundarySegmentRegistry.java +++ b/src/main/java/kasuga/lib/core/create/boundary/BoundarySegmentRegistry.java @@ -1,6 +1,5 @@ package kasuga.lib.core.create.boundary; -import com.ibm.icu.impl.ICUResourceBundle; import com.simibubi.create.content.trains.graph.EdgePointType; import net.minecraft.resources.ResourceLocation; @@ -9,7 +8,6 @@ import java.util.List; import java.util.UUID; import java.util.function.Function; -import java.util.function.Supplier; public class BoundarySegmentRegistry { diff --git a/src/main/java/kasuga/lib/core/create/boundary/CustomBoundary.java b/src/main/java/kasuga/lib/core/create/boundary/CustomBoundary.java index a2e19db6..6f4e8b9b 100644 --- a/src/main/java/kasuga/lib/core/create/boundary/CustomBoundary.java +++ b/src/main/java/kasuga/lib/core/create/boundary/CustomBoundary.java @@ -3,9 +3,8 @@ import com.simibubi.create.content.trains.graph.DimensionPalette; import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.signal.SingleBlockEntityEdgePoint; -import com.simibubi.create.foundation.utility.Iterate; +import net.createmod.catnip.data.Iterate; import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; import java.util.HashMap; import java.util.Map; diff --git a/src/main/java/kasuga/lib/core/create/boundary/CustomTrackSegmentPropagator.java b/src/main/java/kasuga/lib/core/create/boundary/CustomTrackSegmentPropagator.java index 61ad3977..ce30b5e8 100644 --- a/src/main/java/kasuga/lib/core/create/boundary/CustomTrackSegmentPropagator.java +++ b/src/main/java/kasuga/lib/core/create/boundary/CustomTrackSegmentPropagator.java @@ -2,13 +2,13 @@ import com.simibubi.create.Create; import com.simibubi.create.content.trains.graph.*; -import com.simibubi.create.foundation.utility.Couple; -import com.simibubi.create.foundation.utility.Iterate; import kasuga.lib.KasugaLib; import kasuga.lib.core.create.graph.EdgeExtraData; import kasuga.lib.core.create.graph.GraphExtraData; import kasuga.lib.core.create.graph.TrackEdgeLocation; import kasuga.lib.core.util.data_type.Pair; +import net.createmod.catnip.data.Couple; +import net.createmod.catnip.data.Iterate; import net.minecraft.resources.ResourceLocation; import java.util.*; diff --git a/src/main/java/kasuga/lib/core/create/device/TrainDeviceProvider.java b/src/main/java/kasuga/lib/core/create/device/TrainDeviceProvider.java index 9c887c9a..76d468c3 100644 --- a/src/main/java/kasuga/lib/core/create/device/TrainDeviceProvider.java +++ b/src/main/java/kasuga/lib/core/create/device/TrainDeviceProvider.java @@ -1,6 +1,5 @@ package kasuga.lib.core.create.device; -import kasuga.lib.core.create.device.TrainDeviceManager; public interface TrainDeviceProvider { TrainDeviceManager getDeviceManager(); diff --git a/src/main/java/kasuga/lib/core/create/edge_point/EdgePointBlockEntity.java b/src/main/java/kasuga/lib/core/create/edge_point/EdgePointBlockEntity.java index 29decf53..607510ae 100644 --- a/src/main/java/kasuga/lib/core/create/edge_point/EdgePointBlockEntity.java +++ b/src/main/java/kasuga/lib/core/create/edge_point/EdgePointBlockEntity.java @@ -1,7 +1,6 @@ package kasuga.lib.core.create.edge_point; import com.simibubi.create.content.trains.graph.EdgePointType; -import com.simibubi.create.content.trains.signal.SingleBlockEntityEdgePoint; import com.simibubi.create.content.trains.signal.TrackEdgePoint; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; diff --git a/src/main/java/kasuga/lib/core/create/graph/EdgeExtraPayload.java b/src/main/java/kasuga/lib/core/create/graph/EdgeExtraPayload.java index 4e473379..f84796f5 100644 --- a/src/main/java/kasuga/lib/core/create/graph/EdgeExtraPayload.java +++ b/src/main/java/kasuga/lib/core/create/graph/EdgeExtraPayload.java @@ -1,7 +1,6 @@ package kasuga.lib.core.create.graph; import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.Tag; public interface EdgeExtraPayload { CompoundTag write(); diff --git a/src/main/java/kasuga/lib/core/create/graph/RailwayData.java b/src/main/java/kasuga/lib/core/create/graph/RailwayData.java index 35d545d8..3cbf6efc 100644 --- a/src/main/java/kasuga/lib/core/create/graph/RailwayData.java +++ b/src/main/java/kasuga/lib/core/create/graph/RailwayData.java @@ -1,6 +1,5 @@ package kasuga.lib.core.create.graph; -import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.content.trains.graph.DimensionPalette; import com.simibubi.create.content.trains.graph.TrackGraph; import kasuga.lib.core.create.boundary.ResourcePattle; diff --git a/src/main/java/kasuga/lib/core/create/graph/TrackEdgeLocation.java b/src/main/java/kasuga/lib/core/create/graph/TrackEdgeLocation.java index dd1c4fde..27923400 100644 --- a/src/main/java/kasuga/lib/core/create/graph/TrackEdgeLocation.java +++ b/src/main/java/kasuga/lib/core/create/graph/TrackEdgeLocation.java @@ -3,8 +3,8 @@ import com.simibubi.create.content.trains.graph.DimensionPalette; import com.simibubi.create.content.trains.graph.TrackEdge; import com.simibubi.create.content.trains.graph.TrackNodeLocation; -import com.simibubi.create.foundation.utility.Couple; import kasuga.lib.core.util.data_type.Pair; +import net.createmod.catnip.data.Couple; import net.minecraft.nbt.CompoundTag; public class TrackEdgeLocation extends Pair { diff --git a/src/main/java/kasuga/lib/core/create/graph/TrainDistanceIntegrator.java b/src/main/java/kasuga/lib/core/create/graph/TrainDistanceIntegrator.java index 863e9b7a..15156efb 100644 --- a/src/main/java/kasuga/lib/core/create/graph/TrainDistanceIntegrator.java +++ b/src/main/java/kasuga/lib/core/create/graph/TrainDistanceIntegrator.java @@ -1,6 +1,5 @@ package kasuga.lib.core.create.graph; -import com.simibubi.create.content.trains.entity.Train; import java.util.WeakHashMap; diff --git a/src/main/java/kasuga/lib/core/events/client/ModelRegistryEvent.java b/src/main/java/kasuga/lib/core/events/client/ModelRegistryEvent.java index 07bc5a47..daf7e12c 100644 --- a/src/main/java/kasuga/lib/core/events/client/ModelRegistryEvent.java +++ b/src/main/java/kasuga/lib/core/events/client/ModelRegistryEvent.java @@ -3,19 +3,14 @@ import kasuga.lib.KasugaLib; import kasuga.lib.core.client.render.model.MultiPartModel; import kasuga.lib.core.client.render.model.SimpleModel; -import kasuga.lib.core.resource.CustomResourceReloadListener; -import kasuga.lib.example_env.AllExampleElements; import kasuga.lib.core.client.render.texture.StaticImage; -import kasuga.lib.core.client.render.texture.StaticImageHolder; import kasuga.lib.registrations.registry.SimpleRegistry; import kasuga.lib.registrations.client.ModelReg; -import kasuga.lib.registrations.registry.SimpleRegistry; import net.minecraft.client.resources.model.BakedModel; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.ModelEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import java.io.IOException; diff --git a/src/main/java/kasuga/lib/core/projection/ScreenClickProjectionHelper.java b/src/main/java/kasuga/lib/core/projection/ScreenClickProjectionHelper.java index 05216aa3..7a6da303 100644 --- a/src/main/java/kasuga/lib/core/projection/ScreenClickProjectionHelper.java +++ b/src/main/java/kasuga/lib/core/projection/ScreenClickProjectionHelper.java @@ -12,11 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.ForgeHooksClient; -import net.minecraftforge.client.event.ViewportEvent; -import org.joml.Matrix4f; import org.joml.Vector4f; public class ScreenClickProjectionHelper { diff --git a/src/main/java/kasuga/lib/example_env/AllClient.java b/src/main/java/kasuga/lib/example_env/AllClient.java deleted file mode 100644 index 4043d076..00000000 --- a/src/main/java/kasuga/lib/example_env/AllClient.java +++ /dev/null @@ -1,12 +0,0 @@ -package kasuga.lib.example_env; - -public class AllClient { - - // public static final LazyRecomputable anim = AnimationFile. - // fromFile(AllExampleElements.REGISTRY.asResource("animations/model.animation.json")); - - // public static final LazyRecomputable model = BedrockModelLoader.fromFile( - // AllExampleElements.REGISTRY.asResource("block/test/test_model_complicate")); - - public static void invoke(){} -} diff --git a/src/main/java/kasuga/lib/example_env/AllExampleBogey.java b/src/main/java/kasuga/lib/example_env/AllExampleBogey.java deleted file mode 100644 index 07e3d397..00000000 --- a/src/main/java/kasuga/lib/example_env/AllExampleBogey.java +++ /dev/null @@ -1,70 +0,0 @@ -package kasuga.lib.example_env; - -import com.simibubi.create.content.trains.bogey.BogeyBlockEntityRenderer; -import kasuga.lib.example_env.block.bogey.cw2.CW2BogeyRenderer; -import kasuga.lib.example_env.block.bogey.cw2.TestBogeyBlock; -import kasuga.lib.example_env.block.bogey.cw2.TestBogeyBlockEntity; -import kasuga.lib.example_env.block.bogey.pk209p.PK209PRenderer; -import kasuga.lib.example_env.block.bogey.pk209p.StandardBogeyBlock; -import kasuga.lib.example_env.block.bogey.pk209p.StandardBogeyBlockEntity; -import kasuga.lib.registrations.common.BlockEntityReg; -import kasuga.lib.registrations.create.BogeyBlockReg; -import kasuga.lib.registrations.create.BogeyGroupReg; -import kasuga.lib.registrations.create.BogeySizeReg; -import kasuga.lib.registrations.registry.CreateRegistry; -import net.minecraft.world.level.material.MapColor; - -public class AllExampleBogey { - - public static final CreateRegistry testRegistry = AllExampleElements.testRegistry; - - public static final BogeySizeReg pk209p = new BogeySizeReg("pk209p") - .size(0.915F / 2F) - .submit(testRegistry); - - public static final BogeySizeReg cw2 = new BogeySizeReg("cw2") - .size(0.915F / 2F) - .submit(testRegistry); - - public static final BogeyGroupReg standardGroup = new BogeyGroupReg("standard", "test_bogey") - .bogey(AllExampleBogey.pk209p.getSize(), PK209PRenderer::new, testRegistry.asResource("pk209p_bogey")) - .translationKey("standard_group") - .submit(testRegistry); - - public static final BogeyGroupReg testGroup = new BogeyGroupReg("test", "test_bogey") - .bogey(AllExampleBogey.cw2.getSize(), CW2BogeyRenderer::new, testRegistry.asResource("cw2_bogey")) - .translationKey("test_group") - .submit(testRegistry); - public static final BogeyBlockReg standardBogey = - new BogeyBlockReg("pk209p_bogey") - .block(StandardBogeyBlock::new) - .materialColor(MapColor.PODZOL) - .size(pk209p) - .translationKey("standard_bogey") - .submit(testRegistry); - - public static final BogeyBlockReg cw2Bogey = - new BogeyBlockReg("cw2_bogey") - .block(TestBogeyBlock::new) - .materialColor(MapColor.PODZOL) - .size(cw2) - .translationKey("cw2_bogey") - .submit(testRegistry); - - public static final BlockEntityReg standardBogeyEntity = - new BlockEntityReg("standard_bogey_entity") - .blockEntityType(StandardBogeyBlockEntity::new) - .addBlock(() -> standardBogey.getEntry().get()) - .withRenderer(() ->BogeyBlockEntityRenderer::new) - .submit(testRegistry); - - public static final BlockEntityReg testBogeyEntity = - new BlockEntityReg("test_bogey_entity") - .blockEntityType(TestBogeyBlockEntity::new) - .addBlock(() -> cw2Bogey.getEntry().get()) - .withRenderer(() -> BogeyBlockEntityRenderer::new) - .submit(testRegistry); - - public static void invoke(){} - -} diff --git a/src/main/java/kasuga/lib/example_env/AllExampleElements.java b/src/main/java/kasuga/lib/example_env/AllExampleElements.java deleted file mode 100644 index e48db348..00000000 --- a/src/main/java/kasuga/lib/example_env/AllExampleElements.java +++ /dev/null @@ -1,246 +0,0 @@ -package kasuga.lib.example_env; - -import com.mojang.blaze3d.systems.RenderSystem; -import kasuga.lib.KasugaLib; -import kasuga.lib.core.base.commands.CommandHandler; -import kasuga.lib.core.config.SimpleConfig; -import kasuga.lib.core.base.BucketItem; -import kasuga.lib.core.base.commands.CommandHandler; -import kasuga.lib.core.client.interaction.GuiOperatingPerspectiveScreen; -import kasuga.lib.core.menu.base.GuiBinding; -import kasuga.lib.core.menu.base.GuiMenu; -import kasuga.lib.core.menu.base.GuiMenuRegistry; -import kasuga.lib.core.menu.base.GuiMenuType; -import kasuga.lib.core.util.Envs; -import kasuga.lib.example_env.block.RotationTestBlock; -import kasuga.lib.example_env.block.fluid.ExampleFluid; -import kasuga.lib.example_env.block.fluid.ExampleFluidBlock; -import kasuga.lib.example_env.block.green_apple.GreenAppleBlock; -import kasuga.lib.example_env.block.green_apple.GreenAppleItem; -import kasuga.lib.example_env.block.green_apple.GreenAppleTile; -import kasuga.lib.example_env.block.gui.GuiExampleBlock; -import kasuga.lib.example_env.block.gui.GuiExampleBlockEntity; -import kasuga.lib.example_env.block.gui.GuiExampleBlockRenderer; -import kasuga.lib.example_env.block.gui.GuiExampleMenu; -import kasuga.lib.example_env.client.block_entity.renderer.GreenAppleTileRenderer; -import kasuga.lib.example_env.client.screens.GreenAppleMenu; -import kasuga.lib.example_env.client.screens.GreenAppleScreen; -import kasuga.lib.example_env.network.ExampleC2SPacket; -import kasuga.lib.example_env.network.ExampleS2CPacket; -import kasuga.lib.registrations.client.AnimReg; -import kasuga.lib.registrations.registry.CreateRegistry; -import kasuga.lib.registrations.client.ModelReg; -import kasuga.lib.registrations.common.*; -import kasuga.lib.registrations.registry.SimpleRegistry; -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ItemBlockRenderTypes; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.data.worldgen.features.OreFeatures; -import kasuga.lib.registrations.registry.CreateRegistry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.DropExperienceBlock; -import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.material.MapColor; - -import java.io.File; -import java.net.URL; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.common.SoundAction; -import net.minecraftforge.common.SoundActions; -import net.minecraftforge.fml.DistExecutor; - -public class AllExampleElements { - - public static final CreateRegistry testRegistry = ExampleMain.testRegistry; - - public static final BlockReg greenApple = - new BlockReg("green_apple") - .blockType(GreenAppleBlock::new) - .materialColor(MapColor.COLOR_GREEN) - .withBlockEntity("green_apple_tile", GreenAppleTile::new) - .withBlockEntityRenderer(() -> GreenAppleTileRenderer::new) - .withSound(SoundType.CROP) - .defaultBlockItem(new ResourceLocation(KasugaLib.MOD_ID, "block/test/green_apple")) - .stackSize(32) - // .tabTo(CreativeModeTab.TAB_DECORATIONS) - .submit(testRegistry); - - public static final BlockEntityReg greenAppleTile = - new BlockEntityReg("green_apple_tile") - .blockEntityType(GreenAppleTile::new) - .withRenderer(() -> GreenAppleTileRenderer::new) - .blockPredicates((location, block) -> block instanceof GreenAppleBlock) - .submit(testRegistry); - - public static final BlockReg guiExampleBlock = - new BlockReg("gui_example_block") - .blockType(GuiExampleBlock::new) - .materialColor(MapColor.COLOR_GREEN) - .defaultBlockItem() - // .tabTo(CreativeModeTab.TAB_DECORATIONS) - .submit(testRegistry); - - public static final BlockEntityReg guiExampleTile = - new BlockEntityReg("gui_example_tile") - .blockEntityType(GuiExampleBlockEntity::new) - .blockPredicates((location, block) -> block instanceof GuiExampleBlock) - .withRenderer(()-> GuiExampleBlockRenderer::new) - .submit(testRegistry); - - - /* - public static final EntityReg wuling = new EntityReg("wuling") - .entityType(WuLingEntity::new) - .size(3, 3) - .attribute(WuLingEntity::createAttributes) - .withRenderer(() -> (WuLingRenderer::new)) - .submit(testRegistry); - */ - - /* - public static final ModelReg greenAppleModel = new ModelReg("green_apple", new ResourceLocation(KasugaLib.MOD_ID, "block/test/green_apple")) - .submit(testRegistry); - - */ - - /* - public static final ModelReg wuLingVans = new - ModelReg("wuling_vans", new ResourceLocation(KasugaLib.MOD_ID, "entity/test/wuling/wuling_base")) - .submit(testRegistry); - - */ - - public static final ItemReg greenAppleItem = - new ItemReg("green_apple_item") - .itemType(GreenAppleItem::new) - .stackTo(16) - .shouldCustomRender(true) - // .tab(CreativeModeTab.TAB_FOOD) - .submit(testRegistry); - - public static final CreativeTabReg tab = new CreativeTabReg("test") - .icon(greenAppleItem).submit(testRegistry); - - public static final BlockReg rotationTest = - new BlockReg("rotation_test") - .blockType(RotationTestBlock::new) - .defaultBlockItem() - .tabTo(tab) - .addProperty(BlockBehaviour.Properties::noCollission) - .submit(testRegistry); - /* - public static final AnimReg test_anim = - new AnimReg("test_anim", testRegistry.asResource("models/entity/test/wuling/wuling_anim.json")) - .submit(testRegistry); - - */ - - /* - public static final SimpleConfig config = new SimpleConfig() - .common("common settings") - .rangedIntConfig("cfg1", "this is a test cfg", 0, -1, 1) - .doubleConfig("cfg2", 0d) - .client("only in client") - .boolConfig("bool", false) - .server("only in server") - .intConfig("int_cfg", 4) - .registerConfigs(); - */ - - - -// public static final FluidReg exampleFluid = new FluidReg("example_fluid") -// .still(ExampleFluid::new, "block/fluid/water_still") -// .flow(ExampleFluid.Flowing::new, "block/fluid/water_flow") -// .numericProperties(1, 8, 3, 10) -// .overlayTexPath("block/fluid/water_overlay") -// .bucketItem(BucketItem::new) -// .basicFluidProperties(5, 15, 5, true) -// .defaultSounds() -// .tintColor(0x70D2691E) -// .fogColor(210, 105, 30) -// .blockType((fluid, properties) -> -// new ExampleFluidBlock(fluid, BlockBehaviour.Properties.copy(Blocks.WATER))) -// .noLootAndOcclusion() -// .setRenderType("translucent") -// .tab(tab) -// .submit(testRegistry); - -// public static final BlockReg SALT_ORE = -// new BlockReg("salt_ore") -// .blockType(props -> -// new DropExperienceBlock(props, UniformInt.of(3, 7))) -// .material(Material.STONE) -// .materialColor(MaterialColor.STONE) -// .addProperty(properties -> properties.strength(1.5f, 6.0F)) -// .addProperty(BlockBehaviour.Properties::requiresCorrectToolForDrops) -// .defaultBlockItem() -// .tabTo(tab) -// .submit(AllExampleElements.REGISTRY); -// -// public static final OreReg exampleOreConfig = -// new OreReg("salt_ore") -// .addOreReplaceTarget(SALT_ORE) -// .addDeepSlateReplaceTarget(SALT_ORE) -// .setOreCountPerChunk(20) -// .setOreQuantityPerGroup(64) -// .setOreDistributionType(PlacedFeatureReg.DistributionType.TRIANGLE) -// .setOreAnchorAbsolute(80, -80) -// .submit(AllExampleElements.REGISTRY); - - public static final MenuReg apple = - new MenuReg("green_apple_screen") - .withMenuAndScreen(GreenAppleMenu::new, () -> GreenAppleScreen::new) - .submit(testRegistry); - - - public static final ChannelReg Channel = new ChannelReg("example_channel") - .brand("1.0") - .loadPacket(ExampleC2SPacket.class, ExampleC2SPacket::new) - .loadPacket(ExampleS2CPacket.class, ExampleS2CPacket::new) - .submit(testRegistry); - - public static final GuiMenuType MENU_EXAMPLE = GuiMenuType.createType(GuiExampleMenu::new); - - - /* - public static final ArgumentTypeReg type = ArgumentTypeReg.INSTANCE.registerType(File.class, File::new) - .submit(testRegistry); - - public static final CommandReg command = new CommandReg("nihao") - .addLiteral("wiorjh", false) - .addInteger("int", false) - .addURL("dou", true) - .setHandler(new CommandHandler(){ - @Override - public void run() { - System.out.println(getParameter("int", int.class)); - System.out.println(getParameter("dou", URL.class)); - } - }).submit(testRegistry); - */ - - public static final CommandReg OPERATE_COMMAND = new CommandReg("operate") - .onlyIn(Dist.CLIENT) - .setHandler(new CommandHandler() { - @Override - public void run() { - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, ()->OperateScreenCommand::invoke); - } - }) - .submit(testRegistry); - - public static void invoke() { - // if (Envs.isClient()) AllClient.invoke(); - // testRegistry.submit(); - if (Envs.isClient()) AllClient.invoke(); - // REGISTRY.submit(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/ExampleMain.java b/src/main/java/kasuga/lib/example_env/ExampleMain.java deleted file mode 100644 index ce5d384f..00000000 --- a/src/main/java/kasuga/lib/example_env/ExampleMain.java +++ /dev/null @@ -1,23 +0,0 @@ -package kasuga.lib.example_env; - -import kasuga.lib.KasugaLib; -import kasuga.lib.core.util.Envs; -import kasuga.lib.example_env.boundary.ExampleBoundaryModule; -import kasuga.lib.example_env.train.ExampleTrainDeviceModule; -import kasuga.lib.registrations.registry.CreateRegistry; - -public class ExampleMain { - - public static final CreateRegistry testRegistry = new CreateRegistry(KasugaLib.MOD_ID, KasugaLib.EVENTS); - public static void invoke() { - // ExampleTrackMaterial.invoke(); - AllExampleElements.invoke(); - if (Envs.isClient()) AllClient.invoke(); - // testRegistry.submit(); - // ExampleTracks.invoke(); - // AllExampleBogey.invoke(); - ExampleTrainDeviceModule.invoke(); - ExampleBoundaryModule.invoke(); - AllExampleElements.testRegistry.submit(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/ExampleTrackMaterial.java b/src/main/java/kasuga/lib/example_env/ExampleTrackMaterial.java deleted file mode 100644 index f8b77c2f..00000000 --- a/src/main/java/kasuga/lib/example_env/ExampleTrackMaterial.java +++ /dev/null @@ -1,45 +0,0 @@ -package kasuga.lib.example_env; - -import com.jozufozu.flywheel.core.PartialModel; -import kasuga.lib.example_env.block.track.SimpleTrackBlock; -import kasuga.lib.registrations.create.TrackMaterialReg; -import kasuga.lib.registrations.registry.CreateRegistry; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.Blocks; - -public class ExampleTrackMaterial { - - public static final CreateRegistry testRegistry = AllExampleElements.testRegistry; - - public static final SimpleTrackBlock.Builder builder = - new SimpleTrackBlock.Builder(() -> AllExampleBogey.standardBogey.getEntry().get()); - - public static final TrackMaterialReg exampleMaterial = new TrackMaterialReg("standard") - .lang("standard_track") - .block(() -> ExampleTracks.exampleTrack) - .trackParticle(new ResourceLocation("block/palettes/stone_types/polished/andesite_cut_polished")) - .type(testRegistry.asResource("standard"), builder::build) - .customModel( - () -> new PartialModel(testRegistry.asResource("block/track/standard/tie")), - () -> new PartialModel(testRegistry.asResource("block/track/standard/segment_left")), - () -> new PartialModel(testRegistry.asResource("block/track/standard/segment_right")) - ) - .simpleTrackModelOffset(0.755f) - .sleeper(Blocks.ANDESITE_SLAB) - .submit(testRegistry); - - public static final TrackMaterialReg tielessMaterial = new TrackMaterialReg("tieless") - .lang("tieless_track") - .block(() -> ExampleTracks.tielessTrack) - .trackParticle(new ResourceLocation("block/palettes/stone_types/polished/andesite_cut_polished")) - .type(testRegistry.asResource("tieless"), builder::build) - .customModel( - () -> new PartialModel(testRegistry.asResource("empty_model")), - () -> new PartialModel(testRegistry.asResource("block/track/standard/segment_left")), - () -> new PartialModel(testRegistry.asResource("block/track/standard/segment_right")) - ) - .simpleTrackModelOffset(0.755f) - .sleeper(Blocks.ANDESITE_SLAB) - .submit(testRegistry); - public static void invoke(){} -} diff --git a/src/main/java/kasuga/lib/example_env/ExampleTracks.java b/src/main/java/kasuga/lib/example_env/ExampleTracks.java deleted file mode 100644 index 7dc7eb48..00000000 --- a/src/main/java/kasuga/lib/example_env/ExampleTracks.java +++ /dev/null @@ -1,47 +0,0 @@ -package kasuga.lib.example_env; - -import com.simibubi.create.AllTags; -import com.simibubi.create.content.trains.track.TrackBlock; -import kasuga.lib.core.create.TrackStateGenerator; -import kasuga.lib.example_env.block.track.SimpleTrackBlock; -import kasuga.lib.registrations.create.TrackReg; -import kasuga.lib.registrations.registry.CreateRegistry; - -public class ExampleTracks { - public static final CreateRegistry testRegistry = ExampleMain.testRegistry; - public static final TrackStateGenerator.Builder stateBuilder = - TrackStateGenerator.Builder.of("block/track/standard/") - .xRotation((state) -> 0) - .yRotation((state -> state.getValue(TrackBlock.SHAPE).getModelRotation())) - .addModelContext( - TrackStateGenerator.ModelBuilderContext.of - (TrackStateGenerator.ModelActionType.PARENT, - "track/standard", - testRegistry.asResource("track/standard"))) - .addModelContext(TrackStateGenerator.ModelBuilderContext.of - (TrackStateGenerator.ModelActionType.TEXTURE, "particle", null)); - - public static final TrackReg exampleTrack = - new TrackReg("standard_track") - .trackState(stateBuilder) - .trackNameSuffix("Train Track") - .trackMaterial(ExampleTrackMaterial.exampleMaterial::getMaterial) - .pickaxeOnly() - .addTags(AllTags.AllBlockTags.TRACKS.tag) - .addTags(AllTags.AllBlockTags.GIRDABLE_TRACKS.tag) - .addTags(AllTags.AllBlockTags.RELOCATION_NOT_SUPPORTED.tag) - .submit(testRegistry); - - public static final TrackReg tielessTrack = - new TrackReg("tieless_track") - .trackState(stateBuilder) - .trackNameSuffix("Tieless Track") - .trackMaterial(ExampleTrackMaterial.tielessMaterial::getMaterial) - .pickaxeOnly() - .addTags(AllTags.AllBlockTags.TRACKS.tag) - .addTags(AllTags.AllBlockTags.GIRDABLE_TRACKS.tag) - .addTags(AllTags.AllBlockTags.RELOCATION_NOT_SUPPORTED.tag) - .submit(testRegistry); - - public static void invoke(){} -} diff --git a/src/main/java/kasuga/lib/example_env/OperateScreenCommand.java b/src/main/java/kasuga/lib/example_env/OperateScreenCommand.java deleted file mode 100644 index 0e2e4c9b..00000000 --- a/src/main/java/kasuga/lib/example_env/OperateScreenCommand.java +++ /dev/null @@ -1,13 +0,0 @@ -package kasuga.lib.example_env; - -import com.mojang.blaze3d.systems.RenderSystem; -import kasuga.lib.core.client.interaction.GuiOperatingPerspectiveScreen; -import net.minecraft.client.Minecraft; - -public class OperateScreenCommand { - public static void invoke(){ - RenderSystem.recordRenderCall(()->{ - Minecraft.getInstance().setScreen(new GuiOperatingPerspectiveScreen()); - }); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/RotationTestBlock.java b/src/main/java/kasuga/lib/example_env/block/RotationTestBlock.java deleted file mode 100644 index 6271a1ff..00000000 --- a/src/main/java/kasuga/lib/example_env/block/RotationTestBlock.java +++ /dev/null @@ -1,28 +0,0 @@ -package kasuga.lib.example_env.block; - -import net.minecraft.core.Direction; -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.DirectionalBlock; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import org.jetbrains.annotations.Nullable; - -public class RotationTestBlock extends DirectionalBlock { - - public RotationTestBlock(Properties pProperties) { - super(pProperties); - this.stateDefinition.any().setValue(FACING, Direction.NORTH); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - super.createBlockStateDefinition(pBuilder.add(FACING)); - } - - @Override - public @Nullable BlockState getStateForPlacement(BlockPlaceContext pContext) { - return super.getStateForPlacement(pContext).setValue(FACING, pContext.getHorizontalDirection().getOpposite()); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/SimpleBogeyBlock.java b/src/main/java/kasuga/lib/example_env/block/bogey/SimpleBogeyBlock.java deleted file mode 100644 index bc998f81..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/SimpleBogeyBlock.java +++ /dev/null @@ -1,175 +0,0 @@ -package kasuga.lib.example_env.block.bogey; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlockEntityTypes; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlockEntity; -import com.simibubi.create.content.trains.bogey.BogeySizes; -import com.simibubi.create.content.trains.bogey.BogeyStyle; -import com.simibubi.create.content.trains.track.TrackMaterial; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.phys.HitResult; -import net.minecraft.world.phys.Vec3; - -import javax.annotation.ParametersAreNonnullByDefault; -import java.util.List; -import java.util.Set; -import java.util.function.Supplier; - -public class SimpleBogeyBlock extends AbstractBogeyBlock - implements IBE, ProperWaterloggedBlock, ISpecialBlockItemRequirement { - private final Set validTracks; - private final double wheelPointSpacing, wheelRadius; - private final TrackMaterial.TrackType defaultTrack; - private final BogeyStyle bogeyStyle; - private final Vec3 connctorAnchorOffset; - private final NonNullSupplier> entitySupplier; - private final Class entityClass; - private final boolean allowSingleBogeyCarriage; - - @ParametersAreNonnullByDefault - public SimpleBogeyBlock( - Set validTracks, TrackMaterial.TrackType defaultTrack, Properties pProperties, - BogeyStyle defaultStyle, BogeySizes.BogeySize size, double wheelPointSpacing, - double wheelRadius, Vec3 connctorAnchorOffset, boolean allowSingleBogeyCarriage, - NonNullSupplier> entitySupplier, Class entityClass) { - super(pProperties, size); - this.validTracks = validTracks; - this.wheelRadius = wheelRadius; - this.wheelPointSpacing = wheelPointSpacing; - this.bogeyStyle = defaultStyle; - this.defaultTrack = defaultTrack; - this.allowSingleBogeyCarriage = allowSingleBogeyCarriage; - this.connctorAnchorOffset = connctorAnchorOffset; - this.entitySupplier = entitySupplier; - this.entityClass = entityClass; - } - - @Override - public TrackMaterial.TrackType getTrackType(BogeyStyle style) { - return defaultTrack; - } - - @Override - public double getWheelPointSpacing() { - return wheelPointSpacing; - } - - @Override - public double getWheelRadius() { - return wheelRadius; - } - - @Override - protected Vec3 getConnectorAnchorOffset() { - return connctorAnchorOffset; - } - - @Override - public BogeyStyle getDefaultStyle() { - return bogeyStyle; - } - - @Override - public Class getBlockEntityClass() { - return (Class) entityClass; - } - - @Override - public BlockEntityType getBlockEntityType() { - return (BlockEntityType) entitySupplier.get(); - } - - @Override - public boolean allowsSingleBogeyCarriage() { - return allowSingleBogeyCarriage; - } - - @Override - public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter level, BlockPos pos, Player player) { - return AllBlocks.RAILWAY_CASING.asStack(); - } - - @Override - public BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { - return state; - } - - private final List> properties_to_copy = - ImmutableList.>builder().addAll(super.propertiesToCopy()).build(); - - @Override - public List> propertiesToCopy() { - return properties_to_copy; - } - - @Override - public Set getValidPathfindingTypes(BogeyStyle style) { - return validTracks; - } - - @Override - public RenderShape getRenderShape(BlockState pState) { - return RenderShape.MODEL; - } - - public static class Builder { - private final Supplier style; - private double wheelPointSpacing = 2.5d, wheelRadius = 0.915d; - private Vec3 connectorAnchorOffset = new Vec3(0, 7 / 32f, 1); - private boolean allowSingleBogeyCarriage = true; - private TrackMaterial.TrackType[] validTypes = new TrackMaterial.TrackType[0]; - private Class clazz = AbstractBogeyBlockEntity.class; - private NonNullSupplier> supplier = AllBlockEntityTypes.BOGEY::get; - - public Builder(Supplier style) { - this.style = style; - } - - public Builder bogeyParams(double wheelRadius, double wheelPointSpacing) { - this.wheelRadius = wheelRadius; - this.wheelPointSpacing = wheelPointSpacing; - return this; - } - - public Builder anchorOffset(double x, double y, double z) { - this.connectorAnchorOffset = new Vec3(x, y, z); - return this; - } - - public Builder allowSingleBogeyCarriage(boolean allow) { - this.allowSingleBogeyCarriage = allow; - return this; - } - - public Builder validTrackTypes(TrackMaterial.TrackType... types) { - this.validTypes = types; - return this; - } - - public Builder bogeyBlockEntity(Class clazz, NonNullSupplier> supplier) { - this.clazz = clazz; - this.supplier = supplier; - return this; - } - - public SimpleBogeyBlock build(Properties properties, BogeySizes.BogeySize size) { - return new SimpleBogeyBlock<>(Set.of(validTypes), validTypes.length == 0 ? TrackMaterial.TrackType.STANDARD : validTypes[0], - properties, style.get(), size, wheelPointSpacing, wheelRadius, - connectorAnchorOffset, allowSingleBogeyCarriage, supplier, clazz); - } - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/CW2BogeyRenderer.java b/src/main/java/kasuga/lib/example_env/block/bogey/cw2/CW2BogeyRenderer.java deleted file mode 100644 index 5b6395f1..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/CW2BogeyRenderer.java +++ /dev/null @@ -1,91 +0,0 @@ -package kasuga.lib.example_env.block.bogey.cw2; - -import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.simibubi.create.content.trains.bogey.BogeyRenderer; -import com.simibubi.create.content.trains.bogey.BogeySizes; -import com.simibubi.create.content.trains.entity.CarriageBogey; -import com.simibubi.create.foundation.utility.Iterate; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.ExampleMain; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; - -public class CW2BogeyRenderer extends BogeyRenderer { - - private static ResourceLocation asBlockModelResource(String path) { - return ExampleMain.testRegistry.asResource("block/" + path); - } - - /** - * Method changes. - * - *

1. add a CarriageBogey param. - * - *

2. createModelInstances() -> createModelInstance() - * - *

- * - * @param materialManager The material manager - * @param carriageBogey The bogey to create data for - */ - public static final PartialModel CW2_FRAME = new PartialModel(asBlockModelResource("bogey/cw2/bogey_cw2_temple")); - public static final PartialModel CW2_WHEEL = new PartialModel(asBlockModelResource("bogey/cw2/cw2_wheel")); - - @Override - public void initialiseContraptionModelData( - MaterialManager materialManager, CarriageBogey carriageBogey) { - this.createModelInstance(materialManager, CW2_FRAME); - this.createModelInstance(materialManager, CW2_WHEEL, 2); - } - - @Override - public BogeySizes.BogeySize getSize() { - return BogeySizes.SMALL; - } - - /** - * Method Changes - * - *

1. Transform -> BogeyModelData - * - *

2. getTransformPartialModel -> getTransForm - * - *

3. finalize() has been deprecated -> use BogeyModelData.render() instead. - * - *

- * - * @param bogeyData Custom data stored on the bogey able to be used for rendering - * @param wheelAngle The angle of the wheel - * @param ms The posestack to render to - * @param light (Optional) Light used for in-world rendering - * @param vb (Optional) Vertex Consumer used for in-world rendering - * @param inContraption - */ - @Override - public void render( - CompoundTag bogeyData, - float wheelAngle, - PoseStack ms, - int light, - VertexConsumer vb, - boolean inContraption) { - - boolean inInstancedContraption = vb == null; - BogeyModelData frame = getTransform(CW2_FRAME, ms, inInstancedContraption); - frame.render(ms, light, vb); - - BogeyModelData[] wheels = - getTransform(CW2_WHEEL, ms, inInstancedContraption, 2); - - for (int side : Iterate.positiveAndNegative) { - if (!inInstancedContraption) ms.pushPose(); - BogeyModelData wheel = wheels[(side + 1) / 2]; - wheel.translate(0, 0.805, ((double) side) * 1.2d).rotateX(wheelAngle); - wheel.render(ms, light, vb); - if (!inInstancedContraption) ms.popPose(); - } - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlock.java b/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlock.java deleted file mode 100644 index 9a55deec..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlock.java +++ /dev/null @@ -1,122 +0,0 @@ -package kasuga.lib.example_env.block.bogey.cw2; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; -import com.simibubi.create.content.trains.bogey.BogeySizes; -import com.simibubi.create.content.trains.bogey.BogeyStyle; -import com.simibubi.create.content.trains.entity.Carriage; -import com.simibubi.create.content.trains.entity.CarriageBogey; -import com.simibubi.create.content.trains.entity.TravellingPoint; -import com.simibubi.create.content.trains.graph.TrackEdge; -import com.simibubi.create.content.trains.track.TrackMaterial; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import kasuga.lib.example_env.AllExampleBogey; -import kasuga.lib.example_env.ExampleTrackMaterial; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.phys.Vec3; - -import javax.annotation.ParametersAreNonnullByDefault; -import java.util.List; -import java.util.Set; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class TestBogeyBlock extends AbstractBogeyBlock - implements IBE, - ProperWaterloggedBlock, - ISpecialBlockItemRequirement { - - public TestBogeyBlock(Properties props, BogeySizes.BogeySize size) { - super(props, size); - registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); - } - - @Override - public TrackMaterial.TrackType getTrackType(BogeyStyle style) { - return ExampleTrackMaterial.exampleMaterial.getTrackType(); - } - - @Override - public RenderShape getRenderShape(BlockState pState) { - return RenderShape.MODEL; - } - - @Override - public double getWheelPointSpacing() { - return 2.5d; - } - - @Override - public double getWheelRadius() { - return 0.915; - } - - @Override - public Vec3 getConnectorAnchorOffset() { - return new Vec3(0, 7 / 32f, 1); - } - - @Override - public boolean allowsSingleBogeyCarriage() { - return true; - } - - @Override - public BogeyStyle getDefaultStyle() { - return AllExampleBogey.testGroup.getStyle(); - } - - @Override - public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { - return AllBlocks.RAILWAY_CASING.asStack(); - } - - @Override - public Class getBlockEntityClass() { - return TestBogeyBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return AllExampleBogey.testBogeyEntity.getType(); - } - - @Override - public BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { - return state; - } - - private final List> properties_to_copy = - ImmutableList.>builder().addAll(super.propertiesToCopy()).build(); - - @Override - public List> propertiesToCopy() { - return properties_to_copy; - } - - @Override - public Set getValidPathfindingTypes(BogeyStyle style) { - return Set.of(getTrackType(style), ExampleTrackMaterial.tielessMaterial.getTrackType()); - } - - @Override - public boolean isOnIncompatibleTrack(Carriage carriage, boolean leading) { - TravellingPoint point = leading ? carriage.getLeadingPoint() : carriage.getTrailingPoint(); - CarriageBogey bogey = leading ? carriage.leadingBogey() : carriage.trailingBogey(); - TrackEdge currentEdge = point.edge; - if (currentEdge == null) - return false; - return !getValidPathfindingTypes(bogey.getStyle()).contains(currentEdge.getTrackMaterial().trackType); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlockEntity.java b/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlockEntity.java deleted file mode 100644 index 740d061f..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/cw2/TestBogeyBlockEntity.java +++ /dev/null @@ -1,30 +0,0 @@ -package kasuga.lib.example_env.block.bogey.cw2; - -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlockEntity; -import com.simibubi.create.content.trains.bogey.BogeyStyle; -import kasuga.lib.example_env.AllExampleBogey; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.AABB; - -public class TestBogeyBlockEntity extends AbstractBogeyBlockEntity { - - public TestBogeyBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - } - - public TestBogeyBlockEntity(BlockPos pos, BlockState state) { - this(AllExampleBogey.testBogeyEntity.getType(), pos, state); - } - - @Override - public BogeyStyle getDefaultStyle() { - return AllExampleBogey.testGroup.getStyle(); - } - - @Override - protected AABB createRenderBoundingBox() { - return super.createRenderBoundingBox(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/PK209PRenderer.java b/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/PK209PRenderer.java deleted file mode 100644 index 5966a87d..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/PK209PRenderer.java +++ /dev/null @@ -1,98 +0,0 @@ -package kasuga.lib.example_env.block.bogey.pk209p; - -import com.jozufozu.flywheel.api.MaterialManager; -import com.jozufozu.flywheel.core.PartialModel; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import com.simibubi.create.content.trains.bogey.BogeyRenderer; -import com.simibubi.create.content.trains.bogey.BogeySizes; -import com.simibubi.create.content.trains.entity.CarriageBogey; -import com.simibubi.create.foundation.utility.NBTHelper; -import kasuga.lib.core.create.BogeyDataConstants; -import kasuga.lib.example_env.AllExampleBogey; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.ExampleMain; -import net.minecraft.core.Direction; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; - -public class PK209PRenderer extends BogeyRenderer { - - private static ResourceLocation asBlockModelResource(String path) { - return ExampleMain.testRegistry.asResource("block/" + path); - } - - public static final PartialModel PK209P_MAIN = new PartialModel(asBlockModelResource("bogey/pk209p/pk209p_main")); - public static final PartialModel PK209P_WHEEL = new PartialModel(asBlockModelResource("bogey/pk209p/pk209p_wheel")); - public static final PartialModel PK209P_WHEEL2 = new PartialModel(asBlockModelResource("bogey/pk209p/pk209p_wheel2")); - public static final PartialModel PK209P_MOTORWHEEL = new PartialModel(asBlockModelResource("bogey/pk209p/pk209_motorwheel")); - @Override - public void initialiseContraptionModelData( - MaterialManager materialManager, CarriageBogey carriageBogey) { - this.createModelInstance( - materialManager, PK209P_MAIN, PK209P_WHEEL, PK209P_WHEEL2, PK209P_MOTORWHEEL); - } - - @Override - public BogeySizes.BogeySize getSize() { - return AllExampleBogey.pk209p.getSize(); - } - - @Override - public void render(CompoundTag bogeyData, float wheelAngle, PoseStack ms, - int light, VertexConsumer vb, boolean inContraption) { - - Direction direction = - bogeyData.contains(BogeyDataConstants.BOGEY_ASSEMBLY_DIRECTION_KEY) - ? NBTHelper.readEnum( - bogeyData, - BogeyDataConstants.BOGEY_ASSEMBLY_DIRECTION_KEY, - Direction.class) - : Direction.NORTH; - - boolean inInstancedContraption = vb == null; - // bogey frame - BogeyModelData main = getTransform(PK209P_MAIN, ms, inInstancedContraption); - // generator wheel pair - BogeyModelData wheel = getTransform(PK209P_WHEEL, ms, inInstancedContraption); - // normal wheel pair - BogeyModelData wheel2 = getTransform(PK209P_WHEEL2, ms, inInstancedContraption); - // generator gear - BogeyModelData motorWheel = getTransform(PK209P_MOTORWHEEL, ms, inInstancedContraption); - - if (direction == Direction.SOUTH || direction == Direction.EAST) { - if (inContraption) { - main.translate(0, 0.91, 0).render(ms, light, vb); - wheel.translate(0, 0.8, 1.2).rotateX(wheelAngle).render(ms, light, vb); - wheel2.translate(0, 0.8, -1.2).rotateX(wheelAngle).render(ms, light, vb); - motorWheel - .translate(1.117, 0.82, 2.165) - .rotateX(wheelAngle * 3.256) - .render(ms, light, vb); - } else { - main.rotateY(180).translate(0, 0.91, 0).render(ms, light, vb); - wheel.translate(0, 0.8, -1.2) - .rotateY(180) - .rotateX(-wheelAngle) - .render(ms, light, vb); - wheel2.translate(0, 0.8, 1.2) - .rotateY(180) - .rotateX(-wheelAngle) - .render(ms, light, vb); - motorWheel - .translate(-1.117, 0.82, -2.165) - .rotateY(180) - .rotateX(-wheelAngle * 3.256) - .render(ms, light, vb); - } - } else { - main.translate(0, 0.91, 0).render(ms, light, vb); - wheel.translate(0, 0.8, 1.2).rotateX(wheelAngle).render(ms, light, vb); - wheel2.translate(0, 0.8, -1.2).rotateX(wheelAngle).render(ms, light, vb); - motorWheel - .translate(1.117, 0.82, 2.165) - .rotateX(wheelAngle * 3.256) - .render(ms, light, vb); - } - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlock.java b/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlock.java deleted file mode 100644 index 65fa499f..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlock.java +++ /dev/null @@ -1,122 +0,0 @@ -package kasuga.lib.example_env.block.bogey.pk209p; - -import com.google.common.collect.ImmutableList; -import com.simibubi.create.AllBlocks; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; -import com.simibubi.create.content.trains.bogey.BogeySizes; -import com.simibubi.create.content.trains.bogey.BogeyStyle; -import com.simibubi.create.content.trains.entity.Carriage; -import com.simibubi.create.content.trains.entity.CarriageBogey; -import com.simibubi.create.content.trains.entity.TravellingPoint; -import com.simibubi.create.content.trains.graph.TrackEdge; -import com.simibubi.create.content.trains.track.TrackMaterial; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import kasuga.lib.example_env.AllExampleBogey; -import kasuga.lib.example_env.ExampleTrackMaterial; -import net.minecraft.MethodsReturnNonnullByDefault; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.Property; -import net.minecraft.world.phys.Vec3; - -import javax.annotation.ParametersAreNonnullByDefault; -import java.util.List; -import java.util.Set; - -@MethodsReturnNonnullByDefault -@ParametersAreNonnullByDefault -public class StandardBogeyBlock extends AbstractBogeyBlock - implements IBE, - ProperWaterloggedBlock, - ISpecialBlockItemRequirement { - - public StandardBogeyBlock(Properties props, BogeySizes.BogeySize size) { - super(props, size); - registerDefaultState(defaultBlockState().setValue(WATERLOGGED, false)); - } - - @Override - public TrackMaterial.TrackType getTrackType(BogeyStyle style) { - return ExampleTrackMaterial.exampleMaterial.getTrackType(); - } - - @Override - public RenderShape getRenderShape(BlockState pState) { - return RenderShape.MODEL; - } - - @Override - public double getWheelPointSpacing() { - return 2.5d; - } - - @Override - public double getWheelRadius() { - return 0.915; - } - - @Override - public Vec3 getConnectorAnchorOffset() { - return new Vec3(0, 7 / 32f, 1); - } - - @Override - public boolean allowsSingleBogeyCarriage() { - return true; - } - - @Override - public BogeyStyle getDefaultStyle() { - return AllExampleBogey.standardGroup.getStyle(); - } - - @Override - public ItemStack getCloneItemStack(BlockGetter level, BlockPos pos, BlockState state) { - return AllBlocks.RAILWAY_CASING.asStack(); - } - - @Override - public Class getBlockEntityClass() { - return StandardBogeyBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return AllExampleBogey.standardBogeyEntity.getType(); - } - - @Override - public BlockState getRotatedBlockState(BlockState state, Direction targetedFace) { - return state; - } - - private final List> properties_to_copy = - ImmutableList.>builder().addAll(super.propertiesToCopy()).build(); - - @Override - public List> propertiesToCopy() { - return properties_to_copy; - } - - @Override - public Set getValidPathfindingTypes(BogeyStyle style) { - return Set.of(getTrackType(style), ExampleTrackMaterial.tielessMaterial.getTrackType()); - } - - @Override - public boolean isOnIncompatibleTrack(Carriage carriage, boolean leading) { - TravellingPoint point = leading ? carriage.getLeadingPoint() : carriage.getTrailingPoint(); - CarriageBogey bogey = leading ? carriage.leadingBogey() : carriage.trailingBogey(); - TrackEdge currentEdge = point.edge; - if (currentEdge == null) - return false; - return !getValidPathfindingTypes(bogey.getStyle()).contains(currentEdge.getTrackMaterial().trackType); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlockEntity.java b/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlockEntity.java deleted file mode 100644 index bf7c3256..00000000 --- a/src/main/java/kasuga/lib/example_env/block/bogey/pk209p/StandardBogeyBlockEntity.java +++ /dev/null @@ -1,30 +0,0 @@ -package kasuga.lib.example_env.block.bogey.pk209p; - -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlockEntity; -import com.simibubi.create.content.trains.bogey.BogeyStyle; -import kasuga.lib.example_env.AllExampleBogey; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.AABB; - -public class StandardBogeyBlockEntity extends AbstractBogeyBlockEntity { - - public StandardBogeyBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { - super(type, pos, state); - } - - public StandardBogeyBlockEntity(BlockPos pos, BlockState state) { - this(AllExampleBogey.standardBogeyEntity.getType(), pos, state); - } - - @Override - public BogeyStyle getDefaultStyle() { - return AllExampleBogey.standardGroup.getStyle(); - } - - @Override - protected AABB createRenderBoundingBox() { - return super.createRenderBoundingBox(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluid.java b/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluid.java deleted file mode 100644 index e33c6ec1..00000000 --- a/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluid.java +++ /dev/null @@ -1,48 +0,0 @@ -package kasuga.lib.example_env.block.fluid; - -import kasuga.lib.registrations.common.FluidReg; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.material.FlowingFluid; -import net.minecraft.world.level.material.Fluid; -import net.minecraft.world.level.material.FluidState; -import net.minecraftforge.common.extensions.IForgeFluid; -import net.minecraftforge.fluids.FluidType; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import net.minecraftforge.registries.RegistryObject; -import org.jetbrains.annotations.NotNull; - -public class ExampleFluid extends ForgeFlowingFluid { - - - public ExampleFluid(Properties properties) { - super(properties); - } - - @Override - protected void createFluidStateDefinition(StateDefinition.Builder pBuilder) { - super.createFluidStateDefinition(pBuilder.add(LEVEL)); - } - - @Override - public boolean isSource(@NotNull FluidState fluidState) { - return fluidState.getType() instanceof ExampleFluid && !(fluidState.getType() instanceof ExampleFluid.Flowing); - } - - @Override - public int getAmount(@NotNull FluidState fluidState) { - return isSource(fluidState) ? 8 : (Integer) fluidState.getValue(LEVEL); - } - - public static class Flowing extends ExampleFluid { - - public Flowing(Properties properties) { - super(properties); - } - - @Override - public boolean isSource(@NotNull FluidState fluidState) { - return super.isSource(fluidState); - } - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluidBlock.java b/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluidBlock.java deleted file mode 100644 index c69b0113..00000000 --- a/src/main/java/kasuga/lib/example_env/block/fluid/ExampleFluidBlock.java +++ /dev/null @@ -1,26 +0,0 @@ -package kasuga.lib.example_env.block.fluid; - -import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.LiquidBlock; -import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.material.FlowingFluid; -import net.minecraftforge.fluids.ForgeFlowingFluid; -import net.minecraftforge.fluids.IFluidBlock; -import org.jetbrains.annotations.Nullable; - -import java.util.function.Supplier; - -public class ExampleFluidBlock extends LiquidBlock { - - public ExampleFluidBlock(Supplier supplier, Properties properties) { - super(supplier, properties); - } - - @Override - public @Nullable BlockState getStateForPlacement(BlockPlaceContext pContext) { - return super.getStateForPlacement(pContext).setValue(LEVEL, 8); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleBlock.java b/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleBlock.java deleted file mode 100644 index 7a896513..00000000 --- a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleBlock.java +++ /dev/null @@ -1,68 +0,0 @@ -package kasuga.lib.example_env.block.green_apple; - -import kasuga.lib.core.base.UnModeledBlockProperty; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.network.ExampleS2CPacket; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.BaseEntityBlock; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.RenderShape; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.level.block.state.properties.BooleanProperty; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.shapes.CollisionContext; -import net.minecraft.world.phys.shapes.VoxelShape; -import org.jetbrains.annotations.Nullable; - -public class GreenAppleBlock extends BaseEntityBlock { - - VoxelShape SHAPE = Block.box(4, 0, 4, 12, 8, 12); - - public static final UnModeledBlockProperty test = UnModeledBlockProperty.create(BooleanProperty.create("test")); - public GreenAppleBlock(Properties pProperties) { - super(pProperties); - registerDefaultState(defaultBlockState() - .setValue(test, false)); - } - - @Override - public VoxelShape getShape(BlockState pState, BlockGetter pLevel, BlockPos pPos, CollisionContext pContext) { - return SHAPE; - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - super.createBlockStateDefinition(pBuilder.add(test)); - } - - @Override - public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) { - if(!pLevel.isClientSide) { - AllExampleElements.Channel.sendToClient(new ExampleS2CPacket(), (ServerPlayer) pPlayer); - // AllExampleElements.Channel.sendToServer(new ExampleC2SPacket()); - } - if(pLevel.isClientSide){ - BlockEntity be = pLevel.getBlockEntity(pPos); - } - return super.use(pState, pLevel, pPos, pPlayer, pHand, pHit); - } - - @Nullable - @Override - public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { - return new GreenAppleTile(pPos, pState); - } - - @Override - public RenderShape getRenderShape(BlockState pState) { - return RenderShape.ENTITYBLOCK_ANIMATED; - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleItem.java b/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleItem.java deleted file mode 100644 index 299b561d..00000000 --- a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleItem.java +++ /dev/null @@ -1,24 +0,0 @@ -package kasuga.lib.example_env.block.green_apple; - -import kasuga.lib.core.base.CustomRenderedItem; -import kasuga.lib.example_env.client.item.renderer.GreenAppleItemRenderer; -import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; -import net.minecraft.world.item.Item; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -public class GreenAppleItem extends Item {// extends CustomRenderedItem { - - public GreenAppleItem(Item.Properties pProperties) { - super(pProperties); - } - - // @Override - @OnlyIn(Dist.CLIENT) - public BlockEntityWithoutLevelRenderer getCustomItemRenderer(BlockEntityRenderDispatcher dispatcher, EntityModelSet modelSet) { - // return new GreenAppleItemRenderer(dispatcher, modelSet); - return null; - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleTile.java b/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleTile.java deleted file mode 100644 index efeb85b3..00000000 --- a/src/main/java/kasuga/lib/example_env/block/green_apple/GreenAppleTile.java +++ /dev/null @@ -1,39 +0,0 @@ -package kasuga.lib.example_env.block.green_apple; - -import com.mojang.blaze3d.vertex.PoseStack; -import kasuga.lib.KasugaLib; -import kasuga.lib.core.client.frontend.gui.GuiInstance; -import kasuga.lib.core.client.render.RendererUtil; -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.AABB; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fml.DistExecutor; - -public class GreenAppleTile extends BlockEntity { - - public float sec = 0f; - public boolean direction = false; - public boolean saved = false; - public GreenAppleTile(BlockEntityType pType, BlockPos pPos, BlockState pBlockState) { - super(pType, pPos, pBlockState); - } - - public GreenAppleTile(BlockPos pos, BlockState state) { - this(AllExampleElements.greenAppleTile.getType(), pos, state); - } - - @Override - public AABB getRenderBoundingBox() { - return AABB.ofSize(RendererUtil.blockPos2Vec3(getBlockPos()), 5, 5, 5); - } - - @Override - public void onChunkUnloaded() {} -} diff --git a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlock.java b/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlock.java deleted file mode 100644 index 8a2f0d9e..00000000 --- a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlock.java +++ /dev/null @@ -1,50 +0,0 @@ -package kasuga.lib.example_env.block.gui; - -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.core.BlockPos; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.util.RandomSource; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EntityBlock; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.entity.BlockEntityTicker; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.items.ItemStackHandler; -import org.jetbrains.annotations.Nullable; - -public class GuiExampleBlock extends Block implements EntityBlock { - public GuiExampleBlock(Properties pProperties) { - super(pProperties); - } - - @Nullable - @Override - public BlockEntity newBlockEntity(BlockPos blockPos, BlockState blockState) { - return AllExampleElements.guiExampleTile.getType().create(blockPos, blockState); - } - - @Override - public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) { - if(!(pLevel.getBlockEntity(pPos) instanceof GuiExampleBlockEntity blockEntity)){ - return InteractionResult.SUCCESS; - } - if(!pLevel.isClientSide){ - blockEntity.incrementData(); - return InteractionResult.SUCCESS; - } - blockEntity.openScreen(); - return InteractionResult.SUCCESS; - } - - @Nullable - @Override - public BlockEntityTicker getTicker(Level pLevel, BlockState pState, BlockEntityType pBlockEntityType) { - return pBlockEntityType == AllExampleElements.guiExampleTile.getType() ? GuiExampleBlockEntity::tick : null; - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockApi.java b/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockApi.java deleted file mode 100644 index f6561569..00000000 --- a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockApi.java +++ /dev/null @@ -1,18 +0,0 @@ -package kasuga.lib.example_env.block.gui; - -import kasuga.lib.core.javascript.engine.annotations.HostAccess; - -public class GuiExampleBlockApi { - - private final GuiExampleBlockEntity blockEntity; - - public GuiExampleBlockApi(GuiExampleBlockEntity blockEntity) { - this.blockEntity = blockEntity; - } - - @HostAccess.Export - public void incrementData(){ - if(!blockEntity.isRemoved()) - blockEntity.incrementData(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockEntity.java b/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockEntity.java deleted file mode 100644 index d9059342..00000000 --- a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockEntity.java +++ /dev/null @@ -1,73 +0,0 @@ -package kasuga.lib.example_env.block.gui; - -import kasuga.lib.core.menu.base.GuiMenu; -import kasuga.lib.core.menu.locator.BlockMenuLocator; -import kasuga.lib.core.menu.locator.GuiMenuHolder; -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.CrashReport; -import net.minecraft.client.Minecraft; -import net.minecraft.core.BlockPos; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; - -import java.util.Optional; - -public class GuiExampleBlockEntity extends BlockEntity { - private GuiMenuHolder holder; - - public GuiExampleBlockEntity(BlockPos pPos, BlockState pBlockState) { - super(AllExampleElements.guiExampleTile.getType(), pPos, pBlockState); - } - - @Override - public void setLevel(Level pLevel) { - super.setLevel(pLevel); - try{ - holder = new GuiMenuHolder.Builder() - .with(AllExampleElements.MENU_EXAMPLE, (menu)->menu.setBlockEntity(this)) - .locatedAt(BlockMenuLocator.of(level, getBlockPos())) - .build(); - holder.enable(pLevel); - }catch (Exception e){ - Minecraft.crash(new CrashReport("Failed to create GuiMenuHolder", e)); - } - } - - int clickCount = 0; - - public void incrementData(){ - CompoundTag syncData = new CompoundTag(); - syncData.putInt("click", ++clickCount); - holder.getMenu(0).ifPresent((menu)->menu.broadcast(syncData)); - } - - public void openScreen(){ - holder.openScreen(0); - } - - @Override - public void setRemoved() { - super.setRemoved(); - holder.disable(); - } - - @Override - public void clearRemoved() { - super.clearRemoved(); - holder.enable(level); - } - - public static void tick(Level level, BlockPos blockPos, BlockState blockState, BlockEntity block) { - GuiExampleBlockEntity entity = (GuiExampleBlockEntity)block; - if(level instanceof ServerLevel) { - // entity.incrementData(); - } - } - - public Optional getMenu() { - return holder.getMenu(0).map((t)->(t instanceof GuiExampleMenu menu) ? menu : null); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockRenderer.java b/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockRenderer.java deleted file mode 100644 index 8ac5db17..00000000 --- a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleBlockRenderer.java +++ /dev/null @@ -1,36 +0,0 @@ -package kasuga.lib.example_env.block.gui; - -import com.mojang.blaze3d.vertex.PoseStack; -import kasuga.lib.core.client.frontend.rendering.RenderContext; -import kasuga.lib.core.menu.targets.Target; -import kasuga.lib.core.menu.targets.WorldRendererTarget; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; - -public class GuiExampleBlockRenderer implements BlockEntityRenderer { - public GuiExampleBlockRenderer(BlockEntityRendererProvider.Context context) {} - - @Override - public void render(GuiExampleBlockEntity entity, float v, PoseStack poseStack, MultiBufferSource multiBufferSource, int light, int overlay) { - entity.getMenu().ifPresent(menu -> { - RenderContext worldContext = new RenderContext(RenderContext.RenderContextType.WORLD); - worldContext.setBufferSource(multiBufferSource); - worldContext.setPoseStack(poseStack); - worldContext.pushLight(light); - worldContext.pushLight(LightTexture.FULL_BRIGHT); - worldContext.setSource(WorldRendererTarget.class); - - poseStack.pushPose(); - poseStack.scale(0.0025f * 0.6f, 0.0025f * 0.6f, 0.0025f); - - WorldRendererTarget binding = menu.getBinding().apply(Target.WORLD_RENDERER); - if(binding != null) { - binding.render(worldContext); - } - - poseStack.popPose(); - }); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleMenu.java b/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleMenu.java deleted file mode 100644 index eaef80e8..00000000 --- a/src/main/java/kasuga/lib/example_env/block/gui/GuiExampleMenu.java +++ /dev/null @@ -1,49 +0,0 @@ -package kasuga.lib.example_env.block.gui; - -import kasuga.lib.core.channel.peer.Channel; -import kasuga.lib.core.channel.peer.ChannelHandle; -import kasuga.lib.core.menu.base.GuiBinding; -import kasuga.lib.core.menu.base.GuiMenu; -import kasuga.lib.core.menu.base.GuiMenuType; -import kasuga.lib.core.menu.javascript.JavascriptMenu; -import kasuga.lib.core.menu.targets.Target; -import kasuga.lib.core.menu.targets.WorldRendererTarget; -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.block.entity.BlockEntity; - -import java.util.UUID; - -public class GuiExampleMenu extends JavascriptMenu { - public GuiExampleMenu() { - super(AllExampleElements.MENU_EXAMPLE); - } - - @Override - protected GuiBinding createBinding(UUID id) { - return new GuiBinding(id).execute(ResourceLocation.tryParse("kuayue:lkj_2000")).with(Target.SCREEN); - } - - @Override - protected ResourceLocation getServerScriptLocation() { - return ResourceLocation.tryParse("kuayue:lkj_2000"); - } - - @Override - protected void createGuiInstance() { - super.createGuiInstance(); - WorldRendererTarget.attach(this); - } - - @Override - protected void closeGuiInstance() { - WorldRendererTarget.detach(this); - super.closeGuiInstance(); - } - - public void setBlockEntity(GuiExampleBlockEntity blockEntity){ - if(hasProvide("example")) - return; - provide("example", new GuiExampleBlockApi(blockEntity)); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/track/SimpleTrackBlock.java b/src/main/java/kasuga/lib/example_env/block/track/SimpleTrackBlock.java deleted file mode 100644 index 839e51b5..00000000 --- a/src/main/java/kasuga/lib/example_env/block/track/SimpleTrackBlock.java +++ /dev/null @@ -1,54 +0,0 @@ -package kasuga.lib.example_env.block.track; - -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; -import com.simibubi.create.content.trains.track.*; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import com.tterrag.registrate.util.nullness.NonNullSupplier; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; - -import javax.annotation.Nonnull; -import java.util.function.Supplier; - -public class SimpleTrackBlock extends TrackBlock implements IBE, IWrenchable, ITrackBlock, ISpecialBlockItemRequirement, ProperWaterloggedBlock { - @Nonnull private final BogeySelector selector; - public SimpleTrackBlock(@Nonnull BogeySelector selector, Properties properties, TrackMaterial material) { - super(properties, material); - this.selector = selector; - } - - @Override - public BlockState getBogeyAnchor(BlockGetter world, BlockPos pos, BlockState state) { - return selector.select(world, pos, state) - .defaultBlockState().setValue( - BlockStateProperties.HORIZONTAL_AXIS, - state.getValue(SHAPE) == TrackShape.XO ? Direction.Axis.X : Direction.Axis.Z - ); - } - - public static class Builder { - private final NonNullSupplier selector; - - public Builder(NonNullSupplier selector) { - this.selector = selector; - } - - public Builder(Supplier> bogey) { - this.selector = () -> (a, b, c) -> bogey.get(); - } - - public SimpleTrackBlock build(Properties properties, TrackMaterial material) { - return new SimpleTrackBlock(selector.get(), properties, material); - } - } - - public interface BogeySelector { - AbstractBogeyBlock select(BlockGetter world, BlockPos pos, BlockState state); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/track/StandardTrackBlock.java b/src/main/java/kasuga/lib/example_env/block/track/StandardTrackBlock.java deleted file mode 100644 index 9dea5e64..00000000 --- a/src/main/java/kasuga/lib/example_env/block/track/StandardTrackBlock.java +++ /dev/null @@ -1,39 +0,0 @@ -package kasuga.lib.example_env.block.track; - -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.track.*; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import kasuga.lib.example_env.AllExampleBogey; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; - -public class StandardTrackBlock extends TrackBlock - implements IBE, - IWrenchable, - ITrackBlock, - ISpecialBlockItemRequirement, - ProperWaterloggedBlock { - - public StandardTrackBlock(Properties properties, TrackMaterial material) { - super(properties, material); - } - - @Override - public BlockState getBogeyAnchor(BlockGetter world, BlockPos pos, BlockState state) { - // return state; - - return AllExampleBogey.standardBogey.getEntry() - .getDefaultState() - .setValue( - BlockStateProperties.HORIZONTAL_AXIS, - state.getValue(SHAPE) == TrackShape.XO - ? Direction.Axis.X - : Direction.Axis.Z); - // return super.getBogeyAnchor(world, pos, state); - } -} diff --git a/src/main/java/kasuga/lib/example_env/block/track/TestTrackBlock.java b/src/main/java/kasuga/lib/example_env/block/track/TestTrackBlock.java deleted file mode 100644 index 393ca6bd..00000000 --- a/src/main/java/kasuga/lib/example_env/block/track/TestTrackBlock.java +++ /dev/null @@ -1,45 +0,0 @@ -package kasuga.lib.example_env.block.track; - -import com.simibubi.create.content.equipment.wrench.IWrenchable; -import com.simibubi.create.content.schematics.requirement.ISpecialBlockItemRequirement; -import com.simibubi.create.content.trains.track.*; -import com.simibubi.create.foundation.block.IBE; -import com.simibubi.create.foundation.block.ProperWaterloggedBlock; -import kasuga.lib.example_env.AllExampleBogey; -import net.minecraft.client.particle.ParticleEngine; -import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; -import net.minecraft.world.level.BlockGetter; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.block.state.properties.BlockStateProperties; -import net.minecraft.world.phys.HitResult; -import net.minecraftforge.client.extensions.common.IClientBlockExtensions; - -import java.util.function.Consumer; - -public class TestTrackBlock extends TrackBlock - implements IBE, - IWrenchable, - ITrackBlock, - ISpecialBlockItemRequirement, - ProperWaterloggedBlock { - - public TestTrackBlock(Properties properties, TrackMaterial material) { - super(properties, material); - } - - @Override - public BlockState getBogeyAnchor(BlockGetter world, BlockPos pos, BlockState state) { - // return state; - - return AllExampleBogey.standardBogey.getEntry() - .getDefaultState() - .setValue( - BlockStateProperties.HORIZONTAL_AXIS, - state.getValue(SHAPE) == TrackShape.XO - ? Direction.Axis.X - : Direction.Axis.Z); - // return super.getBogeyAnchor(world, pos, state); - } -} diff --git a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundary.java b/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundary.java deleted file mode 100644 index 99c19f0c..00000000 --- a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundary.java +++ /dev/null @@ -1,25 +0,0 @@ -package kasuga.lib.example_env.boundary; - -import com.simibubi.create.content.trains.entity.Train; -import kasuga.lib.core.create.boundary.CustomBoundary; -import kasuga.lib.core.create.edge_point.BogeyObserverEdgePoint; - -public class ExampleBoundary extends CustomBoundary implements BogeyObserverEdgePoint { - protected int bogeyCount = 0; - ExampleBoundary(){ - super(); - } - - @Override - public void notifyBogey(Train train) { - bogeyCount++; - } - - public int getBogeyCount(){ - return bogeyCount; - } - - public void resetBogeyCount(){ - bogeyCount = 0; - } -} diff --git a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlock.java b/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlock.java deleted file mode 100644 index bad957c0..00000000 --- a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlock.java +++ /dev/null @@ -1,54 +0,0 @@ -package kasuga.lib.example_env.boundary; - -import com.simibubi.create.foundation.block.IBE; -import kasuga.lib.example_env.ExampleMain; -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; - -public class ExampleBoundaryBlock extends Block implements IBE { - public ExampleBoundaryBlock(Properties pProperties) { - super(pProperties); - } - - @Override - public Class getBlockEntityClass() { - return ExampleBoundaryBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return ExampleBoundaryModule.EXAMPLE_BOUNDARY_BLOCK_ENTITY.getType(); - } - - @Override - public void onRemove(BlockState pState, Level pLevel, BlockPos pPos, BlockState pNewState, boolean pIsMoving) { - IBE.onRemove(pState, pLevel, pPos, pNewState); - } - - @Override - public InteractionResult use(BlockState pState, Level pLevel, BlockPos pPos, Player pPlayer, InteractionHand pHand, BlockHitResult pHit) { - if (pLevel.isClientSide) { - return InteractionResult.SUCCESS; - } - ExampleBoundaryBlockEntity blockEntity = - pLevel.getBlockEntity(pPos) instanceof ExampleBoundaryBlockEntity ? - (ExampleBoundaryBlockEntity) pLevel.getBlockEntity(pPos) : null; - if (blockEntity == null) { - return InteractionResult.FAIL; - } - - pPlayer.displayClientMessage(Component.literal( - String.format("Bogey count: %d", blockEntity.getBogeyCount()) - ), true); - - return InteractionResult.SUCCESS; - } -} diff --git a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlockEntity.java b/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlockEntity.java deleted file mode 100644 index 1a7db28b..00000000 --- a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryBlockEntity.java +++ /dev/null @@ -1,26 +0,0 @@ -package kasuga.lib.example_env.boundary; - -import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; -import com.simibubi.create.foundation.blockEntity.SmartBlockEntity; -import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour; -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.block.state.BlockState; - -import java.util.List; - -public class ExampleBoundaryBlockEntity extends SmartBlockEntity { - TrackTargetingBehaviour edgePoint; - public ExampleBoundaryBlockEntity(BlockPos blockPos, BlockState state) { - super(ExampleBoundaryModule.EXAMPLE_BOUNDARY_BLOCK_ENTITY.getType(), blockPos, state); - } - - @Override - public void addBehaviours(List list) { - list.add(edgePoint = new TrackTargetingBehaviour<>(this, ExampleBoundaryModule.EXAMPLE_BOUNDARY)); - } - - public int getBogeyCount() { - return edgePoint.getEdgePoint().getBogeyCount(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryModule.java b/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryModule.java deleted file mode 100644 index d5805ab9..00000000 --- a/src/main/java/kasuga/lib/example_env/boundary/ExampleBoundaryModule.java +++ /dev/null @@ -1,51 +0,0 @@ -package kasuga.lib.example_env.boundary; - -import com.simibubi.create.content.trains.graph.EdgePointType; -import com.simibubi.create.content.trains.track.TrackTargetingBlockItem; -import com.tterrag.registrate.util.nullness.NonNullBiFunction; -import kasuga.lib.core.create.boundary.BoundarySegmentRegistry; -import kasuga.lib.example_env.ExampleMain; -import kasuga.lib.registrations.common.BlockEntityReg; -import kasuga.lib.registrations.common.BlockReg; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; - -public class ExampleBoundaryModule { - public static EdgePointType EXAMPLE_BOUNDARY = - EdgePointType.register( - new ResourceLocation("kasuga_lib","example_boundary"), - ExampleBoundary::new - ); - - - public static BlockReg EXAMPLE_BOUNDARY_BLOCK; - - public static NonNullBiFunction EXAMPLE_ITEM_TYPE = - TrackTargetingBlockItem.ofType(EXAMPLE_BOUNDARY); - - - static { - EXAMPLE_BOUNDARY_BLOCK = - new BlockReg("example_boundary") - .blockType(ExampleBoundaryBlock::new) - .withItem((p)->EXAMPLE_ITEM_TYPE.apply(EXAMPLE_BOUNDARY_BLOCK.getBlock(), p), null) - .submit(ExampleMain.testRegistry); - } - - public static BlockEntityReg EXAMPLE_BOUNDARY_BLOCK_ENTITY = - new BlockEntityReg("example_boundary_block_entity") - .blockEntityType(ExampleBoundaryBlockEntity::new) - .addBlock(EXAMPLE_BOUNDARY_BLOCK) - .submit(ExampleMain.testRegistry); - - - public static ResourceLocation EXAMPLE_SEGMENT_FEATURE = new ResourceLocation("kasuga_lib","example_boundary"); - public static void invoke() { - BoundarySegmentRegistry.register( - EXAMPLE_SEGMENT_FEATURE, - EXAMPLE_BOUNDARY, - ExampleSegment::new - ); - } -} diff --git a/src/main/java/kasuga/lib/example_env/boundary/ExampleSegment.java b/src/main/java/kasuga/lib/example_env/boundary/ExampleSegment.java deleted file mode 100644 index e14c6573..00000000 --- a/src/main/java/kasuga/lib/example_env/boundary/ExampleSegment.java +++ /dev/null @@ -1,16 +0,0 @@ -package kasuga.lib.example_env.boundary; - -import kasuga.lib.core.create.boundary.CustomTrackSegment; - -import java.util.UUID; - -public class ExampleSegment extends CustomTrackSegment { - - public ExampleSegment(UUID uuid) { - super(uuid); - } - - public UUID getId(){ - return segmentId; - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/block_entity/renderer/GreenAppleTileRenderer.java b/src/main/java/kasuga/lib/example_env/client/block_entity/renderer/GreenAppleTileRenderer.java deleted file mode 100644 index b445e4b0..00000000 --- a/src/main/java/kasuga/lib/example_env/client/block_entity/renderer/GreenAppleTileRenderer.java +++ /dev/null @@ -1,105 +0,0 @@ -package kasuga.lib.example_env.client.block_entity.renderer; - -import com.mojang.blaze3d.vertex.PoseStack; -import kasuga.lib.KasugaLib; -import kasuga.lib.core.client.render.texture.old.WorldTexture; -import kasuga.lib.core.client.render.model.SimpleModel; -import kasuga.lib.core.client.render.texture.old.WorldTexture; -import kasuga.lib.core.client.block_bench_model.BlockBenchModelLoader; -import kasuga.lib.core.client.block_bench_model.anim.instance.AnimationController; -import kasuga.lib.core.client.block_bench_model.anim_model.AnimBlockBenchModel; -import kasuga.lib.core.client.model.BedrockModelLoader; -import kasuga.lib.core.client.model.anim_instance.AnimateTicker; -import kasuga.lib.core.client.model.anim_instance.AnimationInstance; -import kasuga.lib.core.client.model.anim_model.AnimModel; -import kasuga.lib.core.util.LazyRecomputable; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.ExampleMain; -import kasuga.lib.example_env.block.green_apple.GreenAppleTile; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; -import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider; - -public class GreenAppleTileRenderer implements BlockEntityRenderer { - // SimpleModel model = AllExampleElements.greenAppleModel.getModel(); - // MultiPartModel wuling = (MultiPartModel) AllExampleElements.wuLingVans.getModel(); - // private static final WorldTexture texture = new WorldTexture(new ResourceLocation(KasugaLib.MOD_ID, "textures/common/test/green_apple_bubble.png")); - - LazyRecomputable ticker = AnimateTicker.getTickerInstance( - AllExampleElements.testRegistry.asResource("test_model_complicate"), - AllExampleElements.testRegistry.asResource("model"), - "transform", AnimateTicker.TickerType.RENDER, 60, 100); - - LazyRecomputable bbTestModel = null; - - public GreenAppleTileRenderer(BlockEntityRendererProvider.Context context) {} - // private WorldTexture TEXTURE = new WorldTexture(new ResourceLocation("kasuga_lib","textures/gui/pixel.png")); - @Override - public void render(GreenAppleTile tile, float partial, PoseStack pose, MultiBufferSource buffer, int light, int overlay) { - pose.pushPose(); - - if (bbTestModel == null) - bbTestModel = LazyRecomputable.of(() -> { - AnimBlockBenchModel model = BlockBenchModelLoader.INSTANCE.getAnimModel("bb_test_model", RenderType.translucent()); - if (model == null) return null; - return new AnimationController(model); - }); - AnimationController controller = bbTestModel.get(); - if (controller == null) return; - // controller.setSpeed("animation.model.new", 0.05f); - controller.start("animation.model.new"); - controller.render(pose, buffer, light, overlay, partial); - - // textContext.rotateDeg(1f, 1f, 1f); -// ticker.get().tickAndRender(pose, buffer, light, overlay, partial); -// if (tile.sec < 10) tile.sec+=0.01; -// if (tile.sec >= 10 && !tile.saved) { -// tile.saved = true; -// ticker.get().start();tile.sec++; -// } - // if (tile.sec < 5f && !tile.direction) tile.sec += 0.01f; - // else if (tile.sec >= 5f && !tile.direction) tile.direction = true; - // if (tile.sec > -2.5f && tile.direction) tile.sec -= 0.01f; - // else if (tile.sec <= -2.5f && tile.direction) tile.direction = false; - pose.popPose(); - // System.out.println(mtx.equals(mtx2)); - // pose.translate(0, -1, 0); - // textContext2.renderToWorld(pose, buffer, light); -/* - BlockPos pos = tile.getBlockPos(); - pose.pushPose(); - TEXTURE.render(pose,buffer,0.25f,0.25f, light); - pose.popPose(); - - pose.pushPose(); - pose.scale(0.01F, 0.01F, 0.001F); - RenderContext renderContext = new RenderContext(RenderContext.RenderContextType.WORLD); - renderContext.setSource(tile); - renderContext.setPoseStack(pose); - renderContext.setBufferSource(buffer); - tile.getGui().getContext().ifPresent((context)->{ - context(tile,400,200); - context.render(renderContext); - }); - pose.popPose(); -*/ - // model.translate(0, -.5, 0); - // model.render(pose, buffer, 0, -.5f, 0, light, overlay); - // component.turnToPlayer(Minecraft.getInstance().player, RendererUtil.blockPos2Vec3(tile.getBlockPos())); - // component.translate(0, 1.55f, .01f); - // component.renderCenteredInWorld(pose, buffer, light); - // wuling.translate(.5, 0, .5); - // wuling.render(pose, buffer, 0, 0, 0, (int)(light * .9), overlay); - } - - @Override - public boolean shouldRenderOffScreen(GreenAppleTile pBlockEntity) { - return true; - } - - @Override - public int getViewDistance() { - return 128; - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/entity/renderer/WuLingRenderer.java b/src/main/java/kasuga/lib/example_env/client/entity/renderer/WuLingRenderer.java deleted file mode 100644 index f1095015..00000000 --- a/src/main/java/kasuga/lib/example_env/client/entity/renderer/WuLingRenderer.java +++ /dev/null @@ -1,45 +0,0 @@ -package kasuga.lib.example_env.client.entity.renderer; - -import com.mojang.blaze3d.vertex.PoseStack; -import kasuga.lib.KasugaLib; -import kasuga.lib.core.client.animation.Constants; -import kasuga.lib.core.client.animation.data.Animation; -import kasuga.lib.core.client.render.model.MultiPartModel; -import kasuga.lib.core.client.render.texture.Matrix; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.entity.WuLingEntity; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; -import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.resources.ResourceLocation; - -import java.util.Optional; - -public class WuLingRenderer extends EntityRenderer { - public WuLingRenderer(EntityRendererProvider.Context pContext) { - super(pContext); - } - - @Override - public ResourceLocation getTextureLocation(WuLingEntity pEntity) { - return new ResourceLocation(KasugaLib.MOD_ID, ""); - } - - @Override - public void render(WuLingEntity entity, float yaw, float partial, PoseStack pose, MultiBufferSource buffer, int light) { - /* - Animation test_anim = entity.getAnimation(); - pose.pushPose(); - if(test_anim != null) { - test_anim.getModel().translate(0, 0, -.5); - test_anim.assign(entity, partial); - entity.actAnimation(); - test_anim.action(); - test_anim.getModel().render(pose, buffer, 0, 0, 0, (int)(light * .9), 0); - } - pose.popPose(); - - */ - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/item/renderer/GreenAppleItemRenderer.java b/src/main/java/kasuga/lib/example_env/client/item/renderer/GreenAppleItemRenderer.java deleted file mode 100644 index a4bc3ecc..00000000 --- a/src/main/java/kasuga/lib/example_env/client/item/renderer/GreenAppleItemRenderer.java +++ /dev/null @@ -1,30 +0,0 @@ -package kasuga.lib.example_env.client.item.renderer; - -import com.mojang.blaze3d.vertex.PoseStack; -import kasuga.lib.core.client.render.model.SimpleModel; -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.client.model.geom.EntityModelSet; -import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; -import net.minecraft.world.item.ItemDisplayContext; -import net.minecraft.world.item.ItemStack; - -public class GreenAppleItemRenderer extends BlockEntityWithoutLevelRenderer { - // SimpleModel model; - public GreenAppleItemRenderer(BlockEntityRenderDispatcher dispatcher, EntityModelSet modelSet) { - super(dispatcher, modelSet); - // model = AllExampleElements.greenAppleModel.getModel().clone(); - // model.renderType(RenderType::solid); - } - - @Override - public void renderByItem(ItemStack item, ItemDisplayContext transform, - PoseStack pose, MultiBufferSource buffer, int light, int overlay) { - // super.renderByItem(pStack, pTransformType, pPoseStack, pBuffer, pPackedLight, pPackedOverlay); - pose.pushPose(); - // model.render(pose, buffer, 0, 0, 0, light, overlay); - pose.popPose(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleMenu.java b/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleMenu.java deleted file mode 100644 index 5e3a3629..00000000 --- a/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleMenu.java +++ /dev/null @@ -1,35 +0,0 @@ -package kasuga.lib.example_env.client.screens; - -import kasuga.lib.example_env.AllExampleElements; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.ItemStack; -import org.jetbrains.annotations.Nullable; - -public class GreenAppleMenu extends AbstractContainerMenu { - public GreenAppleMenu(@Nullable MenuType pMenuType, int pContainerId) { - super(pMenuType, pContainerId); - } - - - public GreenAppleMenu(int containerId, Inventory inventory) { - this(AllExampleElements.apple.getMenuType(), containerId); - } - - public GreenAppleMenu(int i, Inventory inventory, FriendlyByteBuf buf) { - this(i, inventory); - } - - @Override - public ItemStack quickMoveStack(Player pPlayer, int pIndex) { - return ItemStack.EMPTY; - } - - @Override - public boolean stillValid(Player pPlayer) { - return true; - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleScreen.java b/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleScreen.java deleted file mode 100644 index bc3b6651..00000000 --- a/src/main/java/kasuga/lib/example_env/client/screens/GreenAppleScreen.java +++ /dev/null @@ -1,19 +0,0 @@ -package kasuga.lib.example_env.client.screens; - -import com.mojang.blaze3d.vertex.PoseStack; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.network.chat.Component; -import net.minecraft.world.entity.player.Inventory; -import org.jetbrains.annotations.NotNull; - -public class GreenAppleScreen extends AbstractContainerScreen { - public GreenAppleScreen(GreenAppleMenu pMenu, Inventory pPlayerInventory, Component pTitle) { - super(pMenu, pPlayerInventory, pTitle); - } - - @Override - protected void renderBg(@NotNull GuiGraphics guiGraphics, float pPartialTick, int pMouseX, int pMouseY) { - - } -} diff --git a/src/main/java/kasuga/lib/example_env/client/screens/ScreenClickProjectionScreen.java b/src/main/java/kasuga/lib/example_env/client/screens/ScreenClickProjectionScreen.java deleted file mode 100644 index 876b907a..00000000 --- a/src/main/java/kasuga/lib/example_env/client/screens/ScreenClickProjectionScreen.java +++ /dev/null @@ -1,50 +0,0 @@ -package kasuga.lib.example_env.client.screens; - -import kasuga.lib.KasugaLib; -import kasuga.lib.core.KasugaLibStacks; -import kasuga.lib.core.client.interaction.GuiOperatingPerspectiveScreen; -import kasuga.lib.core.projection.ScreenClickProjectionHelper; -import kasuga.lib.core.util.data_type.Pair; -import kasuga.lib.core.util.projectile.Ray; -import kasuga.lib.core.util.projectile.RayRenderer; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screens.Screen; -import net.minecraft.client.renderer.LightTexture; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.RenderBuffers; -import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.network.chat.Component; -import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.event.RenderLevelStageEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; - -public class ScreenClickProjectionScreen extends GuiOperatingPerspectiveScreen { - - protected static Ray ray = new Ray(new Vec3(0,0,0), new Vec3(0,0,1)); - - protected static RayRenderer rayRenderer = new RayRenderer(ray); - public ScreenClickProjectionScreen() { - super(); - } - - @Override - public boolean mouseClicked(double pMouseX, double pMouseY, int pButton) { - if(pButton == 1){ - Pair vec3Pair = ScreenClickProjectionHelper.getScreenClickProjection(pMouseX, pMouseY); - ray.getSource().set((float) vec3Pair.getFirst().x, (float) vec3Pair.getFirst().y, (float) vec3Pair.getFirst().z); - ray.getForward().set((float) vec3Pair.getSecond().x, (float) vec3Pair.getSecond().y, (float) vec3Pair.getSecond().z); - ray.getForward().normalize(); - return true; - } - return super.mouseClicked(pMouseX, pMouseY, pButton); - } - - @SubscribeEvent - public static void renderToWorld(RenderLevelStageEvent event) { - RenderBuffers buffers = Minecraft.getInstance().renderBuffers(); - MultiBufferSource.BufferSource bufferSource = buffers.bufferSource(); - Vec3 pos = event.getCamera().getPosition(); - event.getPoseStack().translate(-pos.x(), -pos.y(), -pos.z()); - rayRenderer.render(event.getPoseStack(), bufferSource, LightTexture.FULL_BRIGHT, OverlayTexture.NO_OVERLAY); - } -} diff --git a/src/main/java/kasuga/lib/example_env/engine/Benchmarker.java b/src/main/java/kasuga/lib/example_env/engine/Benchmarker.java deleted file mode 100644 index b17c6d79..00000000 --- a/src/main/java/kasuga/lib/example_env/engine/Benchmarker.java +++ /dev/null @@ -1,132 +0,0 @@ -package kasuga.lib.example_env.engine; - - -import com.caoccao.javet.exceptions.JavetException; -import com.caoccao.javet.interception.logging.JavetStandardConsoleInterceptor; -import com.caoccao.javet.interop.V8Host; -import com.caoccao.javet.interop.callback.IJavetDirectCallable; -import com.caoccao.javet.interop.callback.JavetCallbackContext; -import com.caoccao.javet.interop.callback.JavetCallbackType; -import com.caoccao.javet.values.V8Value; -import com.caoccao.javet.values.reference.V8ValueObject; -import kasuga.lib.core.javascript.engine.javet.JavetKasugaConverter; -import kasuga.lib.core.javascript.engine.javet.converter.FastJavetClassConverter; - -public class Benchmarker { - public static String benchmarkCode = """ -measureTime(); -var i; -for(i=0;i<1000;i++){ - benchmarker.directCall(); - var a = benchmarker.directCallWithObjectReturnType(); - benchmarker.directCallWithObjectParameter(a); - benchmarker.directCallWithOverloading("Hello,World"); -} - -console.info("ΔT1=", measureTime() / 1000); - -measureTime(); -for(i=0;i<10000;i++){ - benchmarker.directCall(); -} -console.info("ΔTD=", measureTime() / 1000); - -measureTime(); -for(i=0;i<10000;i++){ - benchmarker.directCallWithOverloading("Hello,World"); -} -console.info("ΔTO=", measureTime() / 1000); - -var a = benchmarker.directCallWithObjectReturnType(); - -measureTime(); -for(i=0;i<10000;i++){ - benchmarker.directCallWithObjectParameter(a); -} -console.info("ΔTP=", measureTime() / 1000); -"""; - - - public static void benchmarkOriginal() throws JavetException { - var runtime = V8Host.getV8Instance().createV8Runtime(); - runtime.setConverter(new JavetKasugaConverter(runtime)); - JavetStandardConsoleInterceptor consoleInterceptor = new JavetStandardConsoleInterceptor(runtime); - consoleInterceptor.register(runtime.getGlobalObject()); - var ref = new Object() { - long initTime = System.nanoTime(); - }; - runtime.getGlobalObject().bindFunction(new JavetCallbackContext( - "measureTime", - JavetCallbackType.DirectCallNoThisAndResult, - (IJavetDirectCallable.NoThisAndResult)(V8Value...object)->{ - long oldInitTime = ref.initTime; - ref.initTime = System.nanoTime(); - return runtime.getConverter().toV8Value(runtime, ((int) (System.nanoTime() - oldInitTime))); - } - )); - - System.out.println("-----Benchmarking Result of JavetKasugaConverter-----"); - - long nanoTime = System.nanoTime(); - - runtime.getGlobalObject().set("benchmarker",new ClassBenchmarker()); - - System.out.printf("delta T start = %d\n", (System.nanoTime() - nanoTime)); - - int beforeRef = runtime.getReferenceCount(); - - int beforeCtx = runtime.getCallbackContextCount(); - - runtime.getExecutor(benchmarkCode).execute(); - - runtime.lowMemoryNotification(); - System.gc(); - - System.out.printf("delta REF = %d\n" , beforeRef - runtime.getReferenceCount()); - System.out.printf("delta CTX = %d\n" , beforeCtx - runtime.getCallbackContextCount()); - - runtime.close(); - } - - public static void benchmarkNeo() throws JavetException { - var runtime = V8Host.getV8Instance().createV8Runtime(); - runtime.setConverter(new FastJavetClassConverter(runtime)); - JavetStandardConsoleInterceptor consoleInterceptor = new JavetStandardConsoleInterceptor(runtime); - consoleInterceptor.register(runtime.getGlobalObject()); - var ref = new Object() { - long initTime = System.nanoTime(); - }; - runtime.getGlobalObject().bindFunction(new JavetCallbackContext( - "measureTime", - JavetCallbackType.DirectCallNoThisAndResult, - (IJavetDirectCallable.NoThisAndResult)(V8Value...object)->{ - long oldInitTime = ref.initTime; - ref.initTime = System.nanoTime(); - return runtime.getConverter().toV8Value(runtime, ((int) (System.nanoTime() - oldInitTime))); - } - )); - System.out.println("-----Benchmarking Result of FastJavetClassConverter-----"); - long nanoTime = System.nanoTime(); - runtime.getGlobalObject().set("benchmarker",new ClassBenchmarker()); - System.out.printf("delta T start = %d\n", (System.nanoTime() - nanoTime)); - - int beforeRef = runtime.getReferenceCount(); - - int beforeCtx = runtime.getCallbackContextCount(); - - runtime.getExecutor(benchmarkCode).execute(); - - runtime.lowMemoryNotification(); - System.gc(); - - System.out.printf("delta REF = %d\n" , beforeRef - runtime.getReferenceCount()); - System.out.printf("delta CTX = %d\n" , beforeCtx - runtime.getCallbackContextCount()); - - runtime.close(); - } - - public static void start() throws JavetException { - benchmarkOriginal(); - benchmarkNeo(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/engine/ClassBenchmarker.java b/src/main/java/kasuga/lib/example_env/engine/ClassBenchmarker.java deleted file mode 100644 index 8b07f2a5..00000000 --- a/src/main/java/kasuga/lib/example_env/engine/ClassBenchmarker.java +++ /dev/null @@ -1,38 +0,0 @@ -package kasuga.lib.example_env.engine; - -import kasuga.lib.core.javascript.engine.annotations.HostAccess; - -public class ClassBenchmarker { - - public static int alive = 0; - ClassBenchmarker(){ - alive ++; - System.out.println("+ " + String.valueOf(System.identityHashCode(this))); - } - @HostAccess.Export - public void directCall(){} - - @HostAccess.Export - public void directCallWithOverloading(String a){} - @HostAccess.Export - public void directCallWithOverloading(String a, String b){} - @HostAccess.Export - public void directCallWithOverloading(String a, Boolean b){} - - @HostAccess.Export - public Object directCallWithObjectReturnType(){ - return new ClassBenchmarker(); - } - - @HostAccess.Export - public void directCallWithObjectParameter(ClassBenchmarker benchmarker){ - return; - } - - @Override - protected void finalize() throws Throwable { - alive--; - System.out.println("- " + String.valueOf(System.identityHashCode(this))); - super.finalize(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/entity/DoorControl.java b/src/main/java/kasuga/lib/example_env/entity/DoorControl.java deleted file mode 100644 index 28811959..00000000 --- a/src/main/java/kasuga/lib/example_env/entity/DoorControl.java +++ /dev/null @@ -1,71 +0,0 @@ -package kasuga.lib.example_env.entity; - -import net.minecraft.nbt.CompoundTag; - -public class DoorControl { - boolean leftFront, rightFront, leftBack, rightBack, midBack; - - public DoorControl() { - leftFront = false; - rightFront = false; - leftBack = false; - rightBack = false; - midBack = false; - } - - public void read(CompoundTag tag) { - leftFront = tag.getBoolean("lf"); - leftBack = tag.getBoolean("lb"); - rightFront = tag.getBoolean("rf"); - rightBack = tag.getBoolean("rb"); - midBack = tag.getBoolean("mb"); - } - - public void write(CompoundTag tag) { - tag.putBoolean("lf", leftFront); - tag.putBoolean("lb", leftBack); - tag.putBoolean("rf", rightFront); - tag.putBoolean("rb", rightBack); - tag.putBoolean("mb", midBack); - } - - public void setLeftBack(boolean leftBack) { - this.leftBack = leftBack; - } - - public void setLeftFront(boolean leftFront) { - this.leftFront = leftFront; - } - - public void setRightFront(boolean rightFront) { - this.rightFront = rightFront; - } - - public void setRightBack(boolean rightBack) { - this.rightBack = rightBack; - } - - public void setMidBack(boolean midBack) { - this.midBack = midBack; - } - - public boolean isLeftFront() { - return leftFront; - } - - public boolean isLeftBack() { - return leftBack; - } - - public boolean isRightBack() { - return rightBack; - } - - public boolean isRightFront() { - return rightFront; - } - - public boolean isMidBack() { - return midBack; - } -} diff --git a/src/main/java/kasuga/lib/example_env/entity/WuLingEntity.java b/src/main/java/kasuga/lib/example_env/entity/WuLingEntity.java deleted file mode 100644 index 80e74ce8..00000000 --- a/src/main/java/kasuga/lib/example_env/entity/WuLingEntity.java +++ /dev/null @@ -1,144 +0,0 @@ -package kasuga.lib.example_env.entity; - -import kasuga.lib.core.client.animation.data.Animation; -import kasuga.lib.core.client.render.RendererUtil; -import kasuga.lib.core.client.render.model.MultiPartModel; -import kasuga.lib.example_env.AllExampleElements; -import kasuga.lib.example_env.client.entity.renderer.WuLingRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.*; -import net.minecraft.world.entity.ai.attributes.AttributeSupplier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.Vec3; - -import java.util.List; - -public class WuLingEntity extends LivingEntity { - public DoorControl doorControl = new DoorControl(); - - // public final Animation animation; - - - public WuLingEntity(EntityType pEntityType, Level pLevel) { - super(pEntityType, pLevel); - // animation = level.isClientSide ? AllExampleElements.test_anim.getInstance() : null; - if (level().isClientSide) { - // MultiPartModel model = (MultiPartModel) AllExampleElements.wuLingVans.getModel().clone(); - // model.renderType(RenderType::solid); - // model.applyParentRenderTypeForAllBones(); - // animation.loadModel(model); - // model.shouldUseParentPose(false); - } - } - - public WuLingEntity(Level world) { - this(null, world); - } - - public static AttributeSupplier.Builder createAttributes() { - return LivingEntity.createLivingAttributes().add(Attributes.MAX_HEALTH, 100D); - } - - @Override - public Iterable getArmorSlots() { - return List.of(); - } - - @Override - public ItemStack getItemBySlot(EquipmentSlot pSlot) { - return ItemStack.EMPTY; - } - - @Override - public void setItemSlot(EquipmentSlot pSlot, ItemStack pStack) {} - - @Override - public void tick() { - super.tick(); - if(level().isClientSide()) - clientTick(); - else - serverTick(); - } - - @Override - public void move(MoverType pType, Vec3 pPos) { - super.move(pType, pPos); - } - - @Override - public void addAdditionalSaveData(CompoundTag pCompound) { - super.addAdditionalSaveData(pCompound); - CompoundTag door = new CompoundTag(); - doorControl.write(door); - pCompound.put("door", door); - } - - @Override - public void readAdditionalSaveData(CompoundTag pCompound) { - super.readAdditionalSaveData(pCompound); - if(pCompound.contains("door")) - doorControl.read(pCompound.getCompound("door")); - } - - public void serverTick() { - - } - public void clientTick() { - - } - - @Override - public void playerTouch(Player pPlayer) { - super.playerTouch(pPlayer); - } - - @Override - public InteractionResult interactAt(Player pPlayer, Vec3 pVec, InteractionHand pHand) { - Vec3 position = this.position(); - Vec3 playerPos = pPlayer.position(); - float angle = (float) RendererUtil.getVecHorizontalAngles(playerPos, position); - float carAngle = this.getYRot(); - float relativeAngle = (angle - carAngle); - if(relativeAngle > -10 && relativeAngle < 20) { - doorControl.setMidBack(!doorControl.isMidBack()); - } else if (relativeAngle > 20 && relativeAngle < 90) { - doorControl.setRightBack(!doorControl.isRightBack()); - } else if (relativeAngle > 90 && relativeAngle < 140) { - doorControl.setRightFront(!doorControl.isRightFront()); - } else if (relativeAngle > -90 && relativeAngle < -10) { - doorControl.setLeftBack(!doorControl.isLeftBack()); - } else if (relativeAngle > 220 && relativeAngle < 270) { - doorControl.setLeftFront(!doorControl.isLeftFront()); - } - return InteractionResult.SUCCESS; - } - - /* - public Animation getAnimation() { - return animation; - } - - public void actAnimation() { - animation.assign("left_front", doorControl.isLeftFront() ? 1 : 0); - animation.assign("left_back", doorControl.isLeftBack() ? 1 : 0); - animation.assign("right_front", doorControl.isRightFront() ? 1 : 0); - animation.assign("right_back", doorControl.isRightBack() ? 1 : 0); - animation.assign("mid_back", doorControl.isMidBack() ? 1 : 0); - } - - */ - - public void onDrive(Player driver) {} - - @Override - public HumanoidArm getMainArm() { - return HumanoidArm.RIGHT; - } -} diff --git a/src/main/java/kasuga/lib/example_env/network/ExampleC2SPacket.java b/src/main/java/kasuga/lib/example_env/network/ExampleC2SPacket.java deleted file mode 100644 index e6c19721..00000000 --- a/src/main/java/kasuga/lib/example_env/network/ExampleC2SPacket.java +++ /dev/null @@ -1,24 +0,0 @@ -package kasuga.lib.example_env.network; - -import kasuga.lib.core.network.C2SPacket; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.network.NetworkEvent; - -public class ExampleC2SPacket extends C2SPacket { - - public ExampleC2SPacket() { - super(); - } - - public ExampleC2SPacket(FriendlyByteBuf buf) { - super(buf); - } - - @Override - public void handle(NetworkEvent.Context context) { - System.out.println("I am C2S"); - } - - @Override - public void encode(FriendlyByteBuf buf) {} -} diff --git a/src/main/java/kasuga/lib/example_env/network/ExampleS2CPacket.java b/src/main/java/kasuga/lib/example_env/network/ExampleS2CPacket.java deleted file mode 100644 index a7208ca5..00000000 --- a/src/main/java/kasuga/lib/example_env/network/ExampleS2CPacket.java +++ /dev/null @@ -1,25 +0,0 @@ -package kasuga.lib.example_env.network; - -import kasuga.lib.core.network.S2CPacket; -import net.minecraft.client.Minecraft; -import net.minecraft.network.FriendlyByteBuf; - -public class ExampleS2CPacket extends S2CPacket { - - public ExampleS2CPacket() { - super(); - } - - public ExampleS2CPacket(FriendlyByteBuf buf) { - super(buf); - } - @Override - public void handle(Minecraft minecraft) { - System.out.println("I am S2C"); - } - - @Override - public void encode(FriendlyByteBuf buf) { - - } -} diff --git a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDevice.java b/src/main/java/kasuga/lib/example_env/train/ExampleTrainDevice.java deleted file mode 100644 index a96c989d..00000000 --- a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDevice.java +++ /dev/null @@ -1,22 +0,0 @@ -package kasuga.lib.example_env.train; - -import kasuga.lib.core.create.device.TrainDeviceManager; -import kasuga.lib.core.create.device.TrainDeviceSystem; - -public class ExampleTrainDevice extends TrainDeviceSystem { - public ExampleTrainDevice(TrainDeviceManager manager) { - super(manager); - } - - @Override - public void notifySpeed(double speed) { - // Handle speed notification - System.out.println("Speed: " + speed); - - } - - @Override - public boolean cancelSlowdown() { - return true; - } -} diff --git a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlock.java b/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlock.java deleted file mode 100644 index 4a5bab5f..00000000 --- a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlock.java +++ /dev/null @@ -1,21 +0,0 @@ -package kasuga.lib.example_env.train; - -import com.simibubi.create.foundation.block.IBE; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; - -public class ExampleTrainDeviceBlock extends Block implements IBE { - public ExampleTrainDeviceBlock(Properties pProperties) { - super(pProperties); - } - - @Override - public Class getBlockEntityClass() { - return ExampleTrainDeviceBlockEntity.class; - } - - @Override - public BlockEntityType getBlockEntityType() { - return ExampleTrainDeviceModule.EXAMPLE_DEVICE_BLOCK_ENTITY.getType(); - } -} diff --git a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockBehaviour.java b/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockBehaviour.java deleted file mode 100644 index 168ee678..00000000 --- a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockBehaviour.java +++ /dev/null @@ -1,19 +0,0 @@ -package kasuga.lib.example_env.train; - -import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour; -import com.simibubi.create.content.contraptions.behaviour.MovementContext; -import kasuga.lib.core.create.device.TrainDeviceLocation; -import kasuga.lib.core.create.device.TrainDeviceManager; -import kasuga.lib.core.util.data_type.Pair; - -public class ExampleTrainDeviceBlockBehaviour implements MovementBehaviour { - @Override - public void startMoving(MovementContext context) { - if(context.world.isClientSide) - return; - Pair location = TrainDeviceManager.getManager(context); - if(location == null || location.getSecond() == null) - return; - location.getFirst().getOrCreateSystem(ExampleTrainDeviceModule.EXAMPLE_TRAIN_DEVICE); - } -} diff --git a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockEntity.java b/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockEntity.java deleted file mode 100644 index 54273a79..00000000 --- a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceBlockEntity.java +++ /dev/null @@ -1,11 +0,0 @@ -package kasuga.lib.example_env.train; - -import net.minecraft.core.BlockPos; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraft.world.level.block.state.BlockState; - -public class ExampleTrainDeviceBlockEntity extends BlockEntity { - public ExampleTrainDeviceBlockEntity(BlockPos blockPos, BlockState blockState) { - super(ExampleTrainDeviceModule.EXAMPLE_DEVICE_BLOCK_ENTITY.getType(), blockPos, blockState); - } -} diff --git a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceModule.java b/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceModule.java deleted file mode 100644 index 266dc9dd..00000000 --- a/src/main/java/kasuga/lib/example_env/train/ExampleTrainDeviceModule.java +++ /dev/null @@ -1,37 +0,0 @@ -package kasuga.lib.example_env.train; - -import com.simibubi.create.AllMovementBehaviours; -import kasuga.lib.core.create.device.TrainDeviceRegistry; -import kasuga.lib.core.create.device.TrainDeviceSystemType; -import kasuga.lib.example_env.ExampleMain; -import kasuga.lib.registrations.common.BlockEntityReg; -import kasuga.lib.registrations.common.BlockReg; -import kasuga.lib.registrations.create.MovementReg; -import net.minecraft.world.level.material.MapColor; - -public class ExampleTrainDeviceModule { - public static final TrainDeviceSystemType EXAMPLE_TRAIN_DEVICE = new TrainDeviceSystemType<>(ExampleTrainDevice::new); - - public static final BlockReg EXAMPLE_DEVICE_BLOCK = - new BlockReg("example_train_device") - .blockType(ExampleTrainDeviceBlock::new) - .defaultBlockItem() - .materialColor(MapColor.COLOR_BLACK) - .submit(ExampleMain.testRegistry); - - public static final BlockEntityReg EXAMPLE_DEVICE_BLOCK_ENTITY = - new BlockEntityReg("example_train_device") - .blockEntityType(ExampleTrainDeviceBlockEntity::new) - .addBlock(EXAMPLE_DEVICE_BLOCK) - .submit(ExampleMain.testRegistry); - - public static final MovementReg EXAMPLE_DEVICE_MOVEMENT = - new MovementReg("example_train_device") - .behaviour(new ExampleTrainDeviceBlockBehaviour()) - .sortByBlocks(EXAMPLE_DEVICE_BLOCK) - .submit(ExampleMain.testRegistry); - - public static void invoke(){ - TrainDeviceRegistry.register(ExampleMain.testRegistry.asResource("example_train_device"), EXAMPLE_TRAIN_DEVICE); - } -} diff --git a/src/main/java/kasuga/lib/mixins/mixin/KasugaLibMixinPlugin.java b/src/main/java/kasuga/lib/mixins/mixin/KasugaLibMixinPlugin.java index c77419c5..f53dcd8c 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/KasugaLibMixinPlugin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/KasugaLibMixinPlugin.java @@ -1,7 +1,6 @@ package kasuga.lib.mixins.mixin; import kasuga.lib.KasugaLib; -import kasuga.lib.core.util.data_type.Pair; import org.objectweb.asm.tree.ClassNode; import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; import org.spongepowered.asm.mixin.extensibility.IMixinInfo; @@ -11,7 +10,6 @@ import java.util.Optional; import java.util.Set; import java.util.function.Predicate; -import java.util.function.Supplier; public class KasugaLibMixinPlugin implements IMixinConfigPlugin { diff --git a/src/main/java/kasuga/lib/mixins/mixin/MixinStationBlockEntity.java b/src/main/java/kasuga/lib/mixins/mixin/MixinStationBlockEntity.java index 073a3152..c7e11f25 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/MixinStationBlockEntity.java +++ b/src/main/java/kasuga/lib/mixins/mixin/MixinStationBlockEntity.java @@ -5,9 +5,9 @@ import com.simibubi.create.content.trains.station.GlobalStation; import com.simibubi.create.content.trains.station.StationBlockEntity; import com.simibubi.create.content.trains.track.ITrackBlock; -import com.simibubi.create.foundation.utility.NBTHelper; -import com.simibubi.create.foundation.utility.animation.LerpedFloat; import kasuga.lib.core.create.BogeyDataConstants; +import net.createmod.catnip.animation.LerpedFloat; +import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -28,7 +28,8 @@ @Mixin(value = StationBlockEntity.class, remap = false) public abstract class MixinStationBlockEntity extends BlockEntity { - @Shadow(remap = false) abstract Direction getAssemblyDirection(); + @Shadow(remap = false) + public abstract Direction getAssemblyDirection(); @Shadow(remap = false) @Nullable diff --git a/src/main/java/kasuga/lib/mixins/mixin/client/MixinCarriageContraptionEntityRenderer.java b/src/main/java/kasuga/lib/mixins/mixin/client/MixinCarriageContraptionEntityRenderer.java index 14fd758a..9c4ef051 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/client/MixinCarriageContraptionEntityRenderer.java +++ b/src/main/java/kasuga/lib/mixins/mixin/client/MixinCarriageContraptionEntityRenderer.java @@ -3,8 +3,8 @@ import com.simibubi.create.content.trains.entity.Carriage; import com.simibubi.create.content.trains.entity.CarriageContraptionEntity; import com.simibubi.create.content.trains.entity.CarriageContraptionEntityRenderer; -import com.simibubi.create.foundation.utility.NBTHelper; import kasuga.lib.core.create.BogeyDataConstants; +import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.Direction; import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; diff --git a/src/main/java/kasuga/lib/mixins/mixin/client/MixinStationBlockEntityClient.java b/src/main/java/kasuga/lib/mixins/mixin/client/MixinStationBlockEntityClient.java index cb360f69..83fafdea 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/client/MixinStationBlockEntityClient.java +++ b/src/main/java/kasuga/lib/mixins/mixin/client/MixinStationBlockEntityClient.java @@ -3,8 +3,8 @@ import com.simibubi.create.content.trains.bogey.AbstractBogeyBlock; import com.simibubi.create.content.trains.bogey.AbstractBogeyBlockEntity; import com.simibubi.create.content.trains.station.StationBlockEntity; -import com.simibubi.create.foundation.utility.NBTHelper; import kasuga.lib.core.create.BogeyDataConstants; +import net.createmod.catnip.nbt.NBTHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/kasuga/lib/mixins/mixin/create/CarriageContraptionMixin.java b/src/main/java/kasuga/lib/mixins/mixin/create/CarriageContraptionMixin.java index e461f423..ecc054bd 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/create/CarriageContraptionMixin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/create/CarriageContraptionMixin.java @@ -7,13 +7,16 @@ import net.minecraft.core.Direction; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; -import net.minecraftforge.registries.ForgeRegistries; +import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; +import org.apache.commons.lang3.tuple.Pair; 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 org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(value = CarriageContraption.class, remap = false) public class CarriageContraptionMixin { @@ -31,7 +34,7 @@ public class CarriageContraptionMixin { value = "HEAD" ) ) - public void beforeCapture(Level world, BlockPos pos, CallbackInfo ci){ + public void beforeCapture(Level world, BlockPos pos, CallbackInfoReturnable> cir){ BlockState blockState = world.getBlockState(pos); Block block = blockState.getBlock(); captureTrainController(blockState, block); diff --git a/src/main/java/kasuga/lib/mixins/mixin/create/GlobalRailwayManagerMixin.java b/src/main/java/kasuga/lib/mixins/mixin/create/GlobalRailwayManagerMixin.java index b8c31063..0f0ca2d6 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/create/GlobalRailwayManagerMixin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/create/GlobalRailwayManagerMixin.java @@ -2,7 +2,6 @@ import com.simibubi.create.Create; import com.simibubi.create.content.trains.GlobalRailwayManager; -import com.simibubi.create.content.trains.entity.Train; import com.simibubi.create.content.trains.graph.TrackEdge; import com.simibubi.create.content.trains.graph.TrackGraph; import com.simibubi.create.content.trains.graph.TrackNode; @@ -14,7 +13,6 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.UUID; diff --git a/src/main/java/kasuga/lib/mixins/mixin/create/TrackGraphMixin.java b/src/main/java/kasuga/lib/mixins/mixin/create/TrackGraphMixin.java index d9693fd0..6e01267a 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/create/TrackGraphMixin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/create/TrackGraphMixin.java @@ -5,10 +5,9 @@ import com.simibubi.create.content.trains.graph.TrackNode; import com.simibubi.create.content.trains.graph.TrackNodeLocation; import com.simibubi.create.content.trains.track.BezierConnection; -import com.simibubi.create.content.trains.track.TrackPropagator; -import com.simibubi.create.foundation.utility.Couple; import kasuga.lib.KasugaLib; import kasuga.lib.core.create.graph.GraphExtraData; +import net.createmod.catnip.data.Couple; import net.minecraft.world.level.LevelAccessor; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; diff --git a/src/main/java/kasuga/lib/mixins/mixin/create/TrackTargetingClientMixin.java b/src/main/java/kasuga/lib/mixins/mixin/create/TrackTargetingClientMixin.java index e00cf532..27cbe8f2 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/create/TrackTargetingClientMixin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/create/TrackTargetingClientMixin.java @@ -5,44 +5,74 @@ import com.simibubi.create.content.trains.track.BezierTrackPointLocation; import com.simibubi.create.content.trains.track.TrackTargetingBehaviour; import com.simibubi.create.content.trains.track.TrackTargetingClient; +import com.simibubi.create.foundation.blockEntity.behaviour.BehaviourType; import kasuga.lib.core.create.edge_point.EdgePointOverlayRenderer; import kasuga.lib.core.create.edge_point.EdgePointOverlayRendererRegistry; -import net.minecraft.client.renderer.MultiBufferSource; +import net.createmod.catnip.render.SuperRenderTypeBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; 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.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + @Mixin(value = TrackTargetingClient.class, remap = false) public class TrackTargetingClientMixin { + @Unique @Shadow private static EdgePointType lastType; + @Shadow private static BezierTrackPointLocation lastHoveredBezierSegment; + @Inject(method = "render", at = @At( value = "INVOKE", target = "Lcom/simibubi/create/content/trains/track/TrackTargetingBehaviour;render(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction$AxisDirection;Lcom/simibubi/create/content/trains/track/BezierTrackPointLocation;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;IILcom/simibubi/create/content/trains/track/TrackTargetingBehaviour$RenderedTrackOverlayType;F)V" - ), cancellable = true) - void onRenderCall( - LevelAccessor level, + ), locals = LocalCapture.CAPTURE_FAILSOFT, cancellable = true) + private static void onRenderCall( + PoseStack ms, SuperRenderTypeBuffer buffer, Vec3 camera, // 原始参数 + CallbackInfo ci, + // --- 以下是根据方法体推断的局部变量 --- + Minecraft mc, BlockPos pos, - Direction.AxisDirection direction, - BezierTrackPointLocation bezier, - PoseStack ms, - MultiBufferSource buffer, int light, - int overlay, - TrackTargetingBehaviour.RenderedTrackOverlayType type, - float scale, - CallbackInfo callbackInfo - ){ + Direction.AxisDirection direction, + TrackTargetingBehaviour.RenderedTrackOverlayType type // 这里捕获到了 type + ) { + // 1. 获取 Registry。 + // 因为这是静态环境,我们无法通过 this 获取实例。 + // 我们直接使用该类中的静态变量 lastType(如果 Mixin 能访问到) + // 或者通过你的 EdgePointOverlayRendererRegistry 获取。 + + // 注意:在 Create 源码中,lastType 是静态字段。 + // 我们假设 EdgePointOverlayRendererRegistry.getRendererFor 已经适配了 EdgePointType。 + + // 关键:从静态上下文获取当前的 EdgePointType + // 如果 lastType 是私有的,你需要用 @Shadow 声明它 EdgePointOverlayRenderer renderer = EdgePointOverlayRendererRegistry.getRendererFor(lastType); - if(renderer == null){ - return; + + if (renderer != null) { + // 2. 使用捕获的变量进行渲染 + // 注意:lastHoveredBezierSegment 也是静态的,可以直接引用 + renderer.renderOverlay( + mc.level, + pos, + direction, + lastHoveredBezierSegment, + ms, + buffer, + light, + OverlayTexture.NO_OVERLAY, + 1 + 1 / 16f + ); + + // 3. 成功则取消后续原版渲染 + ci.cancel(); } - renderer.renderOverlay(level, pos, direction, bezier, ms, buffer, light, overlay, scale); - callbackInfo.cancel(); } } diff --git a/src/main/java/kasuga/lib/mixins/mixin/create/TrainMixin.java b/src/main/java/kasuga/lib/mixins/mixin/create/TrainMixin.java index 52120b1c..d6b33cde 100644 --- a/src/main/java/kasuga/lib/mixins/mixin/create/TrainMixin.java +++ b/src/main/java/kasuga/lib/mixins/mixin/create/TrainMixin.java @@ -15,9 +15,9 @@ import net.minecraft.nbt.CompoundTag; import org.spongepowered.asm.mixin.Mixin; 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.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -29,9 +29,11 @@ @Mixin(value = Train.class, remap = false) public class TrainMixin implements TrainDeviceProvider { + @Unique private TrainDeviceManager kasuga$manager; - @Shadow protected void updateNavigationTarget(double distance){throw new IllegalStateException("Mixin Error?");}; + @Unique + protected void updateNavigationTarget(double distance){throw new IllegalStateException("Mixin Error?");} @Shadow public double speed; @@ -46,20 +48,12 @@ public void doTickPassiveSlowdown(Train train, Operation original) { Optional speed = kasuga$manager.beforeSpeed(); - if(speed.isPresent()) { - this.speed = speed.get(); - } + speed.ifPresent(aDouble -> this.speed = aDouble); } - @Redirect( - method = "tick", - at = @At( - value = "INVOKE", - target = "Lcom/simibubi/create/content/trains/entity/Train;updateNavigationTarget(D)V" - ) - ) + @Unique public void doUpdateNavigationTarget(Train train, double distance){ if(train.graph == null)return; this.updateNavigationTarget(distance); @@ -129,4 +123,4 @@ private void onWrite(DimensionPalette dimensions, CallbackInfoReturnable rendererSu @Override public BogeyGroupReg submit(SimpleRegistry registry) { - AllBogeyStyles.BogeyStyleBuilder builder= new AllBogeyStyles.BogeyStyleBuilder(registry.asResource(registrationKey), registry.asResource(cycleGroup)); + ResourceLocation styleId = registry.asResource(registrationKey); + ResourceLocation groupLocation = registry.asResource(cycleGroup); + BogeyStyle.Builder builder = new BogeyStyle.Builder(styleId,groupLocation); + if (translationName != null) builder.displayName(translationName); if (contactParticle != null) builder.contactParticle(contactParticle); if (smokeParticle != null) builder.smokeParticle(smokeParticle); + for (BogeyStyleBuilderContext context : contexts) { - ResourceLocation location = new ResourceLocation(context.id.getNamespace().equals("") ? registry.namespace : context.id.getNamespace(), context.id.getPath()); - builder.size(context.size, () -> context.supplier, location); + Supplier> blockSupplier = () -> { + Block block = ForgeRegistries.BLOCKS.getValue(context.id); + return block instanceof AbstractBogeyBlock bogeyBlock ? bogeyBlock : null; + }; + + Supplier> rendererSupplier = () -> () -> { + BogeyRenderer renderer = context.supplier.get(); + return new BogeyStyle.SizeRenderer(renderer, null); + }; + + builder.size( + context.size, + blockSupplier, + rendererSupplier + ); } + style = builder.build(); return this; } @@ -102,5 +117,9 @@ public String getIdentifier() { return "bogey_group"; } - public record BogeyStyleBuilderContext(BogeySizes.BogeySize size, Supplier supplier, ResourceLocation id){} -} + public record BogeyStyleBuilderContext( + BogeySizes.BogeySize size, + Supplier supplier, + ResourceLocation id + ){} +} \ No newline at end of file diff --git a/src/main/java/kasuga/lib/registrations/create/BogeySizeReg.java b/src/main/java/kasuga/lib/registrations/create/BogeySizeReg.java index 72979b78..855f5440 100644 --- a/src/main/java/kasuga/lib/registrations/create/BogeySizeReg.java +++ b/src/main/java/kasuga/lib/registrations/create/BogeySizeReg.java @@ -18,7 +18,8 @@ public BogeySizeReg size(float size) { @Override public BogeySizeReg submit(SimpleRegistry registry) { - bogeySize = BogeySizes.addSize(registry.asResource(registrationKey), size); + bogeySize = new BogeySizes.BogeySize(registry.asResource(registrationKey), size); + BogeySizes.register(bogeySize); return this; } diff --git a/src/main/java/kasuga/lib/registrations/create/InteractionReg.java b/src/main/java/kasuga/lib/registrations/create/InteractionReg.java index c312bfbb..6c6e0c53 100644 --- a/src/main/java/kasuga/lib/registrations/create/InteractionReg.java +++ b/src/main/java/kasuga/lib/registrations/create/InteractionReg.java @@ -1,7 +1,7 @@ package kasuga.lib.registrations.create; import com.simibubi.create.AllInteractionBehaviours; -import com.simibubi.create.content.contraptions.behaviour.MovingInteractionBehaviour; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; import kasuga.lib.registrations.Reg; import kasuga.lib.registrations.common.BlockReg; import kasuga.lib.registrations.exception.RegistryElementNotPresentException; @@ -76,7 +76,7 @@ public void onSetup() { if (blocks == null) crashOnNotPresent(InteractionReg.class, getIdentifier(), "you must provide a list of block for registration."); for (BlockReg block : blocks) - AllInteractionBehaviours.registerBehaviour(block.getBlock(), behaviour); + MovingInteractionBehaviour.REGISTRY.register(block.getBlock(), behaviour); } case predicate -> { if (blocks == null) @@ -85,24 +85,24 @@ public void onSetup() { crashOnNotPresent(InteractionReg.class, getIdentifier(), "you must provide a predictor for registration."); for (BlockReg block : blocks) { if (blockPredicate.test(block)) - AllInteractionBehaviours.registerBehaviour(block.getBlock(), behaviour); + MovingInteractionBehaviour.REGISTRY.register(block.getBlock(), behaviour); } } case state_predicate -> { if (statePredicate == null) crashOnNotPresent(InteractionReg.class, getIdentifier(), "you must provide a predictor for registration."); - AllInteractionBehaviours.registerBehaviourProvider( - state -> statePredicate.test(state) ? behaviour : null + MovingInteractionBehaviour.REGISTRY.registerProvider( + (state) -> statePredicate.test(state.defaultBlockState()) ? behaviour : null ); } case tag -> { if (tags == null) crashOnNotPresent(InteractionReg.class, getIdentifier(), "you must provide a list of tags for registration."); - AllInteractionBehaviours.registerBehaviourProvider( + MovingInteractionBehaviour.REGISTRY.registerProvider( state -> { boolean flag = false; - for (TagKey tag : tags) { - if (state.is(tag)) { + for (TagKey tag : tags) { + if (state.defaultBlockState().is(tag)) { flag = true; break; } @@ -124,7 +124,7 @@ public void onSetup() { break; } } - if (flag) AllInteractionBehaviours.registerBehaviour(reg.getBlock(), behaviour); + if (flag) MovingInteractionBehaviour.REGISTRY.register(reg.getBlock(), behaviour); } } } diff --git a/src/main/java/kasuga/lib/registrations/create/MovementReg.java b/src/main/java/kasuga/lib/registrations/create/MovementReg.java index 014a12cf..1bf4696e 100644 --- a/src/main/java/kasuga/lib/registrations/create/MovementReg.java +++ b/src/main/java/kasuga/lib/registrations/create/MovementReg.java @@ -1,7 +1,8 @@ package kasuga.lib.registrations.create; import com.simibubi.create.AllMovementBehaviours; -import com.simibubi.create.content.contraptions.behaviour.MovementBehaviour; +import com.simibubi.create.api.behaviour.interaction.MovingInteractionBehaviour; +import com.simibubi.create.api.behaviour.movement.MovementBehaviour; import kasuga.lib.registrations.Reg; import kasuga.lib.registrations.common.BlockReg; import kasuga.lib.registrations.registry.CreateRegistry; @@ -74,7 +75,7 @@ public void onSetup() { if (blocks == null) crashOnNotPresent(MovementReg.class, getIdentifier(), "you must provide a list of block for registration."); for (BlockReg block : blocks) - AllMovementBehaviours.registerBehaviour(block.getBlock(), behaviour); + MovementBehaviour.REGISTRY.register(block.getBlock(), behaviour); } case predicate -> { if (blocks == null) @@ -83,24 +84,24 @@ public void onSetup() { crashOnNotPresent(MovementReg.class, getIdentifier(), "you must provide a predictor for registration."); for (BlockReg block : blocks) { if (blockPredicate.test(block)) - AllMovementBehaviours.registerBehaviour(block.getBlock(), behaviour); + MovementBehaviour.REGISTRY.register(block.getBlock(), behaviour); } } case state_predicate -> { if (statePredicate == null) crashOnNotPresent(MovementReg.class, getIdentifier(), "you must provide a predictor for registration."); - AllMovementBehaviours.registerBehaviourProvider( - state -> statePredicate.test(state) ? behaviour : null + MovementBehaviour.REGISTRY.registerProvider( + state -> statePredicate.test(state.defaultBlockState()) ? behaviour : null ); } case tag -> { if (tags == null) crashOnNotPresent(MovementReg.class, getIdentifier(), "you must provide a list of tags for registration."); - AllMovementBehaviours.registerBehaviourProvider( + MovementBehaviour.REGISTRY.registerProvider( state -> { boolean flag = false; for (TagKey tag : tags) { - if (state.is(tag)) { + if (state.defaultBlockState().is(tag)) { flag = true; break; } @@ -122,7 +123,7 @@ public void onSetup() { break; } } - if (flag) AllMovementBehaviours.registerBehaviour(reg.getBlock(), behaviour); + if (flag) MovementBehaviour.REGISTRY.register(reg.getBlock(), behaviour); } } } diff --git a/src/main/java/kasuga/lib/registrations/create/TrackEdgePointReg.java b/src/main/java/kasuga/lib/registrations/create/TrackEdgePointReg.java index 7d5aa2aa..f87c365f 100644 --- a/src/main/java/kasuga/lib/registrations/create/TrackEdgePointReg.java +++ b/src/main/java/kasuga/lib/registrations/create/TrackEdgePointReg.java @@ -5,16 +5,12 @@ import com.simibubi.create.content.trains.track.TrackTargetingBlockItem; import com.tterrag.registrate.util.nullness.NonNullBiFunction; import kasuga.lib.core.create.edge_point.EdgePointOverlayRenderer; -import kasuga.lib.example_env.boundary.ExampleBoundaryBlock; import kasuga.lib.registrations.Reg; import kasuga.lib.registrations.builders.SelfReferenceItemBuilder; -import kasuga.lib.registrations.common.BlockReg; import kasuga.lib.registrations.registry.SimpleRegistry; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; -import java.util.function.BiFunction; import java.util.function.Supplier; public class TrackEdgePointReg extends Reg { diff --git a/src/main/java/kasuga/lib/registrations/create/TrackMaterialReg.java b/src/main/java/kasuga/lib/registrations/create/TrackMaterialReg.java index cf33b795..2f14a898 100644 --- a/src/main/java/kasuga/lib/registrations/create/TrackMaterialReg.java +++ b/src/main/java/kasuga/lib/registrations/create/TrackMaterialReg.java @@ -1,10 +1,10 @@ package kasuga.lib.registrations.create; -import com.jozufozu.flywheel.core.PartialModel; import com.simibubi.create.content.trains.track.TrackBlock; import com.simibubi.create.content.trains.track.TrackMaterial; import com.simibubi.create.content.trains.track.TrackMaterialFactory; import com.tterrag.registrate.util.nullness.NonNullSupplier; +import dev.engine_room.flywheel.lib.model.baked.PartialModel; import kasuga.lib.KasugaLib; import kasuga.lib.core.create.TrackType; import kasuga.lib.registrations.Reg; diff --git a/src/main/java/kasuga/lib/registrations/registry/CreateRegistry.java b/src/main/java/kasuga/lib/registrations/registry/CreateRegistry.java index c1b15f1c..23ad7c8c 100644 --- a/src/main/java/kasuga/lib/registrations/registry/CreateRegistry.java +++ b/src/main/java/kasuga/lib/registrations/registry/CreateRegistry.java @@ -10,15 +10,7 @@ public class CreateRegistry extends SimpleRegistry { private final CreateRegistrate createRegistry; private final LinkedList movements; - /** - * This constructor is used for create a new KasugaLib registration. - * - * @param namespace your mod namespace name - * @param bus your mod namespace eventbus. For more info see - * {@link FMLJavaModLoadingContext#get()} - * and - * {@link FMLJavaModLoadingContext#getModEventBus()} - */ + public CreateRegistry(String namespace, IEventBus bus) { super(namespace, bus); movements = new LinkedList<>(); diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 5c8281fc..b8888d87 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -67,6 +67,6 @@ Kasuga Lib is a base mod aiming at simplify modding. [[dependencies.kasuga_lib]] modId="create" mandatory=true - versionRange="[0.5.1.e,)" + versionRange="[6.0.8,)" ordering="AFTER" side="BOTH"