Add contributor and fix bugs on server
This commit is contained in:
parent
e674baed2d
commit
da2fd0e78a
|
|
@ -21,25 +21,44 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
fetch-tags: true
|
|
||||||
|
|
||||||
- name: Setup JDK 21
|
- name: Setup JDK
|
||||||
uses: actions/setup-java@v4
|
uses: actions/setup-java@v4
|
||||||
with:
|
with:
|
||||||
java-version: '21'
|
java-version: '17'
|
||||||
distribution: 'temurin'
|
distribution: 'temurin'
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@v4
|
uses: gradle/actions/setup-gradle@v4
|
||||||
|
with:
|
||||||
|
gradle-version: '8.4'
|
||||||
|
|
||||||
|
- name: Test Server
|
||||||
|
run: gradle runGameTestServer
|
||||||
|
continue-on-error: true
|
||||||
|
|
||||||
- name: Build with Gradle
|
- name: Build with Gradle
|
||||||
run: |
|
run: gradle build
|
||||||
gradle wrapper --gradle-version 7.6.4
|
|
||||||
gradle build
|
- name: Create timestamp
|
||||||
|
id: create_timestamp
|
||||||
|
run: echo "timestamp=$(date '+%Y-%m-%d-%H-%M-%S')" >> $GITHUB_OUTPUT
|
||||||
|
shell: bash
|
||||||
|
|
||||||
- uses: Kir-Antipov/mc-publish@v3.3
|
- uses: Kir-Antipov/mc-publish@v3.3
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
github-tag: 1.19.2-Forge
|
github-tag: 1.19.2-Forge-${{ steps.create_timestamp.outputs.timestamp }}
|
||||||
|
github-draft: false
|
||||||
|
github-prerelease: false
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
overwrite: true
|
||||||
|
include-hidden-files: true
|
||||||
|
path: |
|
||||||
|
**/logs/
|
||||||
|
**/crash-reports/
|
||||||
|
build/libs
|
||||||
|
retention-days: 7
|
||||||
|
if: always()
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
/run/
|
/run/
|
||||||
|
/1.19.2-run/
|
||||||
/.vscode/
|
/.vscode/
|
||||||
/.idea/
|
/.idea/
|
||||||
/bin/
|
/bin/
|
||||||
|
|
|
||||||
|
|
@ -16,4 +16,6 @@ If you want to download code on your computer, please change gradle version in `
|
||||||
- [x] Support 1.21.1
|
- [x] Support 1.21.1
|
||||||
- [ ] Transplant all stuff to 1.20.1 and 1.21.1
|
- [ ] Transplant all stuff to 1.20.1 and 1.21.1
|
||||||
## License
|
## License
|
||||||
[MIT_License](https://mit-license.org/)
|
[MIT_License](https://mit-license.org/)
|
||||||
|
## Thanks
|
||||||
|
Thanks to [KAllFix](https://center.mcmod.cn/170204/) improves the code and offer me help.
|
||||||
12
build.gradle
12
build.gradle
|
|
@ -1,18 +1,24 @@
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
// These repositories are only for Gradle plugins, put any other repositories in the repository overlays further below
|
// These repositories are only for Gradle plugins, put any other repositories in the repository overlays further below
|
||||||
|
maven { url = 'https://maven.parchmentmc.org' }
|
||||||
maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
|
maven { url = 'https://repo.spongepowered.org/repository/maven-public/' }
|
||||||
|
maven { url = 'https://maven.minecraftforge.net' }
|
||||||
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
|
classpath "net.minecraftforge.gradle:ForgeGradle:5.1.74"
|
||||||
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
|
||||||
|
classpath "org.parchmentmc:librarian:1.+"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'eclipse'
|
id 'eclipse'
|
||||||
id 'idea'
|
id 'idea'
|
||||||
id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
|
id 'maven-publish'
|
||||||
|
id 'net.minecraftforge.gradle' version '[6.0,6.2)'
|
||||||
id 'org.parchmentmc.librarian.forgegradle' version '1.+'
|
id 'org.parchmentmc.librarian.forgegradle' version '1.+'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,7 +79,7 @@ minecraft {
|
||||||
runs {
|
runs {
|
||||||
// applies to all the run configs below
|
// applies to all the run configs below
|
||||||
configureEach {
|
configureEach {
|
||||||
workingDirectory project.file('run')
|
workingDirectory project.file('1.19.2-run')
|
||||||
|
|
||||||
// Recommended logging data for a userdev environment
|
// Recommended logging data for a userdev environment
|
||||||
// The markers can be added/remove as needed separated by commas.
|
// The markers can be added/remove as needed separated by commas.
|
||||||
|
|
@ -103,6 +109,7 @@ minecraft {
|
||||||
server {
|
server {
|
||||||
property 'forge.enabledGameTestNamespaces', mod_id
|
property 'forge.enabledGameTestNamespaces', mod_id
|
||||||
args '--nogui'
|
args '--nogui'
|
||||||
|
workingDirectory project.file('1.19.2-run/server')
|
||||||
}
|
}
|
||||||
|
|
||||||
// This run config launches GameTestServer and runs all registered gametests, then exits.
|
// This run config launches GameTestServer and runs all registered gametests, then exits.
|
||||||
|
|
@ -166,7 +173,6 @@ dependencies {
|
||||||
runtimeOnly fg.deobf("curse.maven:mekanism-268560:4644795")
|
runtimeOnly fg.deobf("curse.maven:mekanism-268560:4644795")
|
||||||
runtimeOnly fg.deobf("curse.maven:cyclops-core-232758:4681659")
|
runtimeOnly fg.deobf("curse.maven:cyclops-core-232758:4681659")
|
||||||
runtimeOnly fg.deobf("curse.maven:capabilityproxy-266479:3929855")
|
runtimeOnly fg.deobf("curse.maven:capabilityproxy-266479:3929855")
|
||||||
runtimeOnly fg.deobf("curse.maven:toms-storage-378609:4649846")
|
|
||||||
compileOnly fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")
|
compileOnly fg.deobf("com.tterrag.registrate:Registrate:${registrate_version}")
|
||||||
implementation fg.deobf("curse.maven:create-328085:4835190")
|
implementation fg.deobf("curse.maven:create-328085:4835190")
|
||||||
implementation fg.deobf("curse.maven:storage-drawers-223852:5648923")
|
implementation fg.deobf("curse.maven:storage-drawers-223852:5648923")
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ mod_name=SmarterContraptionStorage
|
||||||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||||
mod_license=MIT_License
|
mod_license=MIT_License
|
||||||
# The mod version. See https://semver.org/
|
# The mod version. See https://semver.org/
|
||||||
mod_version=1.19.2-1.3.1
|
mod_version=1.19.2-1.3.2
|
||||||
# The group ID for the mod. It is only important when publishing as an artifact to Excludes.BuildNBTFile Maven repository.
|
# The group ID for the mod. It is only important when publishing as an artifact to Excludes.BuildNBTFile Maven repository.
|
||||||
# This should match the base package used for the mod sources.
|
# This should match the base package used for the mod sources.
|
||||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
|
distributionUrl=https:\//mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
|
||||||
# Should change to 7.* (for example 7.6.4), but for no reason I couldn't download this version on my computer even 8.* can use.
|
|
||||||
networkTimeout=10000
|
networkTimeout=10000
|
||||||
validateDistributionUrl=true
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
|
|
|
||||||
|
|
@ -71,6 +71,7 @@ public interface HelperMenuProvider<T extends StorageHandlerHelper> extends Cont
|
||||||
ContraptionMenuProvider.super.error();
|
ContraptionMenuProvider.super.error();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
<U extends Screen & MenuAccess<?>> U createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component);
|
<U extends Screen & MenuAccess<?>> U createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component);
|
||||||
|
|
||||||
default void writeToBuffer(@NotNull FriendlyByteBuf buffer) {
|
default void writeToBuffer(@NotNull FriendlyByteBuf buffer) {
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,11 @@ package net.smartercontraptionstorage.AddStorage.GUI.BlockEntityMenu;
|
||||||
import com.simibubi.create.foundation.utility.Pair;
|
import com.simibubi.create.foundation.utility.Pair;
|
||||||
import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld;
|
import com.simibubi.create.foundation.utility.worldWrappers.WrappedWorld;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.server.level.ServerLevel;
|
||||||
import net.minecraft.server.level.ServerPlayer;
|
import net.minecraft.server.level.ServerPlayer;
|
||||||
import net.minecraft.world.entity.Entity;
|
import net.minecraft.world.entity.Entity;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.smartercontraptionstorage.Message.MenuLevelPacket;
|
import net.smartercontraptionstorage.Message.MenuLevelPacket;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
|
|
@ -25,10 +28,10 @@ public class MenuLevel extends WrappedWorld {
|
||||||
|
|
||||||
private static Level tickingLevel;
|
private static Level tickingLevel;
|
||||||
|
|
||||||
public static MenuLevel level = new MenuLevel();
|
private static ClientMenuLevel clientLevel = null;
|
||||||
|
|
||||||
private MenuLevel() {
|
private MenuLevel(Level level) {
|
||||||
super(Minecraft.getInstance().level);
|
super(level);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<Pair<Integer, Long>, BlockEntity> getBlocks(){
|
public static Map<Pair<Integer, Long>, BlockEntity> getBlocks(){
|
||||||
|
|
@ -59,26 +62,35 @@ public class MenuLevel extends WrappedWorld {
|
||||||
return blocks.get(pair);
|
return blocks.get(pair);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static MenuLevel tickingBlockEntity(Pair<Integer, Long> pair,boolean isClient) {
|
private static MenuLevel clientLevel(){
|
||||||
|
if(clientLevel == null){
|
||||||
|
clientLevel = new ClientMenuLevel();
|
||||||
|
}
|
||||||
|
return clientLevel.clientLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MenuLevel level(Level level) {
|
||||||
|
if(level.isClientSide()) {
|
||||||
|
return clientLevel();
|
||||||
|
}
|
||||||
|
else if(level instanceof ServerLevel){
|
||||||
|
return new MenuLevel(level);
|
||||||
|
}else throw new RuntimeException("Open menu get null server level !");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MenuLevel tickingBlockEntity(Pair<Integer, Long> pair,Level level){
|
||||||
if(tickingBlockEntity != null){
|
if(tickingBlockEntity != null){
|
||||||
tickingBlockEntity.setLevel(tickingLevel);
|
tickingBlockEntity.setLevel(tickingLevel);
|
||||||
}
|
}
|
||||||
if(blocks.containsKey(pair)) {
|
if(blocks.containsKey(pair)) {
|
||||||
tickingBlockEntity = blocks.get(pair);
|
tickingBlockEntity = blocks.get(pair);
|
||||||
tickingLevel = tickingBlockEntity.getLevel();
|
tickingLevel = tickingBlockEntity.getLevel();
|
||||||
tickingBlockEntity.setLevel(level);
|
MenuLevel menuLevel = level(level);
|
||||||
|
tickingBlockEntity.setLevel(menuLevel);
|
||||||
|
return menuLevel;
|
||||||
} else {
|
} else {
|
||||||
tickingBlockEntity = null;
|
throw new IllegalArgumentException("Pair is not found ! Pair: " + pair);
|
||||||
tickingLevel = null;
|
|
||||||
}
|
}
|
||||||
level.isClientSide = isClient;
|
|
||||||
return level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MenuLevel tickingBlockEntity(Pair<Integer, Long> pair,Level level){
|
|
||||||
MenuLevel value = tickingBlockEntity(pair, level.isClientSide());
|
|
||||||
tickingLevel = level;
|
|
||||||
return value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void setTickingBlockEntity(BlockEntity blockEntity){
|
private static void setTickingBlockEntity(BlockEntity blockEntity){
|
||||||
|
|
@ -107,4 +119,9 @@ public class MenuLevel extends WrappedWorld {
|
||||||
entityIn.level = tickingLevel;
|
entityIn.level = tickingLevel;
|
||||||
return tickingLevel.addFreshEntity(entityIn);
|
return tickingLevel.addFreshEntity(entityIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class ClientMenuLevel{
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
|
protected MenuLevel clientLevel = new MenuLevel(Minecraft.getInstance().level);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -15,6 +15,8 @@ import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
import net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackBlock;
|
import net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackBlock;
|
||||||
import net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackBlockEntity;
|
import net.p3pp3rf1y.sophisticatedbackpacks.backpack.BackpackBlockEntity;
|
||||||
|
|
@ -106,7 +108,7 @@ public class SBackPacksHandlerHelper extends StorageHandlerHelper implements Hel
|
||||||
return MenuLevel.levelRun((setter) -> {
|
return MenuLevel.levelRun((setter) -> {
|
||||||
setter.accept(getBlockEntity());
|
setter.accept(getBlockEntity());
|
||||||
Level level = player.level;
|
Level level = player.level;
|
||||||
player.level = MenuLevel.level;
|
player.level = MenuLevel.level(level);
|
||||||
BackpackContainer container = new BackpackContainer(i, player, new BackpackContext.Block(getBlockEntity().getBlockPos()));
|
BackpackContainer container = new BackpackContainer(i, player, new BackpackContext.Block(getBlockEntity().getBlockPos()));
|
||||||
player.level = level;
|
player.level = level;
|
||||||
return container;
|
return container;
|
||||||
|
|
@ -118,6 +120,7 @@ public class SBackPacksHandlerHelper extends StorageHandlerHelper implements Hel
|
||||||
return menu.getMenu() instanceof BackpackContainer;
|
return menu.getMenu() instanceof BackpackContainer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
@Override
|
@Override
|
||||||
public BackpackScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
public BackpackScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
||||||
return new BackpackScreen((BackpackContainer) menu.getMenu(), inventory, component);
|
return new BackpackScreen((BackpackContainer) menu.getMenu(), inventory, component);
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
import net.p3pp3rf1y.sophisticatedcore.inventory.InventoryHandler;
|
import net.p3pp3rf1y.sophisticatedcore.inventory.InventoryHandler;
|
||||||
import net.p3pp3rf1y.sophisticatedcore.util.BlockItemBase;
|
import net.p3pp3rf1y.sophisticatedcore.util.BlockItemBase;
|
||||||
|
|
@ -111,7 +113,7 @@ public class SStorageBlockHelper extends StorageHandlerHelper implements HelperM
|
||||||
if(getPair() != null) {
|
if(getPair() != null) {
|
||||||
MenuLevel.tickingBlockEntity(getPair(),player.level);
|
MenuLevel.tickingBlockEntity(getPair(),player.level);
|
||||||
Level level = player.level;
|
Level level = player.level;
|
||||||
player.level = MenuLevel.level;
|
player.level = MenuLevel.level(level);
|
||||||
menu = isLimitedBarrelBlock() ? new LimitedBarrelContainerMenu(i, player, getBlockEntity().getBlockPos()) : new StorageContainerMenu(i,player,getBlockEntity().getBlockPos());
|
menu = isLimitedBarrelBlock() ? new LimitedBarrelContainerMenu(i, player, getBlockEntity().getBlockPos()) : new StorageContainerMenu(i,player,getBlockEntity().getBlockPos());
|
||||||
player.level = level;
|
player.level = level;
|
||||||
}
|
}
|
||||||
|
|
@ -123,6 +125,7 @@ public class SStorageBlockHelper extends StorageHandlerHelper implements HelperM
|
||||||
return isLimitedBarrelBlock() ? menu.getMenu() instanceof LimitedBarrelContainerMenu : menu.getMenu() instanceof StorageContainerMenu;
|
return isLimitedBarrelBlock() ? menu.getMenu() instanceof LimitedBarrelContainerMenu : menu.getMenu() instanceof StorageContainerMenu;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
@Override
|
@Override
|
||||||
public StorageScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
public StorageScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
||||||
if(isLimitedBarrelBlock()) {
|
if(isLimitedBarrelBlock()) {
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import net.minecraft.world.item.Item;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||||
|
import net.minecraftforge.api.distmarker.Dist;
|
||||||
|
import net.minecraftforge.api.distmarker.OnlyIn;
|
||||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||||
import net.minecraftforge.items.ItemStackHandler;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
import net.smartercontraptionstorage.AddStorage.GUI.BlockEntityMenu.HelperMenuProvider;
|
import net.smartercontraptionstorage.AddStorage.GUI.BlockEntityMenu.HelperMenuProvider;
|
||||||
|
|
@ -124,6 +126,7 @@ public class ToolboxHandlerHelper extends StorageHandlerHelper implements NeedDe
|
||||||
return pair;
|
return pair;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OnlyIn(Dist.CLIENT)
|
||||||
@Override
|
@Override
|
||||||
public ToolboxScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
public ToolboxScreen createScreen(MovingBlockEntityMenu menu, Inventory inventory, Component component) {
|
||||||
return new ToolboxScreen((ToolboxMenu) menu.getMenu(),inventory,component);
|
return new ToolboxScreen((ToolboxMenu) menu.getMenu(),inventory,component);
|
||||||
|
|
|
||||||
|
|
@ -138,9 +138,10 @@ public abstract class ContraptionMixin implements Gettable {
|
||||||
public void help_deserialize(Level world, CompoundTag nbt, boolean spawnData, CallbackInfo ci){
|
public void help_deserialize(Level world, CompoundTag nbt, boolean spawnData, CallbackInfo ci){
|
||||||
FunctionChanger.getBlockEntity = (pos) -> {
|
FunctionChanger.getBlockEntity = (pos) -> {
|
||||||
try {
|
try {
|
||||||
|
BlockEntity entity;
|
||||||
if(spawnData) {
|
if(spawnData) {
|
||||||
BlockPos localPos = toLocalPos(pos);
|
BlockPos localPos = toLocalPos(pos);
|
||||||
return presentBlockEntities.get(localPos);
|
entity = presentBlockEntities.get(localPos);
|
||||||
} else {
|
} else {
|
||||||
StructureTemplate.StructureBlockInfo info = blocks.get(pos);
|
StructureTemplate.StructureBlockInfo info = blocks.get(pos);
|
||||||
CompoundTag tag = info.nbt;
|
CompoundTag tag = info.nbt;
|
||||||
|
|
@ -148,9 +149,13 @@ public abstract class ContraptionMixin implements Gettable {
|
||||||
tag.putInt("x", info.pos.getX());
|
tag.putInt("x", info.pos.getX());
|
||||||
tag.putInt("y", info.pos.getY());
|
tag.putInt("y", info.pos.getY());
|
||||||
tag.putInt("z", info.pos.getZ());
|
tag.putInt("z", info.pos.getZ());
|
||||||
return BlockEntity.loadStatic(info.pos,info.state,tag);
|
entity = BlockEntity.loadStatic(info.pos,info.state,tag);
|
||||||
} else return null;
|
} else return null;
|
||||||
}
|
}
|
||||||
|
if(entity != null){
|
||||||
|
entity.setLevel(world);
|
||||||
|
}
|
||||||
|
return entity;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return presentBlockEntities.values().stream().filter(blockEntity -> blockEntity.getBlockPos().equals(pos)).findFirst().orElse(null);
|
return presentBlockEntities.values().stream().filter(blockEntity -> blockEntity.getBlockPos().equals(pos)).findFirst().orElse(null);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue