Merge remote-tracking branch 'origin/master' into fabric-1.16
# Conflicts: # src/api/java/appeng/api/parts/IPart.java # src/main/java/appeng/block/AEBaseBlockItemChargeable.java # src/main/java/appeng/block/qnb/QnbFormedModel.java # src/main/java/appeng/bootstrap/BlockDefinitionBuilder.java # src/main/java/appeng/bootstrap/ItemDefinitionBuilder.java # src/main/java/appeng/client/render/BakedModelUnwrapper.java # src/main/java/appeng/client/render/BasicUnbakedModel.java # src/main/java/appeng/client/render/FacadeItemModel.java # src/main/java/appeng/client/render/cablebus/CableBusModel.java # src/main/java/appeng/client/render/cablebus/P2PTunnelFrequencyModel.java # src/main/java/appeng/client/render/crafting/CraftingCubeModel.java # src/main/java/appeng/client/render/model/AutoRotatingBakedModel.java # src/main/java/appeng/client/render/model/BiometricCardModel.java # src/main/java/appeng/client/render/model/ColorApplicatorModel.java # src/main/java/appeng/client/render/model/DriveBakedModel.java # src/main/java/appeng/client/render/model/DriveModel.java # src/main/java/appeng/client/render/model/GlassModel.java # src/main/java/appeng/client/render/model/MemoryCardModel.java # src/main/java/appeng/client/render/model/SkyCompassModel.java # src/main/java/appeng/client/render/spatial/SpatialPylonModel.java # src/main/java/appeng/client/render/tesr/ChestTileEntityRenderer.java # src/main/java/appeng/core/AERecipeType.java # src/main/java/appeng/core/AppEng.java # src/main/java/appeng/core/Registration.java # src/main/java/appeng/core/api/client/ApiCellModelRegistry.java # src/main/java/appeng/core/api/definitions/ApiItems.java # src/main/java/appeng/fluids/helper/DualityFluidInterface.java # src/main/java/appeng/items/misc/CrystalSeedItem.java # src/main/java/appeng/items/tools/powered/ColorApplicatorItem.java # src/main/java/appeng/parts/automation/PlaneModel.java # src/main/java/appeng/recipes/handlers/GrinderRecipe.java # src/main/java/appeng/recipes/handlers/GrinderRecipeSerializer.java # src/main/java/appeng/recipes/handlers/InscriberRecipe.java # src/main/java/appeng/recipes/handlers/InscriberRecipeSerializer.java # src/main/java/appeng/spatial/SpatialDimensionManager.java # src/main/java/appeng/tile/networking/CableBusBlockEntity.java # src/main/java/appeng/tile/storage/SkyChestBlockEntity.java
This commit is contained in:
@@ -23,14 +23,12 @@ import java.util.List;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.client.item.TooltipContext;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.text.TranslatableText;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.config.AccessRestriction;
|
||||
@@ -39,21 +37,12 @@ import appeng.api.config.PowerUnits;
|
||||
import appeng.api.definitions.IBlockDefinition;
|
||||
import appeng.api.implementations.items.IAEItemPowerStorage;
|
||||
import appeng.core.Api;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.localization.GuiText;
|
||||
|
||||
public class AEBaseBlockItemChargeable extends AEBaseBlockItem implements IAEItemPowerStorage {
|
||||
|
||||
public AEBaseBlockItemChargeable(Block id, Settings props) {
|
||||
super(id, props);
|
||||
|
||||
FabricModelPredicateProviderRegistry.register(this, new Identifier(AppEng.MOD_ID, "fill_level"),
|
||||
(is, world, entity) -> {
|
||||
double curPower = getAECurrentPower(is);
|
||||
double maxPower = getAEMaxPower(is);
|
||||
|
||||
return (int) Math.round(100 * curPower / maxPower);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,6 +29,7 @@ import javax.annotation.Nullable;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.BlockItem;
|
||||
import net.minecraft.item.Item;
|
||||
@@ -40,7 +41,9 @@ import appeng.api.definitions.IBlockDefinition;
|
||||
import appeng.api.features.AEFeature;
|
||||
import appeng.block.AEBaseBlock;
|
||||
import appeng.block.AEBaseBlockItem;
|
||||
import appeng.block.AEBaseBlockItemChargeable;
|
||||
import appeng.block.AEBaseTileBlock;
|
||||
import appeng.bootstrap.components.IClientSetupComponent;
|
||||
import appeng.bootstrap.definitions.TileEntityDefinition;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.CreativeTab;
|
||||
@@ -149,6 +152,24 @@ class BlockDefinitionBuilder implements IBlockBuilder {
|
||||
Registry.register(Registry.ITEM, id, item);
|
||||
}
|
||||
|
||||
// Register the client-only item model property for chargeable items
|
||||
if (item instanceof AEBaseBlockItemChargeable) {
|
||||
AEBaseBlockItemChargeable chargeable = (AEBaseBlockItemChargeable) item;
|
||||
this.factory.addBootstrapComponent(new IClientSetupComponent() {
|
||||
@Override
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void setup() {
|
||||
FabricModelPredicateProviderRegistry.register(item, AppEng.makeId("fill_level"),
|
||||
(is, world, entity) -> {
|
||||
double curPower = chargeable.getAECurrentPower(is);
|
||||
double maxPower = chargeable.getAEMaxPower(is);
|
||||
|
||||
return (int) Math.round(100 * curPower / maxPower);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Register all extra handlers
|
||||
this.bootstrapComponents.forEach(component -> this.factory.addBootstrapComponent(component.apply(block, item)));
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@ package appeng.bootstrap.components;
|
||||
import appeng.bootstrap.IBootstrapComponent;
|
||||
|
||||
/**
|
||||
* Will be run during
|
||||
* {@link net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent}.
|
||||
* Will be run on the client-side only.
|
||||
*/
|
||||
public interface IClientSetupComponent extends IBootstrapComponent {
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
package appeng.core;
|
||||
|
||||
import net.minecraft.recipe.Recipe;
|
||||
import net.minecraft.recipe.RecipeType;
|
||||
import net.minecraft.util.Identifier;
|
||||
|
||||
public class AERecipeType<T extends Recipe<?>> implements RecipeType<T> {
|
||||
private final String id;
|
||||
|
||||
public AERecipeType(Identifier registryName) {
|
||||
this.id = registryName.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return id;
|
||||
}
|
||||
}
|
||||
@@ -31,8 +31,6 @@ import net.minecraft.entity.player.PlayerEntity;
|
||||
import net.minecraft.entity.player.PlayerInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.recipe.Recipe;
|
||||
import net.minecraft.recipe.RecipeType;
|
||||
import net.minecraft.screen.ScreenHandlerType;
|
||||
import net.minecraft.tag.BlockTags;
|
||||
import net.minecraft.util.Identifier;
|
||||
@@ -181,7 +179,6 @@ public abstract class AppEngBase implements AppEng {
|
||||
|
||||
registerScreenHandlerTypes();
|
||||
registerParticleTypes();
|
||||
registerRecipeTypes();
|
||||
registerRecipeSerializers();
|
||||
registerWorldGen();
|
||||
registerServerCommands();
|
||||
@@ -400,21 +397,11 @@ public abstract class AppEngBase implements AppEng {
|
||||
ITileEntityRegistrationComponent::register);
|
||||
}
|
||||
|
||||
private static <T extends Recipe<?>> RecipeType<T> registerRecipeType(String id) {
|
||||
Identifier fullId = AppEng.makeId(id);
|
||||
return Registry.register(Registry.RECIPE_TYPE, fullId, new AERecipeType<>(fullId));
|
||||
}
|
||||
|
||||
private void registerRecipeTypes() {
|
||||
GrinderRecipe.TYPE = registerRecipeType("grinder");
|
||||
InscriberRecipe.TYPE = registerRecipeType("inscriber");
|
||||
}
|
||||
|
||||
private void registerRecipeSerializers() {
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("quartz_knife"),
|
||||
QuartzKnifeRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("grinder"), GrinderRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("inscriber"), InscriberRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, GrinderRecipe.TYPE_ID, GrinderRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, InscriberRecipe.TYPE_ID, InscriberRecipeSerializer.INSTANCE);
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("disassemble"), DisassembleRecipe.SERIALIZER);
|
||||
FacadeItem facadeItem = (FacadeItem) Api.INSTANCE.definitions().items().facade().item();
|
||||
Registry.register(Registry.RECIPE_SERIALIZER, AppEng.makeId("facade"), FacadeRecipe.getSerializer(facadeItem));
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
package appeng.core;
|
||||
|
||||
import appeng.server.AppEngServer;
|
||||
import net.fabricmc.api.DedicatedServerModInitializer;
|
||||
|
||||
import appeng.server.AppEngServer;
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public class AppEngServerStartup implements DedicatedServerModInitializer {
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@ import java.util.function.Consumer;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
||||
import net.minecraft.entity.EntityDimensions;
|
||||
import net.minecraft.entity.SpawnGroup;
|
||||
import net.minecraft.item.Item;
|
||||
@@ -35,6 +36,8 @@ import appeng.api.util.AEColoredItemDefinition;
|
||||
import appeng.bootstrap.FeatureFactory;
|
||||
import appeng.bootstrap.IItemRendering;
|
||||
import appeng.bootstrap.ItemRenderingCustomizer;
|
||||
import appeng.bootstrap.components.IClientSetupComponent;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.features.ActivityState;
|
||||
import appeng.core.features.ColoredItemDefinition;
|
||||
import appeng.core.features.ItemStackSrc;
|
||||
@@ -62,8 +65,20 @@ import appeng.items.storage.ViewCellItem;
|
||||
import appeng.items.tools.BiometricCardItem;
|
||||
import appeng.items.tools.MemoryCardItem;
|
||||
import appeng.items.tools.NetworkToolItem;
|
||||
import appeng.items.tools.powered.*;
|
||||
import appeng.items.tools.quartz.*;
|
||||
import appeng.items.tools.powered.ChargedStaffItem;
|
||||
import appeng.items.tools.powered.ColorApplicatorItem;
|
||||
import appeng.items.tools.powered.ColorApplicatorItemRendering;
|
||||
import appeng.items.tools.powered.EntropyManipulatorItem;
|
||||
import appeng.items.tools.powered.MatterCannonItem;
|
||||
import appeng.items.tools.powered.PortableCellItem;
|
||||
import appeng.items.tools.powered.WirelessTerminalItem;
|
||||
import appeng.items.tools.quartz.QuartzAxeItem;
|
||||
import appeng.items.tools.quartz.QuartzCuttingKnifeItem;
|
||||
import appeng.items.tools.quartz.QuartzHoeItem;
|
||||
import appeng.items.tools.quartz.QuartzPickaxeItem;
|
||||
import appeng.items.tools.quartz.QuartzSpadeItem;
|
||||
import appeng.items.tools.quartz.QuartzSwordItem;
|
||||
import appeng.items.tools.quartz.QuartzWrenchItem;
|
||||
|
||||
/**
|
||||
* Internal implementation for the API items
|
||||
@@ -198,7 +213,22 @@ public final class ApiItems implements IItems {
|
||||
.addFeatures(AEFeature.PORTABLE_CELL, AEFeature.STORAGE_CELLS).build();
|
||||
this.colorApplicator = powerTools.item("color_applicator", ColorApplicatorItem::new).props(chargedDefaults)
|
||||
.addFeatures(AEFeature.COLOR_APPLICATOR).dispenserBehavior(BlockToolDispenseItemBehavior::new)
|
||||
.rendering(new ColorApplicatorItemRendering()).build();
|
||||
.bootstrap(item -> new IClientSetupComponent() {
|
||||
@Override
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void setup() {
|
||||
ColorApplicatorItem colorApplicatorItem = (ColorApplicatorItem) item;
|
||||
FabricModelPredicateProviderRegistry.register(item, AppEng.makeId("colored"),
|
||||
(itemStack, world, entity) -> {
|
||||
// If the stack has no color, don't use the colored model since the impact of
|
||||
// calling getColor for every quad is extremely high, if the stack tries to
|
||||
// re-search its
|
||||
// inventory for a new paintball everytime
|
||||
AEColor col = colorApplicatorItem.getActiveColor(itemStack);
|
||||
return (col != null) ? 1 : 0;
|
||||
});
|
||||
}
|
||||
}).rendering(new ColorApplicatorItemRendering()).build();
|
||||
|
||||
this.biometricCard = registry.item("biometric_card", BiometricCardItem::new).props(props -> props.maxCount(1))
|
||||
.features(AEFeature.SECURITY).build();
|
||||
@@ -273,7 +303,16 @@ public final class ApiItems implements IItems {
|
||||
this.certusCrystalSeed = registry
|
||||
.item("certus_crystal_seed",
|
||||
props -> new CrystalSeedItem(props, materials.purifiedCertusQuartzCrystal().item()))
|
||||
.features(AEFeature.CRYSTAL_SEEDS).build();
|
||||
.bootstrap(item -> new IClientSetupComponent() {
|
||||
@Override
|
||||
@Environment(EnvType.CLIENT)
|
||||
public void setup() {
|
||||
// Expose the growth of the seed to the model system
|
||||
FabricModelPredicateProviderRegistry.register(item, AppEng.makeId("growth"),
|
||||
(is, w, p) -> CrystalSeedItem.getGrowthTicks(is)
|
||||
/ (float) CrystalSeedItem.GROWTH_TICKS_REQUIRED);
|
||||
}
|
||||
}).features(AEFeature.CRYSTAL_SEEDS).build();
|
||||
this.fluixCrystalSeed = registry
|
||||
.item("fluix_crystal_seed",
|
||||
props -> new CrystalSeedItem(props, materials.purifiedFluixCrystal().item()))
|
||||
|
||||
@@ -26,26 +26,21 @@ import com.google.common.base.Preconditions;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.Material;
|
||||
import net.minecraft.client.item.TooltipContext;
|
||||
import net.minecraft.entity.Entity;
|
||||
import net.minecraft.item.ItemConvertible;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
import net.minecraft.text.LiteralText;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.collection.DefaultedList;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.implementations.items.IGrowableCrystal;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.localization.ButtonToolTips;
|
||||
import appeng.entity.GrowingCrystalEntity;
|
||||
import appeng.items.AEBaseItem;
|
||||
|
||||
/**
|
||||
@@ -62,7 +57,7 @@ public class CrystalSeedItem extends AEBaseItem implements IGrowableCrystal {
|
||||
/**
|
||||
* The number of growth ticks required to finish growing.
|
||||
*/
|
||||
private static final int GROWTH_TICKS_REQUIRED = 600;
|
||||
public static final int GROWTH_TICKS_REQUIRED = 600;
|
||||
|
||||
/**
|
||||
* The item to convert to, when growth finishes.
|
||||
@@ -72,9 +67,6 @@ public class CrystalSeedItem extends AEBaseItem implements IGrowableCrystal {
|
||||
public CrystalSeedItem(Settings properties, ItemConvertible grownItem) {
|
||||
super(properties);
|
||||
this.grownItem = Preconditions.checkNotNull(grownItem);
|
||||
// Expose the growth of the seed to the model system
|
||||
FabricModelPredicateProviderRegistry.register(this, new Identifier(AppEng.MOD_ID, "growth"),
|
||||
(is, w, p) -> getGrowthTicks(is) / (float) GROWTH_TICKS_REQUIRED);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -89,7 +81,7 @@ public class CrystalSeedItem extends AEBaseItem implements IGrowableCrystal {
|
||||
}
|
||||
}
|
||||
|
||||
private static int getGrowthTicks(final ItemStack is) {
|
||||
public static int getGrowthTicks(final ItemStack is) {
|
||||
CompoundTag tag = is.getTag();
|
||||
return tag != null ? tag.getInt(TAG_GROWTH_TICKS) : 0;
|
||||
}
|
||||
|
||||
@@ -18,7 +18,10 @@
|
||||
|
||||
package appeng.items.tools.powered;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
@@ -26,7 +29,6 @@ import com.google.common.collect.ImmutableMap;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
@@ -67,7 +69,6 @@ import appeng.block.networking.CableBusBlock;
|
||||
import appeng.block.paint.PaintSplotchesBlock;
|
||||
import appeng.core.AEConfig;
|
||||
import appeng.core.Api;
|
||||
import appeng.core.AppEng;
|
||||
import appeng.core.localization.GuiText;
|
||||
import appeng.helpers.IMouseWheelItem;
|
||||
import appeng.hooks.IBlockTool;
|
||||
@@ -100,15 +101,6 @@ public class ColorApplicatorItem extends AEBasePoweredItem
|
||||
|
||||
public ColorApplicatorItem(Item.Settings props) {
|
||||
super(AEConfig.instance().getColorApplicatorBattery(), props);
|
||||
FabricModelPredicateProviderRegistry.register(this, new Identifier(AppEng.MOD_ID, "colored"),
|
||||
(itemStack, world, entity) -> {
|
||||
// If the stack has no color, don't use the colored model since the impact of
|
||||
// calling getColor for every quad is extremely high, if the stack tries to
|
||||
// re-search its
|
||||
// inventory for a new paintball everytime
|
||||
AEColor col = getActiveColor(itemStack);
|
||||
return (col != null) ? 1 : 0;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import net.minecraft.util.registry.RegistryKey;
|
||||
import net.minecraft.world.dimension.DimensionType;
|
||||
|
||||
import appeng.spatial.SpatialDimensionManager;
|
||||
import appeng.spatial.StorageSkyProperties;
|
||||
|
||||
@Mixin(SkyProperties.class)
|
||||
public class SkyPropertiesMixin {
|
||||
@@ -20,7 +21,7 @@ public class SkyPropertiesMixin {
|
||||
private static void byDimensionType(Optional<RegistryKey<DimensionType>> optional,
|
||||
CallbackInfoReturnable<SkyProperties> ci) {
|
||||
if (optional.orElse(null) == SpatialDimensionManager.STORAGE_DIMENSION_TYPE) {
|
||||
ci.setReturnValue(SpatialDimensionManager.STORAGE_SKY);
|
||||
ci.setReturnValue(StorageSkyProperties.INSTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,9 +14,13 @@ import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.collection.DefaultedList;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.core.AppEng;
|
||||
|
||||
public class GrinderRecipe implements Recipe<Inventory> {
|
||||
|
||||
public static RecipeType<GrinderRecipe> TYPE;
|
||||
public static final Identifier TYPE_ID = AppEng.makeId("grinder");
|
||||
|
||||
public static final RecipeType<GrinderRecipe> TYPE = RecipeType.register(TYPE_ID.toString());
|
||||
|
||||
private final Identifier id;
|
||||
private final String group;
|
||||
|
||||
@@ -2,16 +2,22 @@ package appeng.recipes.handlers;
|
||||
|
||||
import net.minecraft.inventory.Inventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.recipe.*;
|
||||
import net.minecraft.recipe.Ingredient;
|
||||
import net.minecraft.recipe.Recipe;
|
||||
import net.minecraft.recipe.RecipeSerializer;
|
||||
import net.minecraft.recipe.RecipeType;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.collection.DefaultedList;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.features.InscriberProcessType;
|
||||
import appeng.core.AppEng;
|
||||
|
||||
public class InscriberRecipe implements Recipe<Inventory> {
|
||||
|
||||
public static RecipeType<InscriberRecipe> TYPE;
|
||||
public static final Identifier TYPE_ID = AppEng.makeId("inscriber");
|
||||
|
||||
public static final RecipeType<InscriberRecipe> TYPE = RecipeType.register(TYPE_ID.toString());
|
||||
|
||||
private final Identifier id;
|
||||
private final String group;
|
||||
|
||||
@@ -23,13 +23,11 @@ import java.util.Locale;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.client.render.SkyProperties;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
import net.minecraft.server.world.ServerWorld;
|
||||
import net.minecraft.text.Text;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
import net.minecraft.util.registry.Registry;
|
||||
import net.minecraft.util.registry.RegistryKey;
|
||||
import net.minecraft.world.World;
|
||||
@@ -51,25 +49,6 @@ public final class SpatialDimensionManager implements ISpatialDimension {
|
||||
public static final RegistryKey<DimensionType> STORAGE_DIMENSION_TYPE = RegistryKey.of(Registry.DIMENSION_TYPE_KEY,
|
||||
AppEng.makeId("storage_cell"));
|
||||
|
||||
public static final SkyProperties STORAGE_SKY = new SkyProperties(Float.NaN /* disables clouds */, false,
|
||||
SkyProperties.SkyType.NONE /* we use a custom render mixin */, true, false) {
|
||||
@Override
|
||||
public Vec3d adjustSkyColor(Vec3d color, float sunHeight) {
|
||||
return Vec3d.ZERO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useThickFog(int camX, int camY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public float[] getSkyColor(float skyAngle, float tickDelta) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
public static final ISpatialDimension INSTANCE = new SpatialDimensionManager();
|
||||
|
||||
private static final String DIM_ID_PREFIX = "spatial_";
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package appeng.spatial;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.Environment;
|
||||
import net.minecraft.client.render.SkyProperties;
|
||||
import net.minecraft.util.math.Vec3d;
|
||||
|
||||
@Environment(EnvType.CLIENT)
|
||||
public class StorageSkyProperties {
|
||||
|
||||
// See the fabric version of this to get any idea what its doing
|
||||
public static final SkyProperties INSTANCE = new SkyProperties(Float.NaN /* disables clouds */, false,
|
||||
SkyProperties.SkyType.NONE /* we use a custom render mixin */, true, false) {
|
||||
@Override
|
||||
public Vec3d adjustSkyColor(Vec3d color, float sunHeight) {
|
||||
return Vec3d.ZERO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean useThickFog(int camX, int camY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public float[] getSkyColor(float skyAngle, float tickDelta) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
@@ -20,6 +20,8 @@ package appeng.tile.storage;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import net.fabricmc.api.EnvType;
|
||||
import net.fabricmc.api.EnvironmentInterface;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
import net.minecraft.client.block.ChestAnimationProgress;
|
||||
@@ -38,6 +40,7 @@ import appeng.tile.AEBaseInvBlockEntity;
|
||||
import appeng.tile.inventory.AppEngInternalInventory;
|
||||
import appeng.util.inv.InvOperation;
|
||||
|
||||
@EnvironmentInterface(value = EnvType.CLIENT, itf = ChestAnimationProgress.class)
|
||||
public class SkyChestBlockEntity extends AEBaseInvBlockEntity implements Tickable, ChestAnimationProgress {
|
||||
|
||||
private final AppEngInternalInventory inv = new AppEngInternalInventory(this, 9 * 4);
|
||||
|
||||
Reference in New Issue
Block a user