Compare commits

...

15 Commits

Author SHA1 Message Date
shartte d66986df85 Fix cell models not being loaded. (#4528) 2020-08-01 12:59:05 +02:00
shartte 4fa78a2add Fix #4521: Register RecipeTypes. (#4523) 2020-07-31 17:22:44 +02:00
Sebastian Hartte 98e9faa262 Ported model dependency changes from Fabric 1.16.
Made IChestLid sided.
2020-07-30 22:08:19 +02:00
Sebastian Hartte a628a469ce Fix refmap reference for non-dev deployment. 2020-07-28 21:02:51 +02:00
Sebastian Hartte 2fca330ff1 Use BlockPos.toMutable 2020-07-28 20:25:18 +02:00
Sebastian Hartte 3802eace7a Use StringTextComponent.EMPTY 2020-07-28 20:24:07 +02:00
Sebastian Hartte 2b9c997191 Fix formatting. 2020-07-28 20:19:11 +02:00
Sebastian Hartte 1cb32517ae Added missing chunk generator registration. 2020-07-28 20:11:18 +02:00
yueh b3b7547325 Updated mappings to 20200723-1.16.1 (#4514)
* Limit to 1 gradle worker
2020-07-28 18:33:28 +02:00
yueh 307a6817d4 Remove xvfb steps as runData should now run headless (#4513)
Also run `prepareRunData` in a separate step to avoid a race condition with ForgeGradle writing the generated dependency after it has already written it for `runData`
2020-07-28 14:49:33 +02:00
yueh 0beab559a6 Fix formatting 2020-07-28 11:44:57 +02:00
yueh a65be62cd1 Organize and clean imports 2020-07-28 10:29:57 +02:00
Sebastian Hartte e640918ca0 Compiles, can get ingame, uses Mixins to work around missing Fork Hooks for structures and custom dimensions. 2020-07-28 02:05:24 +02:00
Sebastian Hartte 84e6aaa122 Compiles again. 2020-07-27 23:50:28 +02:00
yueh 56ecda5173 1.16 port 2020-07-27 11:21:50 +02:00
297 changed files with 2439 additions and 2238 deletions
+3 -5
View File
@@ -22,14 +22,12 @@ jobs:
path: ~/.gradle/caches path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- name: Clean gradle - name: Clean gradle
run: ./gradlew clean --no-daemon run: ./gradlew clean --no-daemon --max-workers 1
- name: Validate no assets - name: Validate no assets
run: test ! -d ./src/generated run: test ! -d ./src/generated
- name: Generate assets - name: Generate assets
uses: GabrielBB/xvfb-action@v1.2 run: ./gradlew runData --no-daemon --max-workers 1
with:
run: ./gradlew runData --no-daemon
- name: Validate assets - name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle - name: Build with Gradle
run: ./gradlew build --no-daemon run: ./gradlew build --no-daemon --max-workers 1
+3 -5
View File
@@ -22,14 +22,12 @@ jobs:
path: ~/.gradle/caches path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- name: Clean gradle - name: Clean gradle
run: ./gradlew clean --no-daemon run: ./gradlew clean --no-daemon --max-workers 1
- name: Validate no assets - name: Validate no assets
run: test ! -d ./src/generated run: test ! -d ./src/generated
- name: Generate assets - name: Generate assets
uses: GabrielBB/xvfb-action@v1.2 run: ./gradlew runData --no-daemon --max-workers 1
with:
run: ./gradlew runData --no-daemon
- name: Validate assets - name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle - name: Build with Gradle
run: ./gradlew build --no-daemon run: ./gradlew build --no-daemon --max-workers 1
+3 -5
View File
@@ -22,19 +22,17 @@ jobs:
path: ~/.gradle/caches path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
- name: Clean gradle - name: Clean gradle
run: ./gradlew clean --no-daemon run: ./gradlew clean --no-daemon --max-workers 1
- name: Validate no assets - name: Validate no assets
run: test ! -d ./src/generated run: test ! -d ./src/generated
- name: Generate assets - name: Generate assets
uses: GabrielBB/xvfb-action@v1.2 run: ./gradlew runData --no-daemon --max-workers 1
with:
run: ./gradlew runData --no-daemon
- name: Validate assets - name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle - name: Build with Gradle
env: env:
PR_NUMBER: ${{ github.event.pull_request.number }} PR_NUMBER: ${{ github.event.pull_request.number }}
run: ./gradlew build --no-daemon run: ./gradlew build --no-daemon --max-workers 1
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
with: with:
name: dist name: dist
+4 -6
View File
@@ -31,9 +31,7 @@ jobs:
- name: Validate no assets - name: Validate no assets
run: test ! -d ./src/generated run: test ! -d ./src/generated
- name: Generate assets - name: Generate assets
uses: GabrielBB/xvfb-action@v1.2 run: ./gradlew runData --no-daemon --max-workers 1
with:
run: ./gradlew runData --no-daemon
- name: Validate assets - name: Validate assets
run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache run: test -d ./src/generated -a -f ./src/generated/resources/.cache/cache
- name: Build with Gradle - name: Build with Gradle
@@ -42,7 +40,7 @@ jobs:
KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }} KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }}
KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }} KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew build --no-daemon run: ./gradlew build --no-daemon --max-workers 1
- name: Upload to curseforge - name: Upload to curseforge
env: env:
KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }} KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }}
@@ -50,14 +48,14 @@ jobs:
KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }} KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }}
CHANGELOG: ${{ github.event.release.body }} CHANGELOG: ${{ github.event.release.body }}
CURSEFORGE: ${{ secrets.CURSEFORGE }} CURSEFORGE: ${{ secrets.CURSEFORGE }}
run: ./gradlew curseforge --no-daemon run: ./gradlew curseforge --no-daemon --max-workers 1
- name: Publish to github packages - name: Publish to github packages
env: env:
KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }} KEY_STORE_PASS: ${{ secrets.KEY_STORE_PASS }}
KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }} KEY_STORE_ALIAS: ${{ secrets.KEY_STORE_ALIAS }}
KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }} KEY_STORE_KEY_PASS: ${{ secrets.KEY_STORE_KEY_PASS }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: ./gradlew publish --no-daemon run: ./gradlew publish --no-daemon --max-workers 1
- name: Prepare artifact metadata - name: Prepare artifact metadata
id: prepare_artifact_metadata id: prepare_artifact_metadata
run: | run: |
+16
View File
@@ -19,11 +19,13 @@
buildscript { buildscript {
repositories { repositories {
maven { url = 'https://files.minecraftforge.net/maven' } maven { url = 'https://files.minecraftforge.net/maven' }
maven { url = 'https://repo.spongepowered.org/maven' }
jcenter() jcenter()
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
} }
} }
@@ -36,6 +38,7 @@ plugins {
} }
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'org.spongepowered.mixin'
apply plugin: "eclipse" apply plugin: "eclipse"
repositories { repositories {
@@ -112,6 +115,7 @@ minecraft {
client { client {
property 'forge.logging.console.level', 'debug' property 'forge.logging.console.level', 'debug'
workingDirectory project.file('run') workingDirectory project.file('run')
property "mixin.debug.export", "true"
mods { mods {
appliedenergistics2 { appliedenergistics2 {
source sourceSets.main source sourceSets.main
@@ -143,6 +147,18 @@ minecraft {
} }
} }
mixin {
add sourceSets.main, "appliedenergistics2.mixins.refmap.json"
}
jar {
manifest {
attributes([
"MixinConfigs": "appliedenergistics2.mixins.json"
])
}
}
def signProps = [:] def signProps = [:]
if (System.getenv("KEY_STORE_FILE")) { if (System.getenv("KEY_STORE_FILE")) {
signProps['keyStore'] = System.getenv("KEY_STORE_FILE") signProps['keyStore'] = System.getenv("KEY_STORE_FILE")
+8 -8
View File
@@ -8,24 +8,24 @@ artifact_basename=appliedenergistics2
######################################################### #########################################################
# Minecraft Versions # # Minecraft Versions #
######################################################### #########################################################
minecraft_release=1.15 minecraft_release=1.16
minecraft_version=1.15.2 minecraft_version=1.16.1
mcp_mappings=20200715-1.15.1 mcp_mappings=20200723-1.16.1
forge_version=31.2.31 forge_version=32.0.93
######################################################### #########################################################
# Provided APIs # # Provided APIs #
######################################################### #########################################################
jei_version=6.0.2.12 jei_version=7.0.0.6
top_version=2.0.4-5 top_version=3.0.1-beta-4
hwyla_version=1.10.8-B72_1.15.2 hwyla_version=1.10.8-B72_1.15.2
ctm_version=MC1.15.2-1.1.0.9 ctm_version=MC1.15.2-1.1.0.9
######################################################### #########################################################
# Deployment # # Deployment #
######################################################### #########################################################
website_version=1.15.2 website_version=1.16.1
curse_versions=1.15.2 curse_versions=1.16.1
curseforge_project=223794 curseforge_project=223794
######################################################### #########################################################
+1 -1
View File
@@ -35,7 +35,7 @@ dependencies {
// Runtime, Mods // Runtime, Mods
runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}")
runtimeOnly fg.deobf("mcjty.theoneprobe:TheOneProbe-${minecraft_release}:${minecraft_release}-${top_version}") runtimeOnly fg.deobf("mcjty.theoneprobe:TheOneProbe-${minecraft_release}:${minecraft_release}-${top_version}")
runtimeOnly fg.deobf("team.chisel.ctm:CTM:${ctm_version}") //runtimeOnly fg.deobf("team.chisel.ctm:CTM:${ctm_version}")
// unit test dependencies // unit test dependencies
testCompile "junit:junit:4.13" testCompile "junit:junit:4.13"
+1 -1
View File
@@ -119,7 +119,7 @@ public enum Upgrades {
if (namesAdded.add(name)) { if (namesAdded.add(name)) {
// append the supported count only if its > 1 // append the supported count only if its > 1
if (supported.maxCount > 1) { if (supported.maxCount > 1) {
name = name.deepCopy().appendText(" (" + supported.maxCount + ")"); name = name.deepCopy().appendString(" (" + supported.maxCount + ")");
} }
supportedTooltipLines.add(name); supportedTooltipLines.add(name);
} }
@@ -24,18 +24,15 @@
package appeng.api.features; package appeng.api.features;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.IWorld; import net.minecraft.world.server.ServerWorld;
import net.minecraft.world.dimension.Dimension;
public interface IWorldGen { public interface IWorldGen {
void disableWorldGenForProviderID(WorldGenType type, Class<? extends Dimension> provider);
void enableWorldGenForDimension(WorldGenType type, ResourceLocation dimID); void enableWorldGenForDimension(WorldGenType type, ResourceLocation dimID);
void disableWorldGenForDimension(WorldGenType type, ResourceLocation dimID); void disableWorldGenForDimension(WorldGenType type, ResourceLocation dimID);
boolean isWorldGenEnabled(WorldGenType type, IWorld w); boolean isWorldGenEnabled(WorldGenType type, ServerWorld w);
enum WorldGenType { enum WorldGenType {
CERTUS_QUARTZ, CHARGED_CERTUS_QUARTZ, METEORITES CERTUS_QUARTZ, CHARGED_CERTUS_QUARTZ, METEORITES
@@ -25,8 +25,9 @@ package appeng.api.implementations.items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.RegistryKey;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.server.ServerWorld;
import appeng.api.implementations.TransitionResult; import appeng.api.implementations.TransitionResult;
import appeng.api.util.WorldCoord; import appeng.api.util.WorldCoord;
@@ -57,7 +58,7 @@ public interface ISpatialStorageCell {
* *
* @return dimension id or -1 * @return dimension id or -1
*/ */
DimensionType getStoredDimension(ItemStack is); RegistryKey<World> getStoredDimension(ItemStack is);
/** /**
* Perform a spatial swap with the contents of the cell, and the world. * Perform a spatial swap with the contents of the cell, and the world.
@@ -70,5 +71,5 @@ public interface ISpatialStorageCell {
* *
* @return result of transition * @return result of transition
*/ */
TransitionResult doSpatialTransition(ItemStack is, World w, WorldCoord min, WorldCoord max, int playerId); TransitionResult doSpatialTransition(ItemStack is, ServerWorld w, WorldCoord min, WorldCoord max, int playerId);
} }
+5 -5
View File
@@ -42,7 +42,7 @@ import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
@@ -221,7 +221,7 @@ public interface IPart extends ICustomCableConnection {
* *
* @return if your activate method performed something. * @return if your activate method performed something.
*/ */
boolean onActivate(PlayerEntity player, Hand hand, Vec3d pos); boolean onActivate(PlayerEntity player, Hand hand, Vector3d pos);
/** /**
* Called when you right click the part, very similar to Block.onActivateBlock * Called when you right click the part, very similar to Block.onActivateBlock
@@ -233,7 +233,7 @@ public interface IPart extends ICustomCableConnection {
* @return if your activate method performed something, you should use false * @return if your activate method performed something, you should use false
* unless you really need it. * unless you really need it.
*/ */
boolean onShiftActivate(PlayerEntity player, Hand hand, Vec3d pos); boolean onShiftActivate(PlayerEntity player, Hand hand, Vector3d pos);
/** /**
* Called when you left click the part, very similar to Block.onBlockClicked * Called when you left click the part, very similar to Block.onBlockClicked
@@ -245,7 +245,7 @@ public interface IPart extends ICustomCableConnection {
* @return if your activate method performed something, you should use false * @return if your activate method performed something, you should use false
* unless you really need it. * unless you really need it.
*/ */
default boolean onClicked(PlayerEntity player, Hand hand, Vec3d pos) { default boolean onClicked(PlayerEntity player, Hand hand, Vector3d pos) {
return false; return false;
} }
@@ -260,7 +260,7 @@ public interface IPart extends ICustomCableConnection {
* @return if your activate method performed something, you should use false * @return if your activate method performed something, you should use false
* unless you really need it. * unless you really need it.
*/ */
default boolean onShiftClicked(PlayerEntity player, Hand hand, Vec3d pos) { default boolean onShiftClicked(PlayerEntity player, Hand hand, Vector3d pos) {
return false; return false;
} }
+2 -2
View File
@@ -30,7 +30,7 @@ import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.vector.Vector3d;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.api.util.AEPartLocation; import appeng.api.util.AEPartLocation;
@@ -146,7 +146,7 @@ public interface IPartHost extends ICustomCableConnection {
* *
* @return a new SelectedPart, this is never null. * @return a new SelectedPart, this is never null.
*/ */
SelectedPart selectPart(Vec3d pos); SelectedPart selectPart(Vector3d pos);
/** /**
* can be used by parts to trigger the tile or part to save. * can be used by parts to trigger the tile or part to save.
@@ -22,29 +22,30 @@ import java.util.List;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.World;
import net.minecraft.world.server.ServerWorld; import net.minecraft.world.server.ServerWorld;
public interface ISpatialDimension { public interface ISpatialDimension {
ServerWorld getWorld(DimensionType cellDim); ServerWorld getWorld(RegistryKey<World> cellDim);
@Nullable @Nullable
DimensionType createNewCellDimension(BlockPos capacity); RegistryKey<World> createNewCellDimension(BlockPos capacity);
void deleteCellDimension(DimensionType cellDim); void deleteCellDimension(RegistryKey<World> cellDim);
boolean isCellDimension(DimensionType cellDim); boolean isCellDimension(RegistryKey<World> cellDim);
BlockPos getCellDimensionOrigin(DimensionType cellDim); BlockPos getCellDimensionOrigin(RegistryKey<World> cellDim);
BlockPos getCellDimensionSize(DimensionType cellDim); BlockPos getCellDimensionSize(RegistryKey<World> cellDim);
/** /**
* Adds a user-facing tooltip that describes this dimension so that a player can * Adds a user-facing tooltip that describes this dimension so that a player can
* keep storage cells apart. * keep storage cells apart.
*/ */
void addCellDimensionTooltip(DimensionType cellDim, List<ITextComponent> lines); void addCellDimensionTooltip(RegistryKey<World> cellDim, List<ITextComponent> lines);
} }
@@ -25,8 +25,8 @@ package appeng.api.util;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.DimensionType;
import net.minecraft.world.IWorld; import net.minecraft.world.IWorld;
import net.minecraft.world.dimension.Dimension;
/** /**
* Represents a location in the Minecraft Universe * Represents a location in the Minecraft Universe
@@ -34,7 +34,7 @@ import net.minecraft.world.dimension.Dimension;
public class DimensionalCoord extends WorldCoord { public class DimensionalCoord extends WorldCoord {
private final IWorld world; private final IWorld world;
private final Dimension dimension; private final DimensionType dimension;
public DimensionalCoord(final DimensionalCoord coordinate) { public DimensionalCoord(final DimensionalCoord coordinate) {
super(coordinate.x, coordinate.y, coordinate.z); super(coordinate.x, coordinate.y, coordinate.z);
@@ -45,19 +45,19 @@ public class DimensionalCoord extends WorldCoord {
public DimensionalCoord(final TileEntity tileEntity) { public DimensionalCoord(final TileEntity tileEntity) {
super(tileEntity); super(tileEntity);
this.world = tileEntity.getWorld(); this.world = tileEntity.getWorld();
this.dimension = this.world.getDimension(); this.dimension = this.world.func_230315_m_();
} }
public DimensionalCoord(final IWorld world, final int x, final int y, final int z) { public DimensionalCoord(final IWorld world, final int x, final int y, final int z) {
super(x, y, z); super(x, y, z);
this.world = world; this.world = world;
this.dimension = world.getDimension(); this.dimension = world.func_230315_m_();
} }
public DimensionalCoord(final IWorld world, final BlockPos pos) { public DimensionalCoord(final IWorld world, final BlockPos pos) {
super(pos); super(pos);
this.world = world; this.world = world;
this.dimension = world.getDimension(); this.dimension = world.func_230315_m_();
} }
@Override @Override
@@ -23,6 +23,7 @@ import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.util.ITooltipFlag; import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.item.ItemModelsProperties;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -45,12 +46,13 @@ public class AEBaseBlockItemChargeable extends AEBaseBlockItem implements IAEIte
public AEBaseBlockItemChargeable(Block id, Properties props) { public AEBaseBlockItemChargeable(Block id, Properties props) {
super(id, props); super(id, props);
addPropertyOverride(new ResourceLocation("appliedenergistics2:fill_level"), (is, world, entity) -> { ItemModelsProperties.func_239418_a_(this, new ResourceLocation("appliedenergistics2:fill_level"),
double curPower = getAECurrentPower(is); (is, world, entity) -> {
double maxPower = getAEMaxPower(is); double curPower = getAECurrentPower(is);
double maxPower = getAEMaxPower(is);
return (int) Math.round(100 * curPower / maxPower); return (int) Math.round(100 * curPower / maxPower);
}); });
} }
@Override @Override
@@ -68,10 +70,10 @@ public class AEBaseBlockItemChargeable extends AEBaseBlockItem implements IAEIte
final double percent = internalCurrentPower / internalMaxPower; final double percent = internalCurrentPower / internalMaxPower;
lines.add(GuiText.StoredEnergy.textComponent() lines.add(GuiText.StoredEnergy.text().deepCopy()
.appendText(':' + MessageFormat.format(" {0,number,#} ", internalCurrentPower)) .appendString(':' + MessageFormat.format(" {0,number,#} ", internalCurrentPower))
.appendSibling(new TranslationTextComponent(PowerUnits.AE.unlocalizedName)) .append(new TranslationTextComponent(PowerUnits.AE.unlocalizedName))
.appendText(" - " + MessageFormat.format("{0,number,#.##%}", percent))); .appendString(" - " + MessageFormat.format("{0,number,#.##%}", percent)));
} }
} }
@@ -31,26 +31,21 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.DyeColor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.CompoundNBT;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent; import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
import appeng.api.implementations.items.IMemoryCard; import appeng.api.implementations.items.IMemoryCard;
import appeng.api.implementations.items.MemoryCardMessages; import appeng.api.implementations.items.MemoryCardMessages;
import appeng.api.implementations.tiles.IColorableTile;
import appeng.api.util.AEColor;
import appeng.api.util.IOrientable; import appeng.api.util.IOrientable;
import appeng.block.networking.CableBusBlock; import appeng.block.networking.CableBusBlock;
import appeng.tile.AEBaseInvTileEntity; import appeng.tile.AEBaseInvTileEntity;
@@ -144,26 +139,6 @@ public abstract class AEBaseTileBlock<T extends AEBaseTileEntity> extends AEBase
super.onReplaced(state, w, pos, newState, isMoving); super.onReplaced(state, w, pos, newState, isMoving);
} }
@Override
public boolean recolorBlock(BlockState state, final IWorld world, final BlockPos pos, final Direction side,
final DyeColor color) {
final TileEntity te = this.getTileEntity(world, pos);
if (te instanceof IColorableTile) {
final IColorableTile ct = (IColorableTile) te;
final AEColor c = ct.getColor();
final AEColor newColor = AEColor.values()[color.ordinal()];
if (c != newColor) {
ct.recolourBlock(side, newColor, null);
return true;
}
return false;
}
return super.recolorBlock(state, world, pos, side, color);
}
@Override @Override
public int getComparatorInputOverride(BlockState state, final World w, final BlockPos pos) { public int getComparatorInputOverride(BlockState state, final World w, final BlockPos pos) {
final TileEntity te = this.getTileEntity(w, pos); final TileEntity te = this.getTileEntity(w, pos);
@@ -29,8 +29,6 @@ import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.TransformationMatrix;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
@@ -44,6 +42,8 @@ import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.util.math.shapes.VoxelShapes;
import net.minecraft.util.math.vector.TransformationMatrix;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
@@ -80,8 +80,8 @@ public class QuartzFixtureBlock extends AEBaseBlock implements IOrientableBlock
public static final BooleanProperty ODD = BooleanProperty.create("odd"); public static final BooleanProperty ODD = BooleanProperty.create("odd");
public QuartzFixtureBlock() { public QuartzFixtureBlock() {
super(defaultProps(Material.MISCELLANEOUS).doesNotBlockMovement().hardnessAndResistance(0).lightValue(14) super(defaultProps(Material.MISCELLANEOUS).doesNotBlockMovement().hardnessAndResistance(0)
.sound(SoundType.GLASS).notSolid()); .setLightLevel((b) -> 14).sound(SoundType.GLASS).notSolid());
this.setDefaultState(getDefaultState().with(FACING, Direction.UP).with(ODD, false)); this.setDefaultState(getDefaultState().with(FACING, Direction.UP).with(ODD, false));
} }
@@ -118,12 +118,10 @@ public class TinyTNTBlock extends AEBaseBlock {
LivingEntity igniter = null; LivingEntity igniter = null;
// Check if the shooter still exists // Check if the shooter still exists
if (w instanceof ServerWorld) { if (w instanceof ServerWorld) {
ServerWorld serverWorld = (ServerWorld) w; Entity shooter = entityarrow.func_234616_v_();
Entity shooter = serverWorld.getEntityByUuid(entityarrow.shootingEntity);
if (shooter instanceof LivingEntity) { if (shooter instanceof LivingEntity) {
igniter = (LivingEntity) shooter; igniter = (LivingEntity) shooter;
} }
} }
this.startFuse(w, pos, igniter); this.startFuse(w, pos, igniter);
w.removeBlock(pos, false); w.removeBlock(pos, false);
@@ -30,10 +30,11 @@ import net.minecraft.client.particle.Particle;
import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.particle.ParticleManager;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.IFluidState; import net.minecraft.fluid.FluidState;
import net.minecraft.item.BlockItemUseContext; import net.minecraft.item.BlockItemUseContext;
import net.minecraft.item.DyeColor; import net.minecraft.item.DyeColor;
import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemGroup;
@@ -47,12 +48,11 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.RayTraceResult.Type; import net.minecraft.util.math.RayTraceResult.Type;
import net.minecraft.util.math.Vec3d;
import net.minecraft.util.math.shapes.ISelectionContext; import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape; import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.util.math.shapes.VoxelShapes; import net.minecraft.util.math.shapes.VoxelShapes;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.IBlockReader; import net.minecraft.world.IBlockReader;
import net.minecraft.world.IWorld;
import net.minecraft.world.IWorldReader; import net.minecraft.world.IWorldReader;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
@@ -146,7 +146,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
@Override @Override
public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player, public boolean removedByPlayer(BlockState state, World world, BlockPos pos, PlayerEntity player,
boolean willHarvest, IFluidState fluid) { boolean willHarvest, FluidState fluid) {
if (player.abilities.isCreativeMode) { if (player.abilities.isCreativeMode) {
final AEBaseTileEntity tile = this.getTileEntity(world, pos); final AEBaseTileEntity tile = this.getTileEntity(world, pos);
if (tile != null) { if (tile != null) {
@@ -171,7 +171,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
@Override @Override
public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos, public ItemStack getPickBlock(BlockState state, RayTraceResult target, IBlockReader world, BlockPos pos,
PlayerEntity player) { PlayerEntity player) {
final Vec3d v3 = target.getHitVec().subtract(pos.getX(), pos.getY(), pos.getZ()); final Vector3d v3 = target.getHitVec().subtract(pos.getX(), pos.getY(), pos.getZ());
final SelectedPart sp = this.cb(world, pos).selectPart(v3); final SelectedPart sp = this.cb(world, pos).selectPart(v3);
if (sp.part != null) { if (sp.part != null) {
@@ -222,8 +222,8 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
double z = target.getHitVec().z; double z = target.getHitVec().z;
// FIXME: Check how this looks, probably like shit, maybe provide parts the // FIXME: Check how this looks, probably like shit, maybe provide parts the
// ability to supply particle textures??? // ability to supply particle textures???
effectRenderer effectRenderer.addEffect(
.addEffect(new CableBusBreakingParticle(world, x, y, z, texture).multiplyParticleScaleBy(0.8F)); new CableBusBreakingParticle((ClientWorld) world, x, y, z, texture).multiplyParticleScaleBy(0.8F));
} }
return true; return true;
@@ -264,8 +264,8 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
// FIXME: Check how this looks, probably like shit, maybe provide parts the // FIXME: Check how this looks, probably like shit, maybe provide parts the
// ability to supply particle textures??? // ability to supply particle textures???
Particle effect = new CableBusBreakingParticle(world, x, y, z, x - pos.getX() - 0.5D, Particle effect = new CableBusBreakingParticle((ClientWorld) world, x, y, z,
y - pos.getY() - 0.5D, z - pos.getZ() - 0.5D, texture); x - pos.getX() - 0.5D, y - pos.getY() - 0.5D, z - pos.getZ() - 0.5D, texture);
effectRenderer.addEffect(effect); effectRenderer.addEffect(effect);
} }
} }
@@ -313,7 +313,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
if (rtr instanceof BlockRayTraceResult) { if (rtr instanceof BlockRayTraceResult) {
BlockRayTraceResult brtr = (BlockRayTraceResult) rtr; BlockRayTraceResult brtr = (BlockRayTraceResult) rtr;
if (brtr.getPos().equals(pos)) { if (brtr.getPos().equals(pos)) {
final Vec3d hitVec = rtr.getHitVec().subtract(new Vec3d(pos)); final Vector3d hitVec = rtr.getHitVec().subtract(new Vector3d(pos.getX(), pos.getY(), pos.getZ()));
if (this.cb(worldIn, pos).clicked(player, Hand.MAIN_HAND, hitVec)) { if (this.cb(worldIn, pos).clicked(player, Hand.MAIN_HAND, hitVec)) {
NetworkHandler.instance().sendToServer(new ClickPacket(pos, brtr.getFace(), (float) hitVec.x, NetworkHandler.instance().sendToServer(new ClickPacket(pos, brtr.getFace(), (float) hitVec.x,
@@ -324,7 +324,7 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
} }
} }
public void onBlockClickPacket(World worldIn, BlockPos pos, PlayerEntity playerIn, Hand hand, Vec3d hitVec) { public void onBlockClickPacket(World worldIn, BlockPos pos, PlayerEntity playerIn, Hand hand, Vector3d hitVec) {
this.cb(worldIn, pos).clicked(playerIn, hand, hitVec); this.cb(worldIn, pos).clicked(playerIn, hand, hitVec);
} }
@@ -332,16 +332,11 @@ public class CableBusBlock extends AEBaseTileBlock<CableBusTileEntity> implement
public ActionResultType onActivated(final World w, final BlockPos pos, final PlayerEntity player, final Hand hand, public ActionResultType onActivated(final World w, final BlockPos pos, final PlayerEntity player, final Hand hand,
final @Nullable ItemStack heldItem, final BlockRayTraceResult hit) { final @Nullable ItemStack heldItem, final BlockRayTraceResult hit) {
// Transform from world into block space // Transform from world into block space
Vec3d hitVec = hit.getHitVec(); Vector3d hitVec = hit.getHitVec();
Vec3d hitInBlock = new Vec3d(hitVec.x - pos.getX(), hitVec.y - pos.getY(), hitVec.z - pos.getZ()); Vector3d hitInBlock = new Vector3d(hitVec.x - pos.getX(), hitVec.y - pos.getY(), hitVec.z - pos.getZ());
return this.cb(w, pos).activate(player, hand, hitInBlock) ? ActionResultType.SUCCESS : ActionResultType.PASS; return this.cb(w, pos).activate(player, hand, hitInBlock) ? ActionResultType.SUCCESS : ActionResultType.PASS;
} }
@Override
public boolean recolorBlock(BlockState state, IWorld world, BlockPos pos, Direction side, DyeColor color) {
return recolorBlock(world, pos, side, color, null);
}
public boolean recolorBlock(final IBlockReader world, final BlockPos pos, final Direction side, public boolean recolorBlock(final IBlockReader world, final BlockPos pos, final Direction side,
final DyeColor color, final PlayerEntity who) { final DyeColor color, final PlayerEntity who) {
try { try {
@@ -24,7 +24,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@@ -40,7 +40,7 @@ import appeng.tile.networking.CableBusTileEntity;
public class CableBusColor implements IBlockColor { public class CableBusColor implements IBlockColor {
@Override @Override
public int getColor(BlockState state, @Nullable ILightReader worldIn, @Nullable BlockPos pos, int color) { public int getColor(BlockState state, @Nullable IBlockDisplayReader worldIn, @Nullable BlockPos pos, int color) {
AEColor busColor = AEColor.TRANSPARENT; AEColor busColor = AEColor.TRANSPARENT;
@@ -38,7 +38,7 @@ public class ControllerBlock extends AEBaseTileBlock<ControllerTileEntity> {
offline, online, conflicted; offline, online, conflicted;
@Override @Override
public String getName() { public String getString() {
return this.name(); return this.name();
} }
@@ -54,7 +54,7 @@ public class ControllerBlock extends AEBaseTileBlock<ControllerTileEntity> {
block, column_x, column_y, column_z, inside_a, inside_b; block, column_x, column_y, column_z, inside_a, inside_b;
@Override @Override
public String getName() { public String getString() {
return this.name(); return this.name();
} }
@@ -50,7 +50,7 @@ public class WirelessBlock extends AEBaseTileBlock<WirelessTileEntity> {
OFF, ON, HAS_CHANNEL; OFF, ON, HAS_CHANNEL;
@Override @Override
public String getName() { public String getString() {
return this.name().toLowerCase(); return this.name().toLowerCase();
} }
} }
@@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
@@ -35,16 +35,16 @@ import appeng.tile.misc.PaintSplotchesTileEntity;
*/ */
class PaintSplotchesBakedModel implements IDynamicBakedModel { class PaintSplotchesBakedModel implements IDynamicBakedModel {
private static final Material TEXTURE_PAINT1 = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_PAINT1 = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/paint1")); new ResourceLocation(AppEng.MOD_ID, "block/paint1"));
private static final Material TEXTURE_PAINT2 = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_PAINT2 = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/paint2")); new ResourceLocation(AppEng.MOD_ID, "block/paint2"));
private static final Material TEXTURE_PAINT3 = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_PAINT3 = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/paint3")); new ResourceLocation(AppEng.MOD_ID, "block/paint3"));
private final TextureAtlasSprite[] textures; private final TextureAtlasSprite[] textures;
PaintSplotchesBakedModel(Function<Material, TextureAtlasSprite> bakedTextureGetter) { PaintSplotchesBakedModel(Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter) {
this.textures = new TextureAtlasSprite[] { bakedTextureGetter.apply(TEXTURE_PAINT1), this.textures = new TextureAtlasSprite[] { bakedTextureGetter.apply(TEXTURE_PAINT1),
bakedTextureGetter.apply(TEXTURE_PAINT2), bakedTextureGetter.apply(TEXTURE_PAINT3) }; bakedTextureGetter.apply(TEXTURE_PAINT2), bakedTextureGetter.apply(TEXTURE_PAINT3) };
} }
@@ -171,7 +171,7 @@ class PaintSplotchesBakedModel implements IDynamicBakedModel {
return false; return false;
} }
static List<Material> getRequiredTextures() { static List<RenderMaterial> getRequiredTextures() {
return ImmutableList.of(TEXTURE_PAINT1, TEXTURE_PAINT2, TEXTURE_PAINT3); return ImmutableList.of(TEXTURE_PAINT1, TEXTURE_PAINT2, TEXTURE_PAINT3);
} }
} }
@@ -11,8 +11,8 @@ import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
@@ -22,13 +22,13 @@ public class PaintSplotchesModel implements IModelGeometry<PaintSplotchesModel>
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
return new PaintSplotchesBakedModel(spriteGetter); return new PaintSplotchesBakedModel(spriteGetter);
} }
@Override @Override
public Collection<Material> getTextures(IModelConfiguration owner, public Collection<RenderMaterial> getTextures(IModelConfiguration owner,
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
return PaintSplotchesBakedModel.getRequiredTextures(); return PaintSplotchesBakedModel.getRequiredTextures();
} }
@@ -17,7 +17,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
@@ -32,17 +32,18 @@ import appeng.tile.qnb.QuantumBridgeTileEntity;
class QnbFormedBakedModel implements IDynamicBakedModel { class QnbFormedBakedModel implements IDynamicBakedModel {
private static final Material TEXTURE_LINK = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_LINK = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/quantum_link")); new ResourceLocation(AppEng.MOD_ID, "block/quantum_link"));
private static final Material TEXTURE_RING = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_RING = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring")); new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring"));
private static final Material TEXTURE_RING_LIGHT = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_RING_LIGHT = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring_light")); new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring_light"));
private static final Material TEXTURE_RING_LIGHT_CORNER = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_RING_LIGHT_CORNER = new RenderMaterial(
AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring_light_corner")); new ResourceLocation(AppEng.MOD_ID, "block/quantum_ring_light_corner"));
private static final Material TEXTURE_CABLE_GLASS = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_CABLE_GLASS = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "part/cable/glass/transparent")); new ResourceLocation(AppEng.MOD_ID, "part/cable/glass/transparent"));
private static final Material TEXTURE_COVERED_CABLE = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE_COVERED_CABLE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "part/cable/covered/transparent")); new ResourceLocation(AppEng.MOD_ID, "part/cable/covered/transparent"));
private static final float DEFAULT_RENDER_MIN = 2.0f; private static final float DEFAULT_RENDER_MIN = 2.0f;
@@ -65,7 +66,7 @@ class QnbFormedBakedModel implements IDynamicBakedModel {
private final TextureAtlasSprite lightTexture; private final TextureAtlasSprite lightTexture;
private final TextureAtlasSprite lightCornerTexture; private final TextureAtlasSprite lightCornerTexture;
public QnbFormedBakedModel(IBakedModel baseModel, Function<Material, TextureAtlasSprite> bakedTextureGetter) { public QnbFormedBakedModel(IBakedModel baseModel, Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter) {
this.baseModel = baseModel; this.baseModel = baseModel;
this.linkTexture = bakedTextureGetter.apply(TEXTURE_LINK); this.linkTexture = bakedTextureGetter.apply(TEXTURE_LINK);
this.ringTexture = bakedTextureGetter.apply(TEXTURE_RING); this.ringTexture = bakedTextureGetter.apply(TEXTURE_RING);
@@ -220,7 +221,7 @@ class QnbFormedBakedModel implements IDynamicBakedModel {
return this.baseModel.getOverrides(); return this.baseModel.getOverrides();
} }
public static List<Material> getRequiredTextures() { public static List<RenderMaterial> getRequiredTextures() {
return ImmutableList.of(TEXTURE_LINK, TEXTURE_RING, TEXTURE_CABLE_GLASS, TEXTURE_COVERED_CABLE, return ImmutableList.of(TEXTURE_LINK, TEXTURE_RING, TEXTURE_CABLE_GLASS, TEXTURE_COVERED_CABLE,
TEXTURE_RING_LIGHT, TEXTURE_RING_LIGHT_CORNER); TEXTURE_RING_LIGHT, TEXTURE_RING_LIGHT_CORNER);
} }
@@ -1,41 +1,43 @@
package appeng.block.qnb; package appeng.block.qnb;
import java.util.Collection; import java.util.Collection;
import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream;
import com.mojang.datafixers.util.Pair; import com.google.common.collect.ImmutableSet;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
import net.minecraftforge.client.model.geometry.IModelGeometry;
import appeng.client.render.BasicUnbakedModel;
import appeng.core.AppEng; import appeng.core.AppEng;
public class QnbFormedModel implements IModelGeometry<QnbFormedModel> { public class QnbFormedModel implements BasicUnbakedModel<QnbFormedModel> {
private static final ResourceLocation MODEL_RING = new ResourceLocation(AppEng.MOD_ID, "block/qnb/ring"); private static final ResourceLocation MODEL_RING = new ResourceLocation(AppEng.MOD_ID, "block/qnb/ring");
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
IBakedModel ringModel = bakery.getBakedModel(MODEL_RING, modelTransform, spriteGetter); IBakedModel ringModel = bakery.getBakedModel(MODEL_RING, modelTransform, spriteGetter);
return new QnbFormedBakedModel(ringModel, spriteGetter); return new QnbFormedBakedModel(ringModel, spriteGetter);
} }
@Override @Override
public Collection<Material> getTextures(IModelConfiguration owner, public Collection<ResourceLocation> getModelDependencies() {
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { return ImmutableSet.of(MODEL_RING);
return QnbFormedBakedModel.getRequiredTextures(); }
@Override
public Stream<RenderMaterial> getAdditionalTextures() {
return QnbFormedBakedModel.getRequiredTextures().stream();
} }
} }
@@ -47,7 +47,7 @@ import appeng.block.AEBaseBlock;
public class MatrixFrameBlock extends AEBaseBlock { public class MatrixFrameBlock extends AEBaseBlock {
private static final Material MATERIAL = new Material(MaterialColor.AIR, false, true, true, false, false, false, private static final Material MATERIAL = new Material(MaterialColor.AIR, false, true, true, false, false, false,
false, PushReaction.PUSH_ONLY); PushReaction.PUSH_ONLY);
public MatrixFrameBlock() { public MatrixFrameBlock() {
super(Properties.create(MATERIAL).hardnessAndResistance(-1.0F, 6000000.0F).notSolid().noDrops()); super(Properties.create(MATERIAL).hardnessAndResistance(-1.0F, 6000000.0F).notSolid().noDrops());
@@ -29,6 +29,7 @@ import net.minecraft.state.BooleanProperty;
import net.minecraft.state.StateContainer; import net.minecraft.state.StateContainer;
import net.minecraft.util.ActionResultType; import net.minecraft.util.ActionResultType;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.Util;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.world.World; import net.minecraft.world.World;
@@ -81,7 +82,7 @@ public class ChestBlock extends AEBaseTileBlock<ChestTileEntity> {
if (hit.getFace() == tg.getUp()) { if (hit.getFace() == tg.getUp()) {
if (!tg.openGui(p)) { if (!tg.openGui(p)) {
p.sendMessage(PlayerMessages.ChestCannotReadStorageCell.get()); p.sendMessage(PlayerMessages.ChestCannotReadStorageCell.get(), Util.DUMMY_UUID);
} }
} else { } else {
ContainerOpener.openContainer(ChestContainer.TYPE, p, ContainerOpener.openContainer(ChestContainer.TYPE, p,
@@ -53,7 +53,7 @@ public enum DriveSlotState implements IStringSerializable {
} }
@Override @Override
public String getName() { public String getString() {
return this.name; return this.name;
} }
@@ -26,11 +26,12 @@ import java.util.Random;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.settings.KeyBinding; import net.minecraft.client.settings.KeyBinding;
import net.minecraft.client.util.InputMappings; import net.minecraft.client.util.InputMappings;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Hand; import net.minecraft.util.Hand;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.client.event.RenderLivingEvent;
@@ -107,7 +108,7 @@ public class ClientHelper extends ServerHelper {
this.spawnLightning(world, posX, posY, posZ); this.spawnLightning(world, posX, posY, posZ);
return; return;
case LightningArc: case LightningArc:
this.spawnLightningArc(world, posX, posY, posZ, (Vec3d) o); this.spawnLightningArc(world, posX, posY, posZ, (Vector3d) o);
return; return;
default: default:
} }
@@ -206,9 +207,9 @@ public class ClientHelper extends ServerHelper {
} }
private void spawnLightningArc(final World world, final double posX, final double posY, final double posZ, private void spawnLightningArc(final World world, final double posX, final double posY, final double posZ,
final Vec3d second) { final Vector3d second) {
final LightningFX fx = new LightningArcFX(world, posX, posY, posZ, second.x, second.y, second.z, 0.0f, 0.0f, final LightningFX fx = new LightningArcFX((ClientWorld) world, posX, posY, posZ, second.x, second.y, second.z,
0.0f); 0.0f, 0.0f, 0.0f);
Minecraft.getInstance().particles.addEffect(fx); Minecraft.getInstance().particles.addEffect(fx);
} }
@@ -22,6 +22,8 @@ import java.text.NumberFormat;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -41,14 +43,14 @@ public abstract class AEBaseMEScreen<T extends AEBaseContainer> extends AEBaseSc
} }
@Override @Override
protected void renderTooltip(final ItemStack stack, final int x, final int y) { protected void renderTooltip(MatrixStack matrixStack, final ItemStack stack, final int x, final int y) {
final Slot s = this.getSlot(x, y); final Slot s = this.getSlot(x, y);
if (s instanceof SlotME && !stack.isEmpty()) { if (s instanceof SlotME && !stack.isEmpty()) {
final int bigNumber = AEConfig.instance().isUseLargeFonts() ? 999 : 9999; final int bigNumber = AEConfig.instance().isUseLargeFonts() ? 999 : 9999;
IAEItemStack myStack = null; IAEItemStack myStack = null;
final List<String> currentToolTip = this.getTooltipFromItem(stack); final List<ITextComponent> currentToolTip = this.getTooltipFromItem(stack);
try { try {
final SlotME theSlotField = (SlotME) s; final SlotME theSlotField = (SlotME) s;
@@ -58,38 +60,31 @@ public abstract class AEBaseMEScreen<T extends AEBaseContainer> extends AEBaseSc
if (myStack != null) { if (myStack != null) {
if (myStack.getStackSize() > bigNumber || (myStack.getStackSize() > 1 && stack.isDamaged())) { if (myStack.getStackSize() > bigNumber || (myStack.getStackSize() > 1 && stack.isDamaged())) {
final String local = ButtonToolTips.ItemsStored.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance(Locale.US) final String formattedAmount = NumberFormat.getNumberInstance(Locale.US)
.format(myStack.getStackSize()); .format(myStack.getStackSize());
final String format = String.format(local, formattedAmount); currentToolTip
.add(ButtonToolTips.ItemsStored.text(formattedAmount).mergeStyle(TextFormatting.GRAY));
currentToolTip.add(TextFormatting.GRAY + format);
} }
if (myStack.getCountRequestable() > 0) { if (myStack.getCountRequestable() > 0) {
final String local = ButtonToolTips.ItemsRequestable.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance(Locale.US) final String formattedAmount = NumberFormat.getNumberInstance(Locale.US)
.format(myStack.getCountRequestable()); .format(myStack.getCountRequestable());
final String format = String.format(local, formattedAmount); currentToolTip.add(ButtonToolTips.ItemsRequestable.text(formattedAmount));
currentToolTip.add(format);
} }
this.renderTooltip(currentToolTip, x, y, this.font);
this.renderToolTip(matrixStack, currentToolTip, x, y, this.font);
return; return;
} else if (stack.getCount() > bigNumber) { } else if (stack.getCount() > bigNumber) {
final String local = ButtonToolTips.ItemsStored.getLocal();
final String formattedAmount = NumberFormat.getNumberInstance(Locale.US).format(stack.getCount()); final String formattedAmount = NumberFormat.getNumberInstance(Locale.US).format(stack.getCount());
final String format = String.format(local, formattedAmount); currentToolTip.add(ButtonToolTips.ItemsStored.text(formattedAmount).mergeStyle(TextFormatting.GRAY));
currentToolTip.add(TextFormatting.GRAY + format); this.renderToolTip(matrixStack, currentToolTip, x, y, this.font);
this.renderTooltip(currentToolTip, x, y, this.font);
return; return;
} }
} }
super.renderTooltip(stack, x, y); super.renderTooltip(matrixStack, stack, x, y);
} }
} }
@@ -24,10 +24,11 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.base.Stopwatch; import com.google.common.base.Stopwatch;
import com.google.common.collect.Lists; import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
@@ -54,6 +55,8 @@ import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextFormatting; import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -126,51 +129,52 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
} }
@Override @Override
public void render(final int mouseX, final int mouseY, final float partialTicks) { public void render(MatrixStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) {
super.renderBackground(); super.renderBackground(matrixStack);
super.render(mouseX, mouseY, partialTicks); super.render(matrixStack, mouseX, mouseY, partialTicks);
RenderSystem.pushMatrix(); RenderSystem.pushMatrix();
RenderSystem.translatef(this.guiLeft, this.guiTop, 0.0F); RenderSystem.translatef(this.guiLeft, this.guiTop, 0.0F);
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
for (final CustomSlotWidget c : this.guiSlots) { for (final CustomSlotWidget c : this.guiSlots) {
this.drawGuiSlot(c, mouseX, mouseY, partialTicks); this.drawGuiSlot(matrixStack, c, mouseX, mouseY, partialTicks);
} }
RenderSystem.disableDepthTest(); RenderSystem.disableDepthTest();
for (final CustomSlotWidget c : this.guiSlots) { for (final CustomSlotWidget c : this.guiSlots) {
this.drawTooltip(c, mouseX - this.guiLeft, mouseY - this.guiTop); this.drawTooltip(matrixStack, c, mouseX - this.guiLeft, mouseY - this.guiTop);
} }
RenderSystem.popMatrix(); RenderSystem.popMatrix();
RenderSystem.enableDepthTest(); RenderSystem.enableDepthTest();
this.renderHoveredToolTip(mouseX, mouseY); this.func_230459_a_(matrixStack, mouseX, mouseY);
for (final Object c : this.buttons) { for (final Object c : this.buttons) {
if (c instanceof ITooltip) { if (c instanceof ITooltip) {
this.drawTooltip((ITooltip) c, mouseX, mouseY); this.drawTooltip(matrixStack, (ITooltip) c, mouseX, mouseY);
} }
} }
} }
protected void drawGuiSlot(CustomSlotWidget slot, int mouseX, int mouseY, float partialTicks) { protected void drawGuiSlot(MatrixStack matrixStack, CustomSlotWidget slot, int mouseX, int mouseY,
float partialTicks) {
if (slot.isSlotEnabled()) { if (slot.isSlotEnabled()) {
final int left = slot.xPos(); final int left = slot.xPos();
final int top = slot.yPos(); final int top = slot.yPos();
final int right = left + slot.getWidth(); final int right = left + slot.getWidth();
final int bottom = top + slot.getHeight(); final int bottom = top + slot.getHeight();
slot.drawContent(getMinecraft(), mouseX, mouseY, partialTicks); slot.drawContent(matrixStack, getMinecraft(), mouseX, mouseY, partialTicks);
if (this.isPointInRegion(left, top, slot.getWidth(), slot.getHeight(), mouseX, mouseY) if (this.isPointInRegion(left, top, slot.getWidth(), slot.getHeight(), mouseX, mouseY)
&& slot.canClick(getPlayer())) { && slot.canClick(getPlayer())) {
RenderSystem.colorMask(true, true, true, false); RenderSystem.colorMask(true, true, true, false);
this.fillGradient(left, top, right, bottom, -2130706433, -2130706433); this.fillGradient(matrixStack, left, top, right, bottom, -2130706433, -2130706433);
RenderSystem.colorMask(true, true, true, true); RenderSystem.colorMask(true, true, true, true);
} }
} }
} }
private void drawTooltip(ITooltip tooltip, int mouseX, int mouseY) { private void drawTooltip(MatrixStack matrixStack, ITooltip tooltip, int mouseX, int mouseY) {
final int x = tooltip.xPos(); // ((GuiImgButton) c).x; final int x = tooltip.xPos(); // ((GuiImgButton) c).x;
int y = tooltip.yPos(); // ((GuiImgButton) c).y; int y = tooltip.yPos(); // ((GuiImgButton) c).y;
@@ -180,41 +184,42 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
y = 15; y = 15;
} }
final String msg = tooltip.getMessage(); final ITextComponent msg = tooltip.getMessage();
if (msg != null && !msg.isEmpty()) { this.drawTooltip(matrixStack, x + 11, y + 4, msg);
this.drawTooltip(x + 11, y + 4, msg);
}
} }
} }
} }
protected void drawTooltip(int x, int y, String message) { protected void drawTooltip(MatrixStack matrices, int x, int y, ITextComponent message) {
String[] lines = message.split("\n"); String[] lines = message.getString().split("\n"); // FIXME FABRIC
this.drawTooltip(x, y, Arrays.asList(lines)); List<ITextComponent> textLines = Arrays.stream(lines).map(StringTextComponent::new)
.collect(Collectors.toList());
this.drawTooltip(matrices, x, y, textLines);
} }
protected void drawTooltip(int x, int y, List<String> lines) { // FIXME FABRIC: move out to json (?)
private static final Style TOOLTIP_HEADER = Style.EMPTY.applyFormatting(TextFormatting.WHITE);
private static final Style TOOLTIP_BODY = Style.EMPTY.applyFormatting(TextFormatting.GRAY);
protected void drawTooltip(MatrixStack matrices, int x, int y, List<ITextComponent> lines) {
if (lines.isEmpty()) { if (lines.isEmpty()) {
return; return;
} }
// For an explanation of the formatting codes, see
// http://minecraft.gamepedia.com/Formatting_codes
lines = Lists.newArrayList(lines); // Make a copy
// Make the first line white // Make the first line white
lines.set(0, TextFormatting.WHITE + lines.get(0));
// All lines after the first are colored gray // All lines after the first are colored gray
for (int i = 1; i < lines.size(); i++) { List<ITextComponent> styledLines = new ArrayList<>(lines.size());
lines.set(i, TextFormatting.GRAY + lines.get(i)); for (int i = 0; i < lines.size(); i++) {
Style style = (i == 0) ? TOOLTIP_HEADER : TOOLTIP_BODY;
styledLines.add(lines.get(i).deepCopy().modifyStyle(s -> style));
} }
this.renderTooltip(lines, x, y, this.font); this.renderTooltip(matrices, styledLines, x, y);
} }
@Override @Override
protected final void drawGuiContainerForegroundLayer(final int x, final int y) { protected final void drawGuiContainerForegroundLayer(MatrixStack matrixStack, final int x, final int y) {
final int ox = this.guiLeft; // (width - xSize) / 2; final int ox = this.guiLeft; // (width - xSize) / 2;
final int oy = this.guiTop; // (height - ySize) / 2; final int oy = this.guiTop; // (height - ySize) / 2;
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
@@ -223,17 +228,18 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
this.getScrollBar().draw(this); this.getScrollBar().draw(this);
} }
this.drawFG(ox, oy, x, y); this.drawFG(matrixStack, ox, oy, x, y);
} }
public abstract void drawFG(int offsetX, int offsetY, int mouseX, int mouseY); public abstract void drawFG(MatrixStack matrixStack, int offsetX, int offsetY, int mouseX, int mouseY);
@Override @Override
protected final void drawGuiContainerBackgroundLayer(final float f, final int x, final int y) { protected final void drawGuiContainerBackgroundLayer(MatrixStack matrixStack, final float f, final int x,
final int y) {
final int ox = this.guiLeft; // (width - xSize) / 2; final int ox = this.guiLeft; // (width - xSize) / 2;
final int oy = this.guiTop; // (height - ySize) / 2; final int oy = this.guiTop; // (height - ySize) / 2;
RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F); RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
this.drawBG(ox, oy, x, y, f); this.drawBG(matrixStack, ox, oy, x, y, f);
final List<Slot> slots = this.getInventorySlots(); final List<Slot> slots = this.getInventorySlots();
for (final Slot slot : slots) { for (final Slot slot : slots) {
@@ -539,11 +545,6 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
return false; return false;
} }
@Override
public void removed() {
super.removed();
}
protected Slot getSlot(final int mouseX, final int mouseY) { protected Slot getSlot(final int mouseX, final int mouseY) {
final List<Slot> slots = this.getInventorySlots(); final List<Slot> slots = this.getInventorySlots();
for (final Slot slot : slots) { for (final Slot slot : slots) {
@@ -556,7 +557,8 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
return null; return null;
} }
public abstract void drawBG(int offsetX, int offsetY, int mouseX, int mouseY, float partialTicks); public abstract void drawBG(MatrixStack matrixStack, int offsetX, int offsetY, int mouseX, int mouseY,
float partialTicks);
@Override @Override
public boolean mouseScrolled(double x, double y, double wheelDelta) { public boolean mouseScrolled(double x, double y, double wheelDelta) {
@@ -607,8 +609,8 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
this.itemRenderer.zLevel = 0.0F; this.itemRenderer.zLevel = 0.0F;
} }
protected String getGuiDisplayName(final String in) { protected ITextComponent getGuiDisplayName(final ITextComponent in) {
return this.hasCustomInventoryName() ? this.getInventoryName() : in; return this.hasCustomInventoryName() ? new StringTextComponent(this.getInventoryName()) : in;
} }
private boolean hasCustomInventoryName() { private boolean hasCustomInventoryName() {
@@ -624,16 +626,16 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
* hackery... * hackery...
*/ */
@Override @Override
public void drawSlot(Slot s) { public void moveItems(MatrixStack matrices, Slot s) {
if (s instanceof SlotME) { if (s instanceof SlotME) {
try { try {
if (!this.isPowered()) { if (!this.isPowered()) {
fill(s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66111111); fill(matrices, s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66111111);
} }
// Annoying but easier than trying to splice into render item // Annoying but easier than trying to splice into render item
super.drawSlot(new Size1Slot((SlotME) s)); super.moveItems(matrices, new Size1Slot((SlotME) s));
this.stackSizeRenderer.renderStackSize(this.font, ((SlotME) s).getAEStack(), s.xPos, s.yPos); this.stackSizeRenderer.renderStackSize(this.font, ((SlotME) s).getAEStack(), s.xPos, s.yPos);
@@ -662,12 +664,13 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
float blue = (fluidAttributes.getColor() & 255) / 255.0F; float blue = (fluidAttributes.getColor() & 255) / 255.0F;
RenderSystem.color3f(red, green, blue); RenderSystem.color3f(red, green, blue);
blit(s.xPos, s.yPos, 0 /* FIXME: Validate this was previous the controls zindex */, 16, 16, sprite); blit(matrices, s.xPos, s.yPos, 0 /* FIXME: Validate this was previous the controls zindex */, 16, 16,
sprite);
RenderSystem.enableBlend(); RenderSystem.enableBlend();
this.fluidStackSizeRenderer.renderStackSize(this.font, fs, s.xPos, s.yPos); this.fluidStackSizeRenderer.renderStackSize(this.font, fs, s.xPos, s.yPos);
} else if (!this.isPowered()) { } else if (!this.isPowered()) {
fill(s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66111111); fill(matrices, s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66111111);
} }
return; return;
@@ -739,7 +742,7 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
setBlitOffset(100); setBlitOffset(100);
this.itemRenderer.zLevel = 100.0F; this.itemRenderer.zLevel = 100.0F;
fill(s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66ff6666); fill(matrices, s.xPos, s.yPos, 16 + s.xPos, 16 + s.yPos, 0x66ff6666);
setBlitOffset(0); setBlitOffset(0);
this.itemRenderer.zLevel = 0.0F; this.itemRenderer.zLevel = 0.0F;
@@ -748,9 +751,9 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
if (s instanceof AppEngSlot) { if (s instanceof AppEngSlot) {
((AppEngSlot) s).setDisplay(true); ((AppEngSlot) s).setDisplay(true);
super.drawSlot(s); super.moveItems(matrices, s);
} else { } else {
super.drawSlot(s); super.moveItems(matrices, s);
} }
return; return;
@@ -759,7 +762,7 @@ public abstract class AEBaseScreen<T extends AEBaseContainer> extends ContainerS
} }
} }
// do the usual for non-ME Slots. // do the usual for non-ME Slots.
super.drawSlot(s); super.moveItems(matrices, s);
} }
protected boolean isPowered() { protected boolean isPowered() {
@@ -7,6 +7,7 @@ import javax.annotation.Nullable;
import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.inventory.container.ContainerType; import net.minecraft.inventory.container.ContainerType;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
import appeng.api.definitions.IDefinitions; import appeng.api.definitions.IDefinitions;
import appeng.api.definitions.IParts; import appeng.api.definitions.IParts;
@@ -92,10 +93,11 @@ final class AESubScreen {
return addBackButton(buttonAdder, x, y, null); return addBackButton(buttonAdder, x, y, null);
} }
public final TabButton addBackButton(Consumer<TabButton> buttonAdder, int x, int y, @Nullable String label) { public final TabButton addBackButton(Consumer<TabButton> buttonAdder, int x, int y,
@Nullable ITextComponent label) {
if (this.previousContainerType != null && !previousContainerIcon.isEmpty()) { if (this.previousContainerType != null && !previousContainerIcon.isEmpty()) {
if (label == null) { if (label == null) {
label = previousContainerIcon.getDisplayName().getString(); label = previousContainerIcon.getDisplayName();
} }
ItemRenderer itemRenderer = gui.getMinecraft().getItemRenderer(); ItemRenderer itemRenderer = gui.getMinecraft().getItemRenderer();
TabButton button = new TabButton(gui.getGuiLeft() + x, gui.getGuiTop() + y, previousContainerIcon, label, TabButton button = new TabButton(gui.getGuiLeft() + x, gui.getGuiTop() + y, previousContainerIcon, label,
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -60,7 +62,8 @@ public class CellWorkbenchScreen extends UpgradeableScreen<CellWorkbenchContaine
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.handleButtonVisibility(); this.handleButtonVisibility();
this.bindTexture(this.getBackground()); this.bindTexture(this.getBackground());
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -41,7 +43,7 @@ public class ChestScreen extends AEBaseScreen<ChestContainer> {
public void init() { public void init() {
super.init(); super.init();
this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.text(),
this.itemRenderer, btn -> openPriority())); this.itemRenderer, btn -> openPriority()));
} }
@@ -50,13 +52,15 @@ public class ChestScreen extends AEBaseScreen<ChestContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.Chest.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Chest.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/chest.png"); this.bindTexture("guis/chest.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -49,21 +51,23 @@ public class CondenserScreen extends AEBaseScreen<CondenserContainer> {
this.container.getOutput()); this.container.getOutput());
this.addButton(new ProgressBar(this.container, "guis/condenser.png", 120 + this.guiLeft, 25 + this.guiTop, 178, this.addButton(new ProgressBar(this.container, "guis/condenser.png", 120 + this.guiLeft, 25 + this.guiTop, 178,
25, 6, 18, Direction.VERTICAL, GuiText.StoredEnergy.getLocal())); 25, 6, 18, Direction.VERTICAL, GuiText.StoredEnergy.text()));
this.addButton(this.mode); this.addButton(this.mode);
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.Condenser.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Condenser.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
this.mode.set(this.container.getOutput()); this.mode.set(this.container.getOutput());
this.mode.setFillVar(String.valueOf(this.container.getOutput().requiredPower)); this.mode.setFillVar(String.valueOf(this.container.getOutput().requiredPower));
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/condenser.png"); this.bindTexture("guis/condenser.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -54,7 +56,7 @@ public class CraftAmountScreen extends AEBaseScreen<CraftAmountContainer> {
this.amountToCraft.addButtons(children::add, this::addButton); this.amountToCraft.addButtons(children::add, this::addButton);
this.next = this.addButton( this.next = this.addButton(
new Button(this.guiLeft + 128, this.guiTop + 51, 38, 20, GuiText.Next.getLocal(), this::confirm)); new Button(this.guiLeft + 128, this.guiTop + 51, 38, 20, GuiText.Next.text(), this::confirm));
subGui.addBackButton(this::addButton, 154, 0); subGui.addBackButton(this::addButton, 154, 0);
} }
@@ -65,20 +67,22 @@ public class CraftAmountScreen extends AEBaseScreen<CraftAmountContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(GuiText.SelectAmount.getLocal(), 8, 6, 4210752); final int mouseY) {
this.font.drawString(matrixStack, GuiText.SelectAmount.text().getString(), 8, 6, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.next.setMessage(hasShiftDown() ? GuiText.Start.getLocal() : GuiText.Next.getLocal()); final int mouseY, float partialTicks) {
this.next.setMessage(hasShiftDown() ? GuiText.Start.text() : GuiText.Next.text());
this.bindTexture("guis/craft_amt.png"); this.bindTexture("guis/craft_amt.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
this.next.active = this.amountToCraft.getValue() > 0; this.next.active = this.amountToCraft.getValue() > 0;
this.amountToCraft.render(offsetX, offsetY, partialTicks); this.amountToCraft.render(matrixStack, offsetX, offsetY, partialTicks);
} }
@Override @Override
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
@@ -31,6 +32,7 @@ import net.minecraft.client.util.InputMappings;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.api.storage.channels.IItemStorageChannel; import appeng.api.storage.channels.IItemStorageChannel;
@@ -82,22 +84,23 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
public void init() { public void init() {
super.init(); super.init();
this.start = new Button(this.guiLeft + 162, this.guiTop + this.ySize - 25, 50, 20, GuiText.Start.getLocal(), this.start = new Button(this.guiLeft + 162, this.guiTop + this.ySize - 25, 50, 20, GuiText.Start.text(),
btn -> start()); btn -> start());
this.start.active = false; this.start.active = false;
this.addButton(this.start); this.addButton(this.start);
this.selectCPU = new Button(this.guiLeft + (219 - 180) / 2, this.guiTop + this.ySize - 68, 180, 20, this.selectCPU = new Button(this.guiLeft + (219 - 180) / 2, this.guiTop + this.ySize - 68, 180, 20,
GuiText.CraftingCPU.getLocal() + ": " + GuiText.Automatic, btn -> selectNextCpu()); new StringTextComponent(GuiText.CraftingCPU.getLocal() + ": " + GuiText.Automatic),
btn -> selectNextCpu());
this.selectCPU.active = false; this.selectCPU.active = false;
this.addButton(this.selectCPU); this.addButton(this.selectCPU);
addButton(new Button(this.guiLeft + 6, this.guiTop + this.ySize - 25, 50, 20, GuiText.Cancel.getLocal(), addButton(new Button(this.guiLeft + 6, this.guiTop + this.ySize - 25, 50, 20, GuiText.Cancel.text(),
btn -> subGui.goBack())); btn -> subGui.goBack()));
} }
@Override @Override
public void render(final int mouseX, final int mouseY, final float btn) { public void render(MatrixStack matrixStack, final int mouseX, final int mouseY, final float btn) {
this.updateCPUButtonText(); this.updateCPUButtonText();
this.start.active = !(this.container.hasNoCPU() || this.isSimulation()); this.start.active = !(this.container.hasNoCPU() || this.isSimulation());
@@ -130,7 +133,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
} }
} }
super.render(mouseX, mouseY, btn); super.render(matrixStack, mouseX, mouseY, btn);
} }
private void updateCPUButtonText() { private void updateCPUButtonText() {
@@ -149,7 +152,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
btnTextText = GuiText.NoCraftingCPUs.getLocal(); btnTextText = GuiText.NoCraftingCPUs.getLocal();
} }
this.selectCPU.setMessage(btnTextText); this.selectCPU.setMessage(new StringTextComponent(btnTextText));
} }
private boolean isSimulation() { private boolean isSimulation() {
@@ -157,12 +160,13 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY) {
final long BytesUsed = this.container.getUsedBytes(); final long BytesUsed = this.container.getUsedBytes();
final String byteUsed = NumberFormat.getInstance().format(BytesUsed); final String byteUsed = NumberFormat.getInstance().format(BytesUsed);
final String Add = BytesUsed > 0 ? (byteUsed + ' ' + GuiText.BytesUsed.getLocal()) final String Add = BytesUsed > 0 ? (byteUsed + ' ' + GuiText.BytesUsed.getLocal())
: GuiText.CalculatingWait.getLocal(); : GuiText.CalculatingWait.getLocal();
this.font.drawString(GuiText.CraftingPlan.getLocal() + " - " + Add, 8, 7, 4210752); this.font.drawString(matrixStack, GuiText.CraftingPlan.getLocal() + " - " + Add, 8, 7, 4210752);
String dsp = null; String dsp = null;
@@ -176,7 +180,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
} }
final int offset = (219 - this.font.getStringWidth(dsp)) / 2; final int offset = (219 - this.font.getStringWidth(dsp)) / 2;
this.font.drawString(dsp, offset, 165, 4210752); this.font.drawString(matrixStack, dsp, offset, 165, 4210752);
final int sectionLength = 67; final int sectionLength = 67;
@@ -230,7 +234,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
str = GuiText.FromStorage.getLocal() + ": " + str; str = GuiText.FromStorage.getLocal() + ": " + str;
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2), (int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2),
(y * offY + yo + 6 - negY + downY) * 2, 4210752); (y * offY + yo + 6 - negY + downY) * 2, 4210752);
@@ -251,9 +255,9 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
str = Long.toString(missingStack.getStackSize() / 1000000) + 'm'; str = Long.toString(missingStack.getStackSize() / 1000000) + 'm';
} }
str = GuiText.Missing.getLocal() + ": " + str; str = GuiText.Missing.text().getString() + ": " + str;
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2), (int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2),
(y * offY + yo + 6 - negY + downY) * 2, 4210752); (y * offY + yo + 6 - negY + downY) * 2, 4210752);
@@ -276,7 +280,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
str = GuiText.ToCraft.getLocal() + ": " + str; str = GuiText.ToCraft.getLocal() + ": " + str;
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2), (int) ((x * (1 + sectionLength) + xo + sectionLength - 19 - (w * 0.5)) * 2),
(y * offY + yo + 6 - negY + downY) * 2, 4210752); (y * offY + yo + 6 - negY + downY) * 2, 4210752);
@@ -292,7 +296,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
final ItemStack is = refStack.asItemStackRepresentation(); final ItemStack is = refStack.asItemStackRepresentation();
if (this.tooltip == z - viewStart) { if (this.tooltip == z - viewStart) {
dspToolTip = Platform.getItemDisplayName(refStack).getFormattedText(); dspToolTip = Platform.getItemDisplayName(refStack).getString();
if (lineList.size() > 0) { if (lineList.size() > 0) {
dspToolTip = dspToolTip + '\n' + Joiner.on("\n").join(lineList); dspToolTip = dspToolTip + '\n' + Joiner.on("\n").join(lineList);
@@ -307,7 +311,7 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
if (red) { if (red) {
final int startX = x * (1 + sectionLength) + xo; final int startX = x * (1 + sectionLength) + xo;
final int startY = posY - 4; final int startY = posY - 4;
fill(startX, startY, startX + sectionLength, startY + offY, 0x1AFF0000); fill(matrixStack, startX, startY, startX + sectionLength, startY + offY, 0x1AFF0000);
} }
x++; x++;
@@ -320,12 +324,13 @@ public class CraftConfirmScreen extends AEBaseScreen<CraftConfirmContainer> {
} }
if (this.tooltip >= 0 && !dspToolTip.isEmpty()) { if (this.tooltip >= 0 && !dspToolTip.isEmpty()) {
this.drawTooltip(toolPosX, toolPosY + 10, dspToolTip); this.drawTooltip(matrixStack, toolPosX, toolPosY + 10, new StringTextComponent(dspToolTip));
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.setScrollBar(); this.setScrollBar();
this.bindTexture("guis/craftingreport.png"); this.bindTexture("guis/craftingreport.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
@@ -24,6 +24,7 @@ import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.lang3.time.DurationFormatUtils;
@@ -32,6 +33,7 @@ import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.api.config.SortDir; import appeng.api.config.SortDir;
@@ -115,7 +117,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
super.init(); super.init();
this.setScrollBar(); this.setScrollBar();
this.cancel = new Button(this.guiLeft + CANCEL_LEFT_OFFSET, this.guiTop + this.ySize - CANCEL_TOP_OFFSET, this.cancel = new Button(this.guiLeft + CANCEL_LEFT_OFFSET, this.guiTop + this.ySize - CANCEL_TOP_OFFSET,
CANCEL_WIDTH, CANCEL_HEIGHT, GuiText.Cancel.getLocal(), btn -> cancel()); CANCEL_WIDTH, CANCEL_HEIGHT, GuiText.Cancel.text(), btn -> cancel());
this.addButton(this.cancel); this.addButton(this.cancel);
} }
@@ -127,7 +129,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
} }
@Override @Override
public void render(final int mouseX, final int mouseY, final float btn) { public void render(MatrixStack matrixStack, final int mouseX, final int mouseY, final float btn) {
this.cancel.active = !this.visual.isEmpty(); this.cancel.active = !this.visual.isEmpty();
final int gx = (this.width - this.xSize) / 2; final int gx = (this.width - this.xSize) / 2;
@@ -157,12 +159,13 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
} }
} }
super.render(mouseX, mouseY, btn); super.render(matrixStack, mouseX, mouseY, btn);
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
String title = this.getGuiDisplayName(GuiText.CraftingStatus.getLocal()); final int mouseY) {
String title = this.getGuiDisplayName(GuiText.CraftingStatus.text()).getString();
if (this.container.getEstimatedTime() > 0 && !this.visual.isEmpty()) { if (this.container.getEstimatedTime() > 0 && !this.visual.isEmpty()) {
final long etaInMilliseconds = TimeUnit.MILLISECONDS.convert(this.container.getEstimatedTime(), final long etaInMilliseconds = TimeUnit.MILLISECONDS.convert(this.container.getEstimatedTime(),
@@ -172,7 +175,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
title += " - " + etaTimeText; title += " - " + etaTimeText;
} }
this.font.drawString(title, TITLE_LEFT_OFFSET, TITLE_TOP_OFFSET, TEXT_COLOR); this.font.drawString(matrixStack, title, TITLE_LEFT_OFFSET, TITLE_TOP_OFFSET, TEXT_COLOR);
int x = 0; int x = 0;
int y = 0; int y = 0;
@@ -218,7 +221,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
| BACKGROUND_ALPHA; | BACKGROUND_ALPHA;
final int startX = (x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET) * 2; final int startX = (x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET) * 2;
final int startY = ((y * offY + ITEMSTACK_TOP_OFFSET) - 3) * 2; final int startY = ((y * offY + ITEMSTACK_TOP_OFFSET) - 3) * 2;
fill(startX, startY, startX + (SECTION_LENGTH * 2), startY + (offY * 2) - 2, bgColor); fill(matrixStack, startX, startY, startX + (SECTION_LENGTH * 2), startY + (offY * 2) - 2, bgColor);
} }
final int negY = ((lines - 1) * 5) / 2; final int negY = ((lines - 1) * 5) / 2;
@@ -228,7 +231,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
final String str = GuiText.Stored.getLocal() + ": " final String str = GuiText.Stored.getLocal() + ": "
+ converter.toWideReadableForm(stored.getStackSize()); + converter.toWideReadableForm(stored.getStackSize());
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5)) (int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5))
* 2), * 2),
(y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR); (y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR);
@@ -245,7 +248,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
+ converter.toWideReadableForm(activeStack.getStackSize()); + converter.toWideReadableForm(activeStack.getStackSize());
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5)) (int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5))
* 2), * 2),
(y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR); (y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR);
@@ -262,7 +265,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
+ converter.toWideReadableForm(pendingStack.getStackSize()); + converter.toWideReadableForm(pendingStack.getStackSize());
final int w = 4 + this.font.getStringWidth(str); final int w = 4 + this.font.getStringWidth(str);
this.font.drawString(str, this.font.drawString(matrixStack, str,
(int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5)) (int) ((x * (1 + SECTION_LENGTH) + ITEMSTACK_LEFT_OFFSET + SECTION_LENGTH - 19 - (w * 0.5))
* 2), * 2),
(y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR); (y * offY + ITEMSTACK_TOP_OFFSET + 6 - negY + downY) * 2, TEXT_COLOR);
@@ -279,7 +282,7 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
final ItemStack is = refStack.asItemStackRepresentation(); final ItemStack is = refStack.asItemStackRepresentation();
if (this.tooltip == z - viewStart) { if (this.tooltip == z - viewStart) {
dspToolTip = Platform.getItemDisplayName(refStack).getFormattedText(); dspToolTip = Platform.getItemDisplayName(refStack).getString();
if (lineList.size() > 0) { if (lineList.size() > 0) {
dspToolTip = dspToolTip + '\n' + Joiner.on("\n").join(lineList); dspToolTip = dspToolTip + '\n' + Joiner.on("\n").join(lineList);
@@ -301,12 +304,13 @@ public class CraftingCPUScreen<T extends CraftingCPUContainer> extends AEBaseScr
} }
if (this.tooltip >= 0 && !dspToolTip.isEmpty()) { if (this.tooltip >= 0 && !dspToolTip.isEmpty()) {
this.drawTooltip(toolPosX, toolPosY + 10, dspToolTip); this.drawTooltip(matrixStack, toolPosX, toolPosY + 10, new StringTextComponent(dspToolTip));
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/craftingcpu.png"); this.bindTexture("guis/craftingcpu.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -22,9 +22,12 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import appeng.container.implementations.CraftingStatusContainer; import appeng.container.implementations.CraftingStatusContainer;
import appeng.core.localization.GuiText; import appeng.core.localization.GuiText;
@@ -48,7 +51,8 @@ public class CraftingStatusScreen extends CraftingCPUScreen<CraftingStatusContai
super.init(); super.init();
this.selectCPU = new Button(this.guiLeft + 8, this.guiTop + this.ySize - 25, 150, 20, this.selectCPU = new Button(this.guiLeft + 8, this.guiTop + this.ySize - 25, 150, 20,
GuiText.CraftingCPU.getLocal() + ": " + GuiText.NoCraftingCPUs, btn -> selectNextCpu()); new StringTextComponent(GuiText.CraftingCPU.getLocal() + ": " + GuiText.NoCraftingCPUs),
btn -> selectNextCpu());
this.addButton(this.selectCPU); this.addButton(this.selectCPU);
subGui.addBackButton(btn -> { subGui.addBackButton(btn -> {
@@ -58,9 +62,9 @@ public class CraftingStatusScreen extends CraftingCPUScreen<CraftingStatusContai
} }
@Override @Override
public void render(final int mouseX, final int mouseY, final float btn) { public void render(MatrixStack matrixStack, final int mouseX, final int mouseY, final float btn) {
this.updateCPUButtonText(); this.updateCPUButtonText();
super.render(mouseX, mouseY, btn); super.render(matrixStack, mouseX, mouseY, btn);
} }
private void updateCPUButtonText() { private void updateCPUButtonText() {
@@ -80,11 +84,11 @@ public class CraftingStatusScreen extends CraftingCPUScreen<CraftingStatusContai
btnTextText = GuiText.NoCraftingJobs.getLocal(); btnTextText = GuiText.NoCraftingJobs.getLocal();
} }
this.selectCPU.setMessage(btnTextText); this.selectCPU.setMessage(new StringTextComponent(btnTextText));
} }
@Override @Override
protected String getGuiDisplayName(final String in) { protected ITextComponent getGuiDisplayName(final ITextComponent in) {
return in; // the cup name is on the button return in; // the cup name is on the button
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -61,10 +63,11 @@ public class CraftingTermScreen extends MEMonitorableScreen<CraftingTermContaine
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
super.drawFG(offsetX, offsetY, mouseX, mouseY); final int mouseY) {
this.font.drawString(GuiText.CraftingTerminal.getLocal(), 8, this.ySize - 96 + 1 - this.getReservedSpace(), super.drawFG(matrixStack, offsetX, offsetY, mouseX, mouseY);
4210752); this.font.drawString(matrixStack, GuiText.CraftingTerminal.getLocal(), 8,
this.ySize - 96 + 1 - this.getReservedSpace(), 4210752);
} }
@Override @Override
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -41,7 +43,7 @@ public class DriveScreen extends AEBaseScreen<DriveContainer> {
public void init() { public void init() {
super.init(); super.init();
this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.text(),
this.itemRenderer, btn -> openPriorityGui())); this.itemRenderer, btn -> openPriorityGui()));
} }
@@ -50,13 +52,15 @@ public class DriveScreen extends AEBaseScreen<DriveContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.Drive.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Drive.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/drive.png"); this.bindTexture("guis/drive.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -50,7 +52,7 @@ public class FormationPlaneScreen extends UpgradeableScreen<FormationPlaneContai
this.fuzzyMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 48, Settings.FUZZY_MODE, this.fuzzyMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 48, Settings.FUZZY_MODE,
FuzzyMode.IGNORE_ALL); FuzzyMode.IGNORE_ALL);
this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.text(),
this.itemRenderer, btn -> openPriorityGui())); this.itemRenderer, btn -> openPriorityGui()));
this.addButton(this.placeMode); this.addButton(this.placeMode);
@@ -58,9 +60,11 @@ public class FormationPlaneScreen extends UpgradeableScreen<FormationPlaneContai
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.FormationPlane.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.FormationPlane.text()).getString(), 8, 6,
4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
if (this.fuzzyMode != null) { if (this.fuzzyMode != null) {
this.fuzzyMode.set(this.cvb.getFuzzyMode()); this.fuzzyMode.set(this.cvb.getFuzzyMode());
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -34,13 +36,15 @@ public class GrinderScreen extends AEBaseScreen<GrinderContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.GrindStone.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.GrindStone.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/grinder.png"); this.bindTexture("guis/grinder.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -57,9 +59,10 @@ public class IOPortScreen extends UpgradeableScreen<IOPortContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.IOPort.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.IOPort.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
if (this.redstoneMode != null) { if (this.redstoneMode != null) {
this.redstoneMode.set(this.cvb.getRedStoneMode()); this.redstoneMode.set(this.cvb.getRedStoneMode());
@@ -75,8 +78,9 @@ public class IOPortScreen extends UpgradeableScreen<IOPortContainer> {
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
super.drawBG(offsetX, offsetY, mouseX, mouseY, partialTicks); final int mouseY, float partialTicks) {
super.drawBG(matrixStack, offsetX, offsetY, mouseX, mouseY, partialTicks);
final IDefinitions definitions = Api.instance().definitions(); final IDefinitions definitions = Api.instance().definitions();
@@ -18,8 +18,11 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.client.gui.AEBaseScreen; import appeng.client.gui.AEBaseScreen;
@@ -51,15 +54,18 @@ public class InscriberScreen extends AEBaseScreen<InscriberContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.pb.setFullMsg(this.container.getCurrentProgress() * 100 / this.container.getMaxProgress() + "%"); final int mouseY) {
this.pb.setFullMsg(new StringTextComponent(
this.container.getCurrentProgress() * 100 / this.container.getMaxProgress() + "%"));
this.font.drawString(this.getGuiDisplayName(GuiText.Inscriber.getLocal()), 8, 6, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Inscriber.text()).getString(), 8, 6, 4210752);
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/inscriber.png"); this.bindTexture("guis/inscriber.png");
this.pb.x = 135 + this.guiLeft; this.pb.x = 135 + this.guiLeft;
this.pb.y = 39 + this.guiTop; this.pb.y = 39 + this.guiTop;
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -46,7 +48,7 @@ public class InterfaceScreen extends UpgradeableScreen<InterfaceContainer> {
@Override @Override
protected void addButtons() { protected void addButtons() {
this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.text(),
this.itemRenderer, btn -> openPriorityGui())); this.itemRenderer, btn -> openPriorityGui()));
this.blockMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 8, Settings.BLOCK, YesNo.NO); this.blockMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 8, Settings.BLOCK, YesNo.NO);
@@ -59,7 +61,8 @@ public class InterfaceScreen extends UpgradeableScreen<InterfaceContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY) {
if (this.blockMode != null) { if (this.blockMode != null) {
this.blockMode.set(((InterfaceContainer) this.cvb).getBlockingMode()); this.blockMode.set(((InterfaceContainer) this.cvb).getBlockingMode());
} }
@@ -68,13 +71,13 @@ public class InterfaceScreen extends UpgradeableScreen<InterfaceContainer> {
this.interfaceMode.setState(((InterfaceContainer) this.cvb).getInterfaceTerminalMode() == YesNo.YES); this.interfaceMode.setState(((InterfaceContainer) this.cvb).getInterfaceTerminalMode() == YesNo.YES);
} }
this.font.drawString(this.getGuiDisplayName(GuiText.Interface.getLocal()), 8, 6, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Interface.text()).getString(), 8, 6, 4210752);
this.font.drawString(GuiText.Config.getLocal(), 8, 6 + 11 + 7, 4210752); this.font.drawString(matrixStack, GuiText.Config.getLocal(), 8, 6 + 11 + 7, 4210752);
this.font.drawString(GuiText.StoredItems.getLocal(), 8, 6 + 60 + 7, 4210752); this.font.drawString(matrixStack, GuiText.StoredItems.getLocal(), 8, 6 + 60 + 7, 4210752);
this.font.drawString(GuiText.Patterns.getLocal(), 8, 6 + 73 + 7, 4210752); this.font.drawString(matrixStack, GuiText.Patterns.getLocal(), 8, 6 + 73 + 7, 4210752);
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
@@ -28,6 +28,7 @@ import java.util.Set;
import java.util.WeakHashMap; import java.util.WeakHashMap;
import com.google.common.collect.HashMultimap; import com.google.common.collect.HashMultimap;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
@@ -93,9 +94,11 @@ public class InterfaceTerminalScreen extends AEBaseScreen<InterfaceTerminalConta
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.InterfaceTerminal.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.InterfaceTerminal.text()).getString(), 8, 6,
4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
final int ex = this.getScrollBar().getCurrentScroll(); final int ex = this.getScrollBar().getCurrentScroll();
@@ -120,7 +123,7 @@ public class InterfaceTerminalScreen extends AEBaseScreen<InterfaceTerminalConta
name = name.substring(0, name.length() - 1); name = name.substring(0, name.length() - 1);
} }
this.font.drawString(name, 10, 6 + offset, 4210752); this.font.drawString(matrixStack, name, 10, 6 + offset, 4210752);
} }
offset += 18; offset += 18;
} }
@@ -140,7 +143,8 @@ public class InterfaceTerminalScreen extends AEBaseScreen<InterfaceTerminalConta
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/interfaceterminal.png"); this.bindTexture("guis/interfaceterminal.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
@@ -160,7 +164,7 @@ public class InterfaceTerminalScreen extends AEBaseScreen<InterfaceTerminalConta
} }
if (this.searchField != null) { if (this.searchField != null) {
this.searchField.render(mouseX, mouseY, partialTicks); this.searchField.render(matrixStack, mouseX, mouseY, partialTicks);
} }
} }
@@ -217,7 +221,7 @@ public class InterfaceTerminalScreen extends AEBaseScreen<InterfaceTerminalConta
try { try {
final long id = Long.parseLong(key.substring(1), Character.MAX_RADIX); final long id = Long.parseLong(key.substring(1), Character.MAX_RADIX);
final CompoundNBT invData = in.getCompound(key); final CompoundNBT invData = in.getCompound(key);
ITextComponent un = ITextComponent.Serializer.fromJson(invData.getString("un")); ITextComponent un = ITextComponent.Serializer.func_240643_a_(invData.getString("un"));
final ClientDCInternalInv current = this.getById(id, invData.getLong("sortBy"), un); final ClientDCInternalInv current = this.getById(id, invData.getLong("sortBy"), un);
for (int x = 0; x < current.getInventory().getSlots(); x++) { for (int x = 0; x < current.getInventory().getSlots(); x++) {
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -77,7 +79,8 @@ public class LevelEmitterScreen extends UpgradeableScreen<LevelEmitterContainer>
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY) {
final boolean notCraftingMode = this.bc.getInstalledUpgrades(Upgrades.CRAFTING) == 0; final boolean notCraftingMode = this.bc.getInstalledUpgrades(Upgrades.CRAFTING) == 0;
// configure enabled status... // configure enabled status...
@@ -85,7 +88,7 @@ public class LevelEmitterScreen extends UpgradeableScreen<LevelEmitterContainer>
this.levelMode.active = notCraftingMode; this.levelMode.active = notCraftingMode;
this.redstoneMode.active = notCraftingMode; this.redstoneMode.active = notCraftingMode;
super.drawFG(offsetX, offsetY, mouseX, mouseY); super.drawFG(matrixStack, offsetX, offsetY, mouseX, mouseY);
if (this.craftingMode != null) { if (this.craftingMode != null) {
this.craftingMode.set(this.cvb.getCraftingMode()); this.craftingMode.set(this.cvb.getCraftingMode());
@@ -97,16 +100,18 @@ public class LevelEmitterScreen extends UpgradeableScreen<LevelEmitterContainer>
if (notCraftingMode) { if (notCraftingMode) {
if (currentLevelMode == LevelType.ENERGY_LEVEL) { if (currentLevelMode == LevelType.ENERGY_LEVEL) {
this.font.drawString(PowerUnits.AE.textComponent().getString(), 110, 44, COLOR_DARK_GRAY); this.font.drawString(matrixStack, PowerUnits.AE.textComponent().getString(), 110, 44,
COLOR_DARK_GRAY);
} }
} }
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
super.drawBG(offsetX, offsetY, mouseX, mouseY, partialTicks); final int mouseY, float partialTicks) {
this.level.render(mouseX, mouseY, partialTicks); super.drawBG(matrixStack, offsetX, offsetY, mouseX, mouseY, partialTicks);
this.level.render(matrixStack, mouseX, mouseY, partialTicks);
} }
@Override @Override
@@ -20,6 +20,8 @@ package appeng.client.gui.implementations;
import java.util.List; import java.util.List;
import com.mojang.blaze3d.matrix.MatrixStack;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import net.minecraft.client.util.InputMappings; import net.minecraft.client.util.InputMappings;
@@ -234,7 +236,7 @@ public class MEMonitorableScreen<T extends MEMonitorableContainer> extends AEBas
if (this.viewCell || this instanceof WirelessTermScreen) { if (this.viewCell || this instanceof WirelessTermScreen) {
this.craftingStatusBtn = this.addButton(new TabButton(this.guiLeft + 170, this.guiTop - 4, 2 + 11 * 16, this.craftingStatusBtn = this.addButton(new TabButton(this.guiLeft + 170, this.guiTop - 4, 2 + 11 * 16,
GuiText.CraftingStatus.getLocal(), this.itemRenderer, btn -> showCraftingStatus())); GuiText.CraftingStatus.text(), this.itemRenderer, btn -> showCraftingStatus()));
this.craftingStatusBtn.setHideEdge(13); this.craftingStatusBtn.setHideEdge(13);
} }
@@ -284,9 +286,10 @@ public class MEMonitorableScreen<T extends MEMonitorableContainer> extends AEBas
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(this.myName.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(this.myName.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.text().getString(), 8, this.ySize - 96 + 3, 4210752);
this.currentMouseX = mouseX; this.currentMouseX = mouseX;
this.currentMouseY = mouseY; this.currentMouseY = mouseY;
@@ -311,28 +314,29 @@ public class MEMonitorableScreen<T extends MEMonitorableContainer> extends AEBas
} }
@Override @Override
public void removed() { public void onClose() {
super.removed(); super.onClose();
getMinecraft().keyboardListener.enableRepeatEvents(false); getMinecraft().keyboardListener.enableRepeatEvents(false);
memoryText = this.searchField.getText(); memoryText = this.searchField.getText();
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture(this.getBackground()); this.bindTexture(this.getBackground());
final int x_width = 197; final int x_width = 197;
blit(offsetX, offsetY, 0, 0, x_width, 18); blit(matrixStack, offsetX, offsetY, 0, 0, x_width, 18);
if (this.viewCell || (this instanceof SecurityStationScreen)) { if (this.viewCell || (this instanceof SecurityStationScreen)) {
blit(offsetX + x_width, offsetY, x_width, 0, 46, 128); blit(matrixStack, offsetX + x_width, offsetY, x_width, 0, 46, 128);
} }
for (int x = 0; x < this.rows; x++) { for (int x = 0; x < this.rows; x++) {
blit(offsetX, offsetY + 18 + x * 18, 0, 18, x_width, 18); blit(matrixStack, offsetX, offsetY + 18 + x * 18, 0, 18, x_width, 18);
} }
blit(offsetX, offsetY + 16 + this.rows * 18 + this.lowerTextureOffset, 0, 106 - 18 - 18, x_width, blit(matrixStack, offsetX, offsetY + 16 + this.rows * 18 + this.lowerTextureOffset, 0, 106 - 18 - 18, x_width,
99 + this.reservedSpace - this.lowerTextureOffset); 99 + this.reservedSpace - this.lowerTextureOffset);
if (this.viewCell) { if (this.viewCell) {
@@ -351,7 +355,7 @@ public class MEMonitorableScreen<T extends MEMonitorableContainer> extends AEBas
} }
if (this.searchField != null) { if (this.searchField != null) {
this.searchField.render(mouseX, mouseY, partialTicks); this.searchField.render(matrixStack, mouseX, mouseY, partialTicks);
} }
} }
@@ -18,8 +18,11 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import appeng.api.config.RedstoneMode; import appeng.api.config.RedstoneMode;
import appeng.api.config.Settings; import appeng.api.config.Settings;
@@ -56,16 +59,18 @@ public class MolecularAssemblerScreen extends UpgradeableScreen<MolecularAssembl
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.pb.setFullMsg(this.container.getCurrentProgress() + "%"); final int mouseY) {
super.drawFG(offsetX, offsetY, mouseX, mouseY); this.pb.setFullMsg(new StringTextComponent(this.container.getCurrentProgress() + "%"));
super.drawFG(matrixStack, offsetX, offsetY, mouseX, mouseY);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.pb.x = 148 + this.guiLeft; this.pb.x = 148 + this.guiLeft;
this.pb.y = 48 + this.guiTop; this.pb.y = 48 + this.guiTop;
super.drawBG(offsetX, offsetY, mouseX, mouseY, partialTicks); super.drawBG(matrixStack, offsetX, offsetY, mouseX, mouseY, partialTicks);
} }
@Override @Override
@@ -20,12 +20,14 @@ package appeng.client.gui.implementations;
import java.util.List; import java.util.List;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Slot; import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.api.config.SortDir; import appeng.api.config.SortDir;
@@ -68,7 +70,7 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
@Override @Override
public void render(final int mouseX, final int mouseY, final float btn) { public void render(MatrixStack matrixStack, final int mouseX, final int mouseY, final float btn) {
final int gx = (this.width - this.xSize) / 2; final int gx = (this.width - this.xSize) / 2;
final int gy = (this.height - this.ySize) / 2; final int gy = (this.height - this.ySize) / 2;
@@ -96,23 +98,24 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
} }
super.render(mouseX, mouseY, btn); super.render(matrixStack, mouseX, mouseY, btn);
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(GuiText.NetworkDetails.getLocal(), 8, 6, 4210752); final int mouseY) {
this.font.drawString(matrixStack, GuiText.NetworkDetails.getLocal(), 8, 6, 4210752);
this.font.drawString( this.font.drawString(matrixStack,
GuiText.StoredPower.getLocal() + ": " + Platform.formatPowerLong(container.getCurrentPower(), false), GuiText.StoredPower.getLocal() + ": " + Platform.formatPowerLong(container.getCurrentPower(), false),
13, 16, 4210752); 13, 16, 4210752);
this.font.drawString( this.font.drawString(matrixStack,
GuiText.MaxPower.getLocal() + ": " + Platform.formatPowerLong(container.getMaxPower(), false), 13, 26, GuiText.MaxPower.getLocal() + ": " + Platform.formatPowerLong(container.getMaxPower(), false), 13, 26,
4210752); 4210752);
this.font.drawString(GuiText.PowerInputRate.getLocal() + ": " this.font.drawString(matrixStack, GuiText.PowerInputRate.getLocal() + ": "
+ Platform.formatPowerLong(container.getAverageAddition(), true), 13, 143 - 10, 4210752); + Platform.formatPowerLong(container.getAverageAddition(), true), 13, 143 - 10, 4210752);
this.font.drawString( this.font.drawString(matrixStack,
GuiText.PowerUsageRate.getLocal() + ": " + Platform.formatPowerLong(container.getPowerUsage(), true), GuiText.PowerUsageRate.getLocal() + ": " + Platform.formatPowerLong(container.getPowerUsage(), true),
13, 143 - 20, 4210752); 13, 143 - 20, 4210752);
@@ -141,15 +144,16 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
final int w = this.font.getStringWidth(str); final int w = this.font.getStringWidth(str);
this.font.drawString(str, (int) ((x * sectionLength + xo + sectionLength - 19 - (w * 0.5)) * 2), this.font.drawString(matrixStack, str,
(y * 18 + yo + 6) * 2, 4210752); (int) ((x * sectionLength + xo + sectionLength - 19 - (w * 0.5)) * 2), (y * 18 + yo + 6) * 2,
4210752);
RenderSystem.popMatrix(); RenderSystem.popMatrix();
final int posX = x * sectionLength + xo + sectionLength - 18; final int posX = x * sectionLength + xo + sectionLength - 18;
final int posY = y * 18 + yo; final int posY = y * 18 + yo;
if (this.tooltip == z - viewStart) { if (this.tooltip == z - viewStart) {
toolTip = Platform.getItemDisplayName(refStack).getFormattedText(); toolTip = Platform.getItemDisplayName(refStack).getString();
toolTip += ('\n' + GuiText.Installed.getLocal() + ": " + (refStack.getStackSize())); toolTip += ('\n' + GuiText.Installed.getLocal() + ": " + (refStack.getStackSize()));
if (refStack.getCountRequestable() > 0) { if (refStack.getCountRequestable() > 0) {
@@ -173,12 +177,13 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
if (this.tooltip >= 0 && toolTip.length() > 0) { if (this.tooltip >= 0 && toolTip.length() > 0) {
this.drawTooltip(toolPosX, toolPosY + 10, toolTip); this.drawTooltip(matrixStack, toolPosX, toolPosY + 10, new StringTextComponent(toolTip));
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/networkstatus.png"); this.bindTexture("guis/networkstatus.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -201,7 +206,7 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
@Override @Override
protected void renderTooltip(final ItemStack stack, final int x, final int y) { protected void renderTooltip(MatrixStack matrixStack, final ItemStack stack, final int x, final int y) {
final Slot s = this.getSlot(x, y); final Slot s = this.getSlot(x, y);
if (s instanceof SlotME && !stack.isEmpty()) { if (s instanceof SlotME && !stack.isEmpty()) {
@@ -214,21 +219,21 @@ public class NetworkStatusScreen extends AEBaseScreen<NetworkStatusContainer> im
} }
if (myStack != null) { if (myStack != null) {
List<String> currentToolTip = getTooltipFromItem(stack); List<ITextComponent> currentToolTip = getTooltipFromItem(stack);
while (currentToolTip.size() > 1) { while (currentToolTip.size() > 1) {
currentToolTip.remove(1); currentToolTip.remove(1);
} }
currentToolTip.add(GuiText.Installed.getLocal() + ": " + (myStack.getStackSize())); currentToolTip.add(GuiText.Installed.withSuffix(": " + (myStack.getStackSize())));
currentToolTip.add(GuiText.EnergyDrain.getLocal() + ": " currentToolTip.add(GuiText.EnergyDrain
+ Platform.formatPowerLong(myStack.getCountRequestable(), true)); .withSuffix(": " + Platform.formatPowerLong(myStack.getCountRequestable(), true)));
this.drawTooltip(x, y, currentToolTip); this.drawTooltip(matrixStack, x, y, currentToolTip);
} }
} }
super.renderTooltip(stack, x, y); super.renderTooltip(matrixStack, stack, x, y);
} }
@Override @Override
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -54,17 +56,20 @@ public class NetworkToolScreen extends AEBaseScreen<NetworkToolContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY) {
if (this.tFacades != null) { if (this.tFacades != null) {
this.tFacades.setState(container.isFacadeMode()); this.tFacades.setState(container.isFacadeMode());
} }
this.font.drawString(this.getGuiDisplayName(GuiText.NetworkTool.getLocal()), 8, 6, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.NetworkTool.text()).getString(), 8, 6,
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/toolbox.png"); this.bindTexture("guis/toolbox.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -3,9 +3,13 @@ package appeng.client.gui.implementations;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.function.LongConsumer; import java.util.function.LongConsumer;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.IGuiEventListener; import net.minecraft.client.gui.IGuiEventListener;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import appeng.client.gui.AEBaseScreen; import appeng.client.gui.AEBaseScreen;
import appeng.client.gui.NumberEntryType; import appeng.client.gui.NumberEntryType;
@@ -19,6 +23,9 @@ import appeng.core.AEConfig;
*/ */
public class NumberEntryWidget implements ITickingWidget { public class NumberEntryWidget implements ITickingWidget {
private static final ITextComponent PLUS = new StringTextComponent("+");
private static final ITextComponent MINUS = new StringTextComponent("+");
private final AEBaseScreen<?> parent; private final AEBaseScreen<?> parent;
private final int x; private final int x;
@@ -86,18 +93,18 @@ public class NumberEntryWidget implements ITickingWidget {
int left = parent.getGuiLeft() + x; int left = parent.getGuiLeft() + x;
int top = parent.getGuiTop() + y; int top = parent.getGuiTop() + y;
addButton.accept(this.plus1 = new Button(left, top, 22, 20, "+" + a, btn -> addQty(a))); addButton.accept(this.plus1 = new Button(left, top, 22, 20, PLUS /* + a */, btn -> addQty(a)));
addButton.accept(this.plus10 = new Button(left + 28, top, 28, 20, "+" + b, btn -> addQty(b))); addButton.accept(this.plus10 = new Button(left + 28, top, 28, 20, PLUS /* + b */, btn -> addQty(b)));
addButton.accept(this.plus100 = new Button(left + 62, top, 32, 20, "+" + c, btn -> addQty(c))); addButton.accept(this.plus100 = new Button(left + 62, top, 32, 20, PLUS /* + c */, btn -> addQty(c)));
addButton.accept(this.plus1000 = new Button(left + 100, top, 38, 20, "+" + d, btn -> addQty(d))); addButton.accept(this.plus1000 = new Button(left + 100, top, 38, 20, PLUS/* + d */, btn -> addQty(d)));
// Placing this here will give a sensible tab order // Placing this here will give a sensible tab order
addChildren.accept(this.level); addChildren.accept(this.level);
addButton.accept(this.minus1 = new Button(left, top + 42, 22, 20, "-" + a, btn -> addQty(-a))); addButton.accept(this.minus1 = new Button(left, top + 42, 22, 20, MINUS /* + a */, btn -> addQty(-a)));
addButton.accept(this.minus10 = new Button(left + 28, top + 42, 28, 20, "-" + b, btn -> addQty(-b))); addButton.accept(this.minus10 = new Button(left + 28, top + 42, 28, 20, MINUS /* + b */, btn -> addQty(-b)));
addButton.accept(this.minus100 = new Button(left + 62, top + 42, 32, 20, "-" + c, btn -> addQty(-c))); addButton.accept(this.minus100 = new Button(left + 62, top + 42, 32, 20, MINUS /* + c */, btn -> addQty(-c)));
addButton.accept(this.minus1000 = new Button(left + 100, top + 42, 38, 20, "-" + d, btn -> addQty(-d))); addButton.accept(this.minus1000 = new Button(left + 100, top + 42, 38, 20, MINUS /* + d */, btn -> addQty(-d)));
} }
private void addQty(final long i) { private void addQty(final long i) {
@@ -106,8 +113,8 @@ public class NumberEntryWidget implements ITickingWidget {
this.level.setText(String.valueOf(Math.max(minValue, currentValue + i))); this.level.setText(String.valueOf(Math.max(minValue, currentValue + i)));
} }
public void render(int mouseX, int mouseY, float partialTicks) { public void render(MatrixStack matrixStack, int mouseX, int mouseY, float partialTicks) {
this.level.render(mouseX, mouseY, partialTicks); this.level.render(matrixStack, mouseX, mouseY, partialTicks);
} }
public void setValue(long value, boolean skipNotify) { public void setValue(long value, boolean skipNotify) {
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.block.Blocks; import net.minecraft.block.Blocks;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -58,12 +60,12 @@ public class PatternTermScreen extends MEMonitorableScreen<PatternTermContainer>
super.init(); super.init();
this.tabCraftButton = new TabButton(this.guiLeft + 173, this.guiTop + this.ySize - 177, this.tabCraftButton = new TabButton(this.guiLeft + 173, this.guiTop + this.ySize - 177,
new ItemStack(Blocks.CRAFTING_TABLE), GuiText.CraftingPattern.getLocal(), this.itemRenderer, new ItemStack(Blocks.CRAFTING_TABLE), GuiText.CraftingPattern.text(), this.itemRenderer,
btn -> toggleCraftMode(CRAFTMODE_PROCESSING)); btn -> toggleCraftMode(CRAFTMODE_PROCESSING));
this.addButton(this.tabCraftButton); this.addButton(this.tabCraftButton);
this.tabProcessButton = new TabButton(this.guiLeft + 173, this.guiTop + this.ySize - 177, this.tabProcessButton = new TabButton(this.guiLeft + 173, this.guiTop + this.ySize - 177,
new ItemStack(Blocks.FURNACE), GuiText.ProcessingPattern.getLocal(), this.itemRenderer, new ItemStack(Blocks.FURNACE), GuiText.ProcessingPattern.text(), this.itemRenderer,
btn -> toggleCraftMode(CRAFTMODE_CRFTING)); btn -> toggleCraftMode(CRAFTMODE_CRFTING));
this.addButton(this.tabProcessButton); this.addButton(this.tabProcessButton);
@@ -104,7 +106,8 @@ public class PatternTermScreen extends MEMonitorableScreen<PatternTermContainer>
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY) {
if (this.container.isCraftingMode()) { if (this.container.isCraftingMode()) {
this.tabCraftButton.visible = true; this.tabCraftButton.visible = true;
this.tabProcessButton.visible = false; this.tabProcessButton.visible = false;
@@ -123,9 +126,9 @@ public class PatternTermScreen extends MEMonitorableScreen<PatternTermContainer>
this.substitutionsDisabledBtn.visible = false; this.substitutionsDisabledBtn.visible = false;
} }
super.drawFG(offsetX, offsetY, mouseX, mouseY); super.drawFG(matrixStack, offsetX, offsetY, mouseX, mouseY);
this.font.drawString(GuiText.PatternTerminal.getLocal(), 8, this.ySize - 96 + 2 - this.getReservedSpace(), this.font.drawString(matrixStack, GuiText.PatternTerminal.getLocal(), 8,
4210752); this.ySize - 96 + 2 - this.getReservedSpace(), 4210752);
} }
@Override @Override
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -58,16 +60,18 @@ public class PriorityScreen extends AEBaseScreen<PriorityContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(GuiText.Priority.getLocal(), 8, 6, 4210752); final int mouseY) {
this.font.drawString(matrixStack, GuiText.Priority.getLocal(), 8, 6, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture(getBackground()); this.bindTexture(getBackground());
blit(offsetX, offsetY, 0, 0, this.xSize, this.ySize); blit(matrixStack, offsetX, offsetY, 0, 0, this.xSize, this.ySize);
this.priority.render(mouseX, mouseY, partialTicks); this.priority.render(matrixStack, mouseX, mouseY, partialTicks);
} }
protected String getBackground() { protected String getBackground() {
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -34,13 +36,16 @@ public class QNBScreen extends AEBaseScreen<QNBContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.QuantumLinkChamber.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.QuantumLinkChamber.text()).getString(), 8, 6,
4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/chest.png"); this.bindTexture("guis/chest.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,12 +18,15 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.util.InputMappings; import net.minecraft.client.util.InputMappings;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.client.ActionKey; import appeng.client.ActionKey;
@@ -47,7 +50,8 @@ public class QuartzKnifeScreen extends AEBaseScreen<QuartzKnifeContainer> {
public void init() { public void init() {
super.init(); super.init();
this.name = new TextFieldWidget(this.font, this.guiLeft + 24, this.guiTop + 32, 79, this.font.FONT_HEIGHT, ""); this.name = new TextFieldWidget(this.font, this.guiLeft + 24, this.guiTop + 32, 79, this.font.FONT_HEIGHT,
StringTextComponent.EMPTY);
this.name.setEnableBackgroundDrawing(false); this.name.setEnableBackgroundDrawing(false);
this.name.setMaxStringLength(32); this.name.setMaxStringLength(32);
this.name.setTextColor(0xFFFFFF); this.name.setTextColor(0xFFFFFF);
@@ -56,16 +60,19 @@ public class QuartzKnifeScreen extends AEBaseScreen<QuartzKnifeContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.QuartzCuttingKnife.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.QuartzCuttingKnife.text()).getString(), 8, 6,
4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/quartzknife.png"); this.bindTexture("guis/quartzknife.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
this.name.render(mouseX, mouseY, partialTicks); this.name.render(matrixStack, mouseX, mouseY, partialTicks);
} }
@Override @Override
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -80,10 +82,11 @@ public class SecurityStationScreen extends MEMonitorableScreen<SecurityStationCo
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
super.drawFG(offsetX, offsetY, mouseX, mouseY); final int mouseY) {
this.font.drawString(GuiText.SecurityCardEditor.getLocal(), 8, this.ySize - 96 + 1 - this.getReservedSpace(), super.drawFG(matrixStack, offsetX, offsetY, mouseX, mouseY);
4210752); this.font.drawString(matrixStack, GuiText.SecurityCardEditor.getLocal(), 8,
this.ySize - 96 + 1 - this.getReservedSpace(), 4210752);
} }
@Override @Override
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -38,13 +40,15 @@ public class SkyChestScreen extends AEBaseScreen<SkyChestContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.SkyChest.getLocal()), 8, 8, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 2, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.SkyChest.text()).getString(), 8, 8, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 2, 4210752);
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
bindTexture(TEXTURE); bindTexture(TEXTURE);
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, 0); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, 0);
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -43,33 +45,37 @@ public class SpatialIOPortScreen extends AEBaseScreen<SpatialIOPortContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(GuiText.StoredPower.getLocal() + ": " final int mouseY) {
this.font.drawString(matrixStack, GuiText.StoredPower.getLocal() + ": "
+ Platform.formatPowerLong(this.container.getCurrentPower(), false), 13, 21, 4210752); + Platform.formatPowerLong(this.container.getCurrentPower(), false), 13, 21, 4210752);
this.font.drawString( this.font.drawString(matrixStack,
GuiText.MaxPower.getLocal() + ": " + Platform.formatPowerLong(this.container.getMaxPower(), false), 13, GuiText.MaxPower.getLocal() + ": " + Platform.formatPowerLong(this.container.getMaxPower(), false), 13,
31, 4210752); 31, 4210752);
this.font.drawString(GuiText.RequiredPower.getLocal() + ": " this.font.drawString(matrixStack, GuiText.RequiredPower.getLocal() + ": "
+ Platform.formatPowerLong(this.container.getRequiredPower(), false), 13, 73, 4210752); + Platform.formatPowerLong(this.container.getRequiredPower(), false), 13, 73, 4210752);
this.font.drawString( this.font.drawString(matrixStack,
GuiText.Efficiency.getLocal() + ": " + (((float) this.container.getEfficency()) / 100) + '%', 13, 83, GuiText.Efficiency.getLocal() + ": " + (((float) this.container.getEfficency()) / 100) + '%', 13, 83,
4210752); 4210752);
this.font.drawString(this.getGuiDisplayName(GuiText.SpatialIOPort.getLocal()), 8, 6, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.SpatialIOPort.text()).getString(), 8, 6,
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96, 4210752); 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96, 4210752);
if (this.container.xSize != 0 && this.container.ySize != 0 && this.container.zSize != 0) { if (this.container.xSize != 0 && this.container.ySize != 0 && this.container.zSize != 0) {
final String text = GuiText.SCSSize.getLocal() + ": " + this.container.xSize + "x" + this.container.ySize final String text = GuiText.SCSSize.getLocal() + ": " + this.container.xSize + "x" + this.container.ySize
+ "x" + this.container.zSize; + "x" + this.container.zSize;
this.font.drawString(text, 13, 93, 4210752); this.font.drawString(matrixStack, text, 13, 93, 4210752);
} else { } else {
this.font.drawString(GuiText.SCSSize.getLocal() + ": " + GuiText.SCSInvalid.getLocal(), 13, 93, 4210752); this.font.drawString(matrixStack, GuiText.SCSSize.getLocal() + ": " + GuiText.SCSInvalid.getLocal(), 13, 93,
4210752);
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/spatialio.png"); this.bindTexture("guis/spatialio.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
@@ -58,7 +60,7 @@ public class StorageBusScreen extends UpgradeableScreen<StorageBusContainer> {
this.fuzzyMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 88, Settings.FUZZY_MODE, this.fuzzyMode = new ServerSettingToggleButton<>(this.guiLeft - 18, this.guiTop + 88, Settings.FUZZY_MODE,
FuzzyMode.IGNORE_ALL); FuzzyMode.IGNORE_ALL);
this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.getLocal(), this.addButton(new TabButton(this.guiLeft + 154, this.guiTop, 2 + 4 * 16, GuiText.Priority.text(),
this.itemRenderer, btn -> openPriorityGui())); this.itemRenderer, btn -> openPriorityGui()));
this.addButton(this.storageFilter); this.addButton(this.storageFilter);
@@ -67,9 +69,10 @@ public class StorageBusScreen extends UpgradeableScreen<StorageBusContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.StorageBus.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.StorageBus.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
if (this.fuzzyMode != null) { if (this.fuzzyMode != null) {
this.fuzzyMode.set(this.cvb.getFuzzyMode()); this.fuzzyMode.set(this.cvb.getFuzzyMode());
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -82,9 +84,10 @@ public class UpgradeableScreen<T extends UpgradeableContainer> extends AEBaseScr
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(this.getName().getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(this.getName().text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
if (this.redstoneMode != null) { if (this.redstoneMode != null) {
this.redstoneMode.set(this.cvb.getRedStoneMode()); this.redstoneMode.set(this.cvb.getRedStoneMode());
@@ -104,7 +107,8 @@ public class UpgradeableScreen<T extends UpgradeableContainer> extends AEBaseScr
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.handleButtonVisibility(); this.handleButtonVisibility();
this.bindTexture(this.getBackground()); this.bindTexture(this.getBackground());
@@ -18,10 +18,12 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.client.gui.AEBaseScreen; import appeng.client.gui.AEBaseScreen;
@@ -50,12 +52,14 @@ public class VibrationChamberScreen extends AEBaseScreen<VibrationChamberContain
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.VibrationChamber.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.VibrationChamber.text()).getString(), 8, 6,
4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
this.pb.setFullMsg(VibrationChamberTileEntity.POWER_PER_TICK * this.container.getCurrentProgress() this.pb.setFullMsg(new StringTextComponent(VibrationChamberTileEntity.POWER_PER_TICK
/ VibrationChamberTileEntity.DILATION_SCALING + " AE/t"); * this.container.getCurrentProgress() / VibrationChamberTileEntity.DILATION_SCALING + " AE/t"));
if (this.container.getRemainingBurnTime() > 0) { if (this.container.getRemainingBurnTime() > 0) {
final int i1 = this.container.getRemainingBurnTime() * 12 / 100; final int i1 = this.container.getRemainingBurnTime() * 12 / 100;
@@ -68,7 +72,8 @@ public class VibrationChamberScreen extends AEBaseScreen<VibrationChamberContain
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/vibchamber.png"); this.bindTexture("guis/vibchamber.png");
this.pb.x = 99 + this.guiLeft; this.pb.x = 99 + this.guiLeft;
this.pb.y = 36 + this.guiTop; this.pb.y = 36 + this.guiTop;
@@ -18,6 +18,8 @@
package appeng.client.gui.implementations; package appeng.client.gui.implementations;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.entity.player.PlayerInventory; import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
@@ -43,9 +45,10 @@ public class WirelessScreen extends AEBaseScreen<WirelessContainer> {
} }
@Override @Override
public void drawFG(final int offsetX, final int offsetY, final int mouseX, final int mouseY) { public void drawFG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
this.font.drawString(this.getGuiDisplayName(GuiText.Wireless.getLocal()), 8, 6, 4210752); final int mouseY) {
this.font.drawString(GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752); this.font.drawString(matrixStack, this.getGuiDisplayName(GuiText.Wireless.text()).getString(), 8, 6, 4210752);
this.font.drawString(matrixStack, GuiText.inventory.getLocal(), 8, this.ySize - 96 + 3, 4210752);
if (container.getRange() > 0) { if (container.getRange() > 0) {
final String firstMessage = GuiText.Range.getLocal() + ": " + (container.getRange() / 10.0) + " m"; final String firstMessage = GuiText.Range.getLocal() + ": " + (container.getRange() / 10.0) + " m";
@@ -55,13 +58,14 @@ public class WirelessScreen extends AEBaseScreen<WirelessContainer> {
final int strWidth = Math.max(this.font.getStringWidth(firstMessage), final int strWidth = Math.max(this.font.getStringWidth(firstMessage),
this.font.getStringWidth(secondMessage)); this.font.getStringWidth(secondMessage));
final int cOffset = (this.xSize / 2) - (strWidth / 2); final int cOffset = (this.xSize / 2) - (strWidth / 2);
this.font.drawString(firstMessage, cOffset, 20, 4210752); this.font.drawString(matrixStack, firstMessage, cOffset, 20, 4210752);
this.font.drawString(secondMessage, cOffset, 20 + 12, 4210752); this.font.drawString(matrixStack, secondMessage, cOffset, 20 + 12, 4210752);
} }
} }
@Override @Override
public void drawBG(final int offsetX, final int offsetY, final int mouseX, final int mouseY, float partialTicks) { public void drawBG(MatrixStack matrixStack, final int offsetX, final int offsetY, final int mouseX,
final int mouseY, float partialTicks) {
this.bindTexture("guis/wireless.png"); this.bindTexture("guis/wireless.png");
GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset());
} }
@@ -18,6 +18,7 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
@@ -26,6 +27,7 @@ import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.text.StringTextComponent;
/** /**
* A modified version of the Minecraft text field. You can initialize it over * A modified version of the Minecraft text field. You can initialize it over
@@ -52,10 +54,11 @@ public class AETextField extends TextFieldWidget {
*/ */
public AETextField(final FontRenderer fontRenderer, final int xPos, final int yPos, final int width, public AETextField(final FontRenderer fontRenderer, final int xPos, final int yPos, final int width,
final int height) { final int height) {
super(fontRenderer, xPos + PADDING, yPos + PADDING, width - 2 * PADDING - (int) fontRenderer.getCharWidth('_'), super(fontRenderer, xPos + PADDING, yPos + PADDING,
height - 2 * PADDING, ""); width - 2 * PADDING - (int) fontRenderer.getStringWidth("_"), height - 2 * PADDING,
StringTextComponent.EMPTY);
this._fontPad = (int) fontRenderer.getCharWidth('_'); this._fontPad = (int) fontRenderer.getStringWidth("_");
} }
public void selectAll() { public void selectAll() {
@@ -68,16 +71,18 @@ public class AETextField extends TextFieldWidget {
} }
@Override @Override
public void renderButton(int mouseX, int mouseY, float partial) { public void renderButton(MatrixStack matrixStack, int mouseX, int mouseY, float partial) {
if (this.getVisible()) { if (this.getVisible()) {
if (this.isFocused()) { if (this.isFocused()) {
fill(this.x - PADDING + 1, this.y - PADDING + 1, this.x + this.width + this._fontPad + PADDING - 1, fill(matrixStack, this.x - PADDING + 1, this.y - PADDING + 1,
this.y + this.height + PADDING - 1, 0xFF606060); this.x + this.width + this._fontPad + PADDING - 1, this.y + this.height + PADDING - 1,
0xFF606060);
} else { } else {
fill(this.x - PADDING + 1, this.y - PADDING + 1, this.x + this.width + this._fontPad + PADDING - 1, fill(matrixStack, this.x - PADDING + 1, this.y - PADDING + 1,
this.y + this.height + PADDING - 1, 0xFFA8A8A8); this.x + this.width + this._fontPad + PADDING - 1, this.y + this.height + PADDING - 1,
0xFFA8A8A8);
} }
super.renderButton(mouseX, mouseY, partial); super.renderButton(matrixStack, mouseX, mouseY, partial);
} }
} }
@@ -21,6 +21,9 @@ package appeng.client.gui.widgets;
import java.util.function.Consumer; import java.util.function.Consumer;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import appeng.api.config.ActionItems; import appeng.api.config.ActionItems;
import appeng.core.localization.ButtonToolTips; import appeng.core.localization.ButtonToolTips;
@@ -76,9 +79,9 @@ public class ActionButton extends IconButton implements ITooltip {
return iconIndex; return iconIndex;
} }
private String buildMessage(ButtonToolTips displayName, ButtonToolTips displayValue) { private ITextComponent buildMessage(ButtonToolTips displayName, ButtonToolTips displayValue) {
String name = displayName.getTranslationKey().getString(); String name = displayName.text().getString();
String value = displayValue.getTranslationKey().getString(); String value = displayValue.text().getString();
value = PATTERN_NEW_LINE.matcher(value).replaceAll("\n"); value = PATTERN_NEW_LINE.matcher(value).replaceAll("\n");
final StringBuilder sb = new StringBuilder(value); final StringBuilder sb = new StringBuilder(value);
@@ -91,7 +94,7 @@ public class ActionButton extends IconButton implements ITooltip {
sb.replace(i, i + 1, "\n"); sb.replace(i, i + 1, "\n");
} }
return name + '\n' + sb; return new StringTextComponent(name + '\n' + sb);
} }
} }
@@ -1,10 +1,13 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.AbstractGui;
import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.text.ITextComponent;
public abstract class CustomSlotWidget extends AbstractGui implements ITooltip { public abstract class CustomSlotWidget extends AbstractGui implements ITooltip {
private final int x; private final int x;
@@ -28,13 +31,14 @@ public abstract class CustomSlotWidget extends AbstractGui implements ITooltip {
public void slotClicked(final ItemStack clickStack, final int mouseButton) { public void slotClicked(final ItemStack clickStack, final int mouseButton) {
} }
public abstract void drawContent(final Minecraft mc, final int mouseX, final int mouseY, final float partialTicks); public abstract void drawContent(MatrixStack matrixStack, final Minecraft mc, final int mouseX, final int mouseY,
final float partialTicks);
public void drawBackground(int guileft, int guitop, int currentZIndex) { public void drawBackground(int guileft, int guitop, int currentZIndex) {
} }
@Override @Override
public String getMessage() { public ITextComponent getMessage() {
return null; return null;
} }
@@ -18,6 +18,8 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import net.minecraft.util.text.ITextComponent;
/** /**
* AEBaseGui controlled Tooltip Interface. * AEBaseGui controlled Tooltip Interface.
*/ */
@@ -28,7 +30,7 @@ public interface ITooltip {
* *
* @return tooltip message * @return tooltip message
*/ */
String getMessage(); ITextComponent getMessage();
/** /**
* x Location for the object that triggers the tooltip. * x Location for the object that triggers the tooltip.
@@ -18,12 +18,14 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
public abstract class IconButton extends Button implements ITooltip { public abstract class IconButton extends Button implements ITooltip {
@@ -33,7 +35,7 @@ public abstract class IconButton extends Button implements ITooltip {
private boolean halfSize = false; private boolean halfSize = false;
public IconButton(final int x, final int y, IPressable onPress) { public IconButton(final int x, final int y, IPressable onPress) {
super(x, y, 16, 16, "", onPress); super(x, y, 16, 16, StringTextComponent.EMPTY, onPress);
} }
public void setVisibility(final boolean vis) { public void setVisibility(final boolean vis) {
@@ -42,7 +44,7 @@ public abstract class IconButton extends Button implements ITooltip {
} }
@Override @Override
public void renderButton(final int mouseX, final int mouseY, float partial) { public void renderButton(MatrixStack matrixStack, final int mouseX, final int mouseY, float partial) {
Minecraft minecraft = Minecraft.getInstance(); Minecraft minecraft = Minecraft.getInstance();
@@ -22,6 +22,7 @@ import java.util.function.LongConsumer;
import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.client.gui.widget.TextFieldWidget;
import net.minecraft.util.text.StringTextComponent;
public class NumberBox extends TextFieldWidget { public class NumberBox extends TextFieldWidget {
@@ -35,7 +36,7 @@ public class NumberBox extends TextFieldWidget {
public NumberBox(final FontRenderer fontRenderer, final int x, final int y, final int width, final int height, public NumberBox(final FontRenderer fontRenderer, final int x, final int y, final int width, final int height,
final Class<?> type, LongConsumer changeListener) { final Class<?> type, LongConsumer changeListener) {
super(fontRenderer, x, y, width, height, "0"); super(fontRenderer, x, y, width, height, new StringTextComponent("0"));
this.setText("0"); this.setText("0");
setResponder(this::handleTextChanged); setResponder(this::handleTextChanged);
this.lastValue = 0; this.lastValue = 0;
@@ -18,9 +18,13 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.Widget; import net.minecraft.client.gui.widget.Widget;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
import appeng.container.interfaces.IProgressProvider; import appeng.container.interfaces.IProgressProvider;
@@ -33,8 +37,8 @@ public class ProgressBar extends Widget implements ITooltip {
private final int fill_u; private final int fill_u;
private final int fill_v; private final int fill_v;
private final Direction layout; private final Direction layout;
private final String titleName; private final ITextComponent titleName;
private String fullMsg; private ITextComponent fullMsg;
public ProgressBar(final IProgressProvider source, final String texture, final int posX, final int posY, public ProgressBar(final IProgressProvider source, final String texture, final int posX, final int posY,
final int u, final int y, final int width, final int height, final Direction dir) { final int u, final int y, final int width, final int height, final Direction dir) {
@@ -42,8 +46,9 @@ public class ProgressBar extends Widget implements ITooltip {
} }
public ProgressBar(final IProgressProvider source, final String texture, final int posX, final int posY, public ProgressBar(final IProgressProvider source, final String texture, final int posX, final int posY,
final int u, final int y, final int width, final int height, final Direction dir, final String title) { final int u, final int y, final int width, final int height, final Direction dir,
super(posX, posY, width, height, ""); final ITextComponent title) {
super(posX, posY, width, height, StringTextComponent.EMPTY);
this.source = source; this.source = source;
this.texture = new ResourceLocation("appliedenergistics2", "textures/" + texture); this.texture = new ResourceLocation("appliedenergistics2", "textures/" + texture);
this.fill_u = u; this.fill_u = u;
@@ -53,7 +58,7 @@ public class ProgressBar extends Widget implements ITooltip {
} }
@Override @Override
public void renderButton(final int par2, final int par3, final float partial) { public void renderButton(MatrixStack matrixStack, final int par2, final int par3, final float partial) {
if (this.visible) { if (this.visible) {
Minecraft.getInstance().getTextureManager().bindTexture(this.texture); Minecraft.getInstance().getTextureManager().bindTexture(this.texture);
final int max = this.source.getMaxProgress(); final int max = this.source.getMaxProgress();
@@ -71,18 +76,19 @@ public class ProgressBar extends Widget implements ITooltip {
} }
} }
public void setFullMsg(final String msg) { public void setFullMsg(final ITextComponent msg) {
this.fullMsg = msg; this.fullMsg = msg;
} }
@Override @Override
public String getMessage() { public ITextComponent getMessage() {
if (this.fullMsg != null) { if (this.fullMsg != null) {
return this.fullMsg; return this.fullMsg;
} }
ITextComponent result = this.titleName != null ? this.titleName : StringTextComponent.EMPTY;
return (this.titleName != null ? this.titleName : "") + '\n' + this.source.getCurrentProgress() + ' ' return result.deepCopy().appendString("\n").appendString(this.source.getCurrentProgress() + " ")
+ GuiText.Of.getLocal() + ' ' + this.source.getMaxProgress(); .append(GuiText.Of.text().deepCopy().appendString(" " + this.source.getMaxProgress()));
} }
@Override @Override
@@ -27,6 +27,7 @@ import java.util.regex.Pattern;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import appeng.api.config.AccessRestriction; import appeng.api.config.AccessRestriction;
import appeng.api.config.CondenserOutput; import appeng.api.config.CondenserOutput;
@@ -236,7 +237,7 @@ public class SettingToggleButton<T extends Enum<T>> extends IconButton {
private static void registerApp(final int iconIndex, final Settings setting, final Enum<?> val, private static void registerApp(final int iconIndex, final Settings setting, final Enum<?> val,
final ButtonToolTips title, final ITextComponent hint) { final ButtonToolTips title, final ITextComponent hint) {
final ButtonAppearance a = new ButtonAppearance(); final ButtonAppearance a = new ButtonAppearance();
a.displayName = title.getTranslationKey(); a.displayName = title.text();
a.displayValue = hint; a.displayValue = hint;
a.index = iconIndex; a.index = iconIndex;
appearances.put(new EnumPair(setting, val), a); appearances.put(new EnumPair(setting, val), a);
@@ -244,7 +245,7 @@ public class SettingToggleButton<T extends Enum<T>> extends IconButton {
private static void registerApp(final int iconIndex, final Settings setting, final Enum<?> val, private static void registerApp(final int iconIndex, final Settings setting, final Enum<?> val,
final ButtonToolTips title, final ButtonToolTips hint) { final ButtonToolTips title, final ButtonToolTips hint) {
registerApp(iconIndex, setting, val, title, hint.getTranslationKey()); registerApp(iconIndex, setting, val, title, hint.text());
} }
@Override @Override
@@ -278,7 +279,7 @@ public class SettingToggleButton<T extends Enum<T>> extends IconButton {
} }
@Override @Override
public String getMessage() { public ITextComponent getMessage() {
ITextComponent displayName = null; ITextComponent displayName = null;
ITextComponent displayValue = null; ITextComponent displayValue = null;
@@ -286,7 +287,7 @@ public class SettingToggleButton<T extends Enum<T>> extends IconButton {
final ButtonAppearance buttonAppearance = appearances final ButtonAppearance buttonAppearance = appearances
.get(new EnumPair(this.buttonSetting, this.currentValue)); .get(new EnumPair(this.buttonSetting, this.currentValue));
if (buttonAppearance == null) { if (buttonAppearance == null) {
return "No Such Message"; return new StringTextComponent("No Such Message");
} }
displayName = buttonAppearance.displayName; displayName = buttonAppearance.displayName;
@@ -312,9 +313,9 @@ public class SettingToggleButton<T extends Enum<T>> extends IconButton {
sb.replace(i, i + 1, "\n"); sb.replace(i, i + 1, "\n");
} }
return name + '\n' + sb; return new StringTextComponent(name + '\n' + sb);
} }
return ""; return StringTextComponent.EMPTY;
} }
public String getFillVar() { public String getFillVar() {
@@ -18,6 +18,7 @@
package appeng.client.gui.widgets; package appeng.client.gui.widgets;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
@@ -26,6 +27,7 @@ import net.minecraft.client.renderer.ItemRenderer;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
public class TabButton extends Button implements ITooltip { public class TabButton extends Button implements ITooltip {
public static final ResourceLocation TEXTURE_STATES = new ResourceLocation("appliedenergistics2", public static final ResourceLocation TEXTURE_STATES = new ResourceLocation("appliedenergistics2",
@@ -35,7 +37,7 @@ public class TabButton extends Button implements ITooltip {
private int myIcon = -1; private int myIcon = -1;
private ItemStack myItem; private ItemStack myItem;
public TabButton(final int x, final int y, final int ico, final String message, final ItemRenderer ir, public TabButton(final int x, final int y, final int ico, final ITextComponent message, final ItemRenderer ir,
IPressable onPress) { IPressable onPress) {
super(x, y, 22, 22, message, onPress); super(x, y, 22, 22, message, onPress);
@@ -52,7 +54,7 @@ public class TabButton extends Button implements ITooltip {
* @param message mouse over message * @param message mouse over message
* @param ir renderer * @param ir renderer
*/ */
public TabButton(final int x, final int y, final ItemStack ico, final String message, final ItemRenderer ir, public TabButton(final int x, final int y, final ItemStack ico, final ITextComponent message, final ItemRenderer ir,
IPressable onPress) { IPressable onPress) {
super(x, y, 22, 22, message, onPress); super(x, y, 22, 22, message, onPress);
this.myItem = ico; this.myItem = ico;
@@ -60,7 +62,7 @@ public class TabButton extends Button implements ITooltip {
} }
@Override @Override
public void renderButton(final int x, final int y, float partial) { public void renderButton(MatrixStack matrixStack, final int x, final int y, float partial) {
final Minecraft minecraft = Minecraft.getInstance(); final Minecraft minecraft = Minecraft.getInstance();
if (this.visible) { if (this.visible) {
@@ -73,13 +75,13 @@ public class TabButton extends Button implements ITooltip {
final int offsetX = this.hideEdge > 0 ? 1 : 0; final int offsetX = this.hideEdge > 0 ? 1 : 0;
blit(this.x, this.y, uv_x * 16, 0, 25, 22); blit(matrixStack, this.x, this.y, uv_x * 16, 0, 25, 22);
if (this.myIcon >= 0) { if (this.myIcon >= 0) {
final int uv_y = this.myIcon / 16; final int uv_y = this.myIcon / 16;
uv_x = this.myIcon - uv_y * 16; uv_x = this.myIcon - uv_y * 16;
blit(offsetX + this.x + 3, this.y + 3, uv_x * 16, uv_y * 16, 16, 16); blit(matrixStack, offsetX + this.x + 3, this.y + 3, uv_x * 16, uv_y * 16, 16, 16);
} }
RenderSystem.disableAlphaTest(); RenderSystem.disableAlphaTest();
@@ -20,12 +20,15 @@ package appeng.client.gui.widgets;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.widget.button.Button; import net.minecraft.client.gui.widget.button.Button;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraftforge.fml.client.gui.GuiUtils; import net.minecraftforge.fml.client.gui.GuiUtils;
public class ToggleButton extends Button implements ITooltip { public class ToggleButton extends Button implements ITooltip {
@@ -42,7 +45,7 @@ public class ToggleButton extends Button implements ITooltip {
public ToggleButton(final int x, final int y, final int on, final int off, final String displayName, public ToggleButton(final int x, final int y, final int on, final int off, final String displayName,
final String displayHint, IPressable onPress) { final String displayHint, IPressable onPress) {
super(x, y, 16, 16, "", onPress); super(x, y, 16, 16, StringTextComponent.EMPTY, onPress);
this.iconIdxOn = on; this.iconIdxOn = on;
this.iconIdxOff = off; this.iconIdxOff = off;
this.displayName = displayName; this.displayName = displayName;
@@ -54,7 +57,7 @@ public class ToggleButton extends Button implements ITooltip {
} }
@Override @Override
public void renderButton(final int mouseX, final int mouseY, final float partial) { public void renderButton(MatrixStack matrixStack, final int mouseX, final int mouseY, final float partial) {
if (this.visible) { if (this.visible) {
final int iconIndex = this.getIconIndex(); final int iconIndex = this.getIconIndex();
@@ -74,7 +77,7 @@ public class ToggleButton extends Button implements ITooltip {
} }
@Override @Override
public String getMessage() { public ITextComponent getMessage() {
if (this.displayName != null) { if (this.displayName != null) {
String name = I18n.format(this.displayName); String name = I18n.format(this.displayName);
String value = I18n.format(this.displayHint); String value = I18n.format(this.displayHint);
@@ -97,9 +100,9 @@ public class ToggleButton extends Button implements ITooltip {
sb.replace(i, i + 1, "\n"); sb.replace(i, i + 1, "\n");
} }
return name + '\n' + sb; return new StringTextComponent(name + '\n' + sb);
} }
return ""; return StringTextComponent.EMPTY;
} }
@Override @Override
@@ -36,7 +36,7 @@ public class ClientDCInternalInv implements Comparable<ClientDCInternalInv> {
public ClientDCInternalInv(final int size, final long id, final long sortBy, final ITextComponent name) { public ClientDCInternalInv(final int size, final long id, final long sortBy, final ITextComponent name) {
this.inventory = new AppEngInternalInventory(null, size); this.inventory = new AppEngInternalInventory(null, size);
this.searchName = name.getString().toLowerCase(); this.searchName = name.getString().toLowerCase();
this.formattedName = name.getFormattedText(); this.formattedName = name.getString(); // FIXME FABRIC no longer formatted!
this.id = id; this.id = id;
this.sortBy = sortBy; this.sortBy = sortBy;
} }
@@ -0,0 +1,31 @@
package appeng.client.render;
import net.minecraft.client.renderer.model.IBakedModel;
/**
* Helper to get a specific baked model class out of a chain of delegating baked
* models.
*/
public final class BakedModelUnwrapper {
private BakedModelUnwrapper() {
}
public static <T> T unwrap(IBakedModel model, Class<T> targetClass) {
if (targetClass.isInstance(model)) {
return targetClass.cast(model);
}
if (model instanceof DelegateBakedModel) {
model = ((DelegateBakedModel) model).getBaseModel();
if (targetClass.isInstance(model)) {
return targetClass.cast(model);
} else {
return unwrap(model, targetClass);
}
}
return null;
}
}
@@ -0,0 +1,42 @@
package appeng.client.render;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration;
import net.minecraftforge.client.model.geometry.IModelGeometry;
/**
* An unbaked model that has standard models as a dependency and produces a
* custom baked model as a result.
*/
public interface BasicUnbakedModel<T extends IModelGeometry<T>> extends IModelGeometry<T> {
default Collection<ResourceLocation> getModelDependencies() {
return Collections.emptyList();
}
default Stream<RenderMaterial> getAdditionalTextures() {
return Stream.empty();
}
@Override
default Collection<RenderMaterial> getTextures(IModelConfiguration owner,
Function<ResourceLocation, IUnbakedModel> unbakedModelGetter,
Set<Pair<String, String>> unresolvedTextureReferences) {
return Stream.concat(
getModelDependencies().stream().map(unbakedModelGetter)
.flatMap(ubm -> ubm.getTextures(unbakedModelGetter, unresolvedTextureReferences).stream()),
getAdditionalTextures()).collect(Collectors.toList());
}
}
@@ -24,7 +24,7 @@ import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import appeng.api.implementations.tiles.IColorableTile; import appeng.api.implementations.tiles.IColorableTile;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
@@ -37,7 +37,8 @@ public class ColorableTileBlockColor implements IBlockColor {
public static final ColorableTileBlockColor INSTANCE = new ColorableTileBlockColor(); public static final ColorableTileBlockColor INSTANCE = new ColorableTileBlockColor();
@Override @Override
public int getColor(BlockState state, @Nullable ILightReader worldIn, @Nullable BlockPos pos, int tintIndex) { public int getColor(BlockState state, @Nullable IBlockDisplayReader worldIn, @Nullable BlockPos pos,
int tintIndex) {
AEColor color = AEColor.TRANSPARENT; // Default to a neutral color AEColor color = AEColor.TRANSPARENT; // Default to a neutral color
if (worldIn != null && pos != null) { if (worldIn != null && pos != null) {
@@ -28,19 +28,19 @@ import javax.annotation.Nullable;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.TransformationMatrix;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.fluid.Fluids; import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World; import net.minecraft.util.math.vector.TransformationMatrix;
import net.minecraftforge.client.model.ItemLayerModel; import net.minecraftforge.client.model.ItemLayerModel;
import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
@@ -53,10 +53,10 @@ import appeng.fluids.items.FluidDummyItem;
* Override List is used to accomplish this. * Override List is used to accomplish this.
*/ */
public class DummyFluidDispatcherBakedModel extends DelegateBakedModel { public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
private final Function<Material, TextureAtlasSprite> bakedTextureGetter; private final Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter;
public DummyFluidDispatcherBakedModel(IBakedModel baseModel, public DummyFluidDispatcherBakedModel(IBakedModel baseModel,
Function<Material, TextureAtlasSprite> bakedTextureGetter) { Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter) {
super(baseModel); super(baseModel);
this.bakedTextureGetter = bakedTextureGetter; this.bakedTextureGetter = bakedTextureGetter;
} }
@@ -86,7 +86,7 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
public ItemOverrideList getOverrides() { public ItemOverrideList getOverrides() {
return new ItemOverrideList() { return new ItemOverrideList() {
@Override @Override
public IBakedModel getModelWithOverrides(IBakedModel originalModel, ItemStack stack, World world, public IBakedModel func_239290_a_(IBakedModel originalModel, ItemStack stack, ClientWorld world,
LivingEntity entity) { LivingEntity entity) {
if (!(stack.getItem() instanceof FluidDummyItem)) { if (!(stack.getItem() instanceof FluidDummyItem)) {
return originalModel; return originalModel;
@@ -101,7 +101,7 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel {
FluidAttributes attributes = fluidStack.getFluid().getAttributes(); FluidAttributes attributes = fluidStack.getFluid().getAttributes();
ResourceLocation stillTexture = attributes.getStillTexture(fluidStack); ResourceLocation stillTexture = attributes.getStillTexture(fluidStack);
Material stillMaterial = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, stillTexture); RenderMaterial stillMaterial = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, stillTexture);
TextureAtlasSprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply(stillMaterial); TextureAtlasSprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply(stillMaterial);
if (sprite == null) { if (sprite == null) {
return new DummyFluidBakedModel(ImmutableList.of()); return new DummyFluidBakedModel(ImmutableList.of());
@@ -29,8 +29,8 @@ import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel; import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
@@ -49,7 +49,7 @@ public class DummyFluidItemModel implements IModelGeometry<DummyFluidItemModel>
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
IBakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter); IBakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
@@ -57,7 +57,7 @@ public class DummyFluidItemModel implements IModelGeometry<DummyFluidItemModel>
} }
@Override @Override
public Collection<Material> getTextures(IModelConfiguration owner, public Collection<RenderMaterial> getTextures(IModelConfiguration owner,
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
return Collections.emptyList(); return Collections.emptyList();
} }
@@ -22,9 +22,9 @@ import java.util.Objects;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap; import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
@@ -50,7 +50,7 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel {
public ItemOverrideList getOverrides() { public ItemOverrideList getOverrides() {
return new ItemOverrideList() { return new ItemOverrideList() {
@Override @Override
public IBakedModel getModelWithOverrides(IBakedModel originalModel, ItemStack stack, World world, public IBakedModel func_239290_a_(IBakedModel originalModel, ItemStack stack, ClientWorld world,
LivingEntity entity) { LivingEntity entity) {
if (!(stack.getItem() instanceof FacadeItem)) { if (!(stack.getItem() instanceof FacadeItem)) {
return originalModel; return originalModel;
@@ -19,21 +19,17 @@
package appeng.client.render; package appeng.client.render;
import java.util.Collection; import java.util.Collection;
import java.util.Set; import java.util.Collections;
import java.util.function.Function; import java.util.function.Function;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
import net.minecraftforge.client.model.geometry.IModelGeometry;
import appeng.client.render.cablebus.FacadeBuilder; import appeng.client.render.cablebus.FacadeBuilder;
import appeng.core.AppEng; import appeng.core.AppEng;
@@ -42,14 +38,14 @@ import appeng.core.AppEng;
* The model class for facades. Since facades wrap existing models, they don't * The model class for facades. Since facades wrap existing models, they don't
* declare any dependencies here other than the cable anchor. * declare any dependencies here other than the cable anchor.
*/ */
public class FacadeItemModel implements IModelGeometry<FacadeItemModel> { public class FacadeItemModel implements BasicUnbakedModel<FacadeItemModel> {
// We use this to get the default item transforms and make our lives easier // We use this to get the default item transforms and make our lives easier
private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/facade_base"); private static final ResourceLocation MODEL_BASE = new ResourceLocation(AppEng.MOD_ID, "item/facade_base");
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
IBakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter); IBakedModel bakedBaseModel = bakery.getBakedModel(MODEL_BASE, modelTransform, spriteGetter);
FacadeBuilder facadeBuilder = new FacadeBuilder(); FacadeBuilder facadeBuilder = new FacadeBuilder();
@@ -58,9 +54,7 @@ public class FacadeItemModel implements IModelGeometry<FacadeItemModel> {
} }
@Override @Override
public Collection<Material> getTextures(IModelConfiguration owner, public Collection<ResourceLocation> getModelDependencies() {
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { return Collections.singleton(MODEL_BASE);
return modelGetter.apply(MODEL_BASE).getTextures(modelGetter, missingTextureErrors);
} }
} }
@@ -20,13 +20,13 @@ package appeng.client.render;
import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.Matrix4f;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.Vector4f;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.IStringSerializable; import net.minecraft.util.IStringSerializable;
import net.minecraft.util.math.Vec3i; import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.math.vector.Quaternion;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraft.util.math.vector.Vector3i;
import net.minecraft.util.math.vector.Vector4f;
/** /**
* TODO: Removed useless stuff. * TODO: Removed useless stuff.
@@ -90,7 +90,7 @@ public enum FacingToRotation implements IStringSerializable {
} }
public Direction rotate(Direction facing) { public Direction rotate(Direction facing) {
Vec3i dir = facing.getDirectionVec(); Vector3i dir = facing.getDirectionVec();
Vector4f vec = new Vector4f(dir.getX(), dir.getY(), dir.getZ(), 1); Vector4f vec = new Vector4f(dir.getX(), dir.getY(), dir.getZ(), 1);
vec.transform(mat); vec.transform(mat);
return Direction.getFacingFromVector(vec.getX(), vec.getY(), vec.getZ()); return Direction.getFacingFromVector(vec.getX(), vec.getY(), vec.getZ());
@@ -110,7 +110,7 @@ public enum FacingToRotation implements IStringSerializable {
} }
@Override @Override
public String getName() { public String getString() {
return name().toLowerCase(); return name().toLowerCase();
} }
} }
@@ -25,18 +25,13 @@ import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.world.ClientWorld; import net.minecraft.util.math.vector.Quaternion;
import net.minecraftforge.client.IRenderHandler;
import net.minecraftforge.client.SkyRenderHandler;
//TODO https://github.com/MinecraftForge/MinecraftForge/pull/6537 public class SpatialSkyRender {
public class SpatialSkyRender implements SkyRenderHandler {
private static final SpatialSkyRender INSTANCE = new SpatialSkyRender(); private static final SpatialSkyRender INSTANCE = new SpatialSkyRender();
@@ -48,7 +43,7 @@ public class SpatialSkyRender implements SkyRenderHandler {
this.dspList = GL11.glGenLists(1); this.dspList = GL11.glGenLists(1);
} }
public static IRenderHandler getInstance() { public static SpatialSkyRender getInstance() {
return INSTANCE; return INSTANCE;
} }
@@ -56,8 +51,7 @@ public class SpatialSkyRender implements SkyRenderHandler {
new Quaternion(-90.0F, 0.0F, 0.0F, true), new Quaternion(180.0F, 0.0F, 0.0F, true), new Quaternion(-90.0F, 0.0F, 0.0F, true), new Quaternion(180.0F, 0.0F, 0.0F, true),
new Quaternion(0.0F, 0.0F, 90.0F, true), new Quaternion(0.0F, 0.0F, -90.0F, true), }; new Quaternion(0.0F, 0.0F, 90.0F, true), new Quaternion(0.0F, 0.0F, -90.0F, true), };
@Override public void render(MatrixStack matrixStack) {
public void render(int ticks, float partialTicks, MatrixStack matrixStack, ClientWorld world, Minecraft mc) {
final long now = System.currentTimeMillis(); final long now = System.currentTimeMillis();
if (now - this.cycle > 2000) { if (now - this.cycle > 2000) {
this.cycle = now; this.cycle = now;
@@ -23,8 +23,8 @@ import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.TransformationMatrix; import net.minecraft.util.math.vector.TransformationMatrix;
import net.minecraft.client.renderer.Vector3f; import net.minecraft.util.math.vector.Vector3f;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.core.AEConfig; import appeng.core.AEConfig;
@@ -23,7 +23,7 @@ import javax.annotation.Nullable;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.color.IBlockColor; import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
@@ -39,7 +39,8 @@ public class StaticBlockColor implements IBlockColor {
} }
@Override @Override
public int getColor(BlockState state, @Nullable ILightReader worldIn, @Nullable BlockPos pos, int tintIndex) { public int getColor(BlockState state, @Nullable IBlockDisplayReader worldIn, @Nullable BlockPos pos,
int tintIndex) {
return this.color.getVariantByTintIndex(tintIndex); return this.color.getVariantByTintIndex(tintIndex);
} }
@@ -23,11 +23,11 @@ import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.ItemCameraTransforms; import net.minecraft.client.renderer.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.vector.Vector3f;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.util.IWideReadableNumberConverter; import appeng.util.IWideReadableNumberConverter;
@@ -26,7 +26,7 @@ import java.util.List;
import java.util.function.Function; import java.util.function.Function;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
@@ -49,7 +49,7 @@ class CableBuilder {
private final SmartCableTextures smartCableTextures; private final SmartCableTextures smartCableTextures;
CableBuilder(Function<Material, TextureAtlasSprite> bakedTextureGetter) { CableBuilder(Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter) {
this.coreTextures = new EnumMap<>(CableCoreType.class); this.coreTextures = new EnumMap<>(CableCoreType.class);
for (CableCoreType type : CableCoreType.values()) { for (CableCoreType type : CableCoreType.values()) {
@@ -77,7 +77,7 @@ class CableBuilder {
this.smartCableTextures = new SmartCableTextures(bakedTextureGetter); this.smartCableTextures = new SmartCableTextures(bakedTextureGetter);
} }
static Material getConnectionTexture(AECableType cableType, AEColor color) { static RenderMaterial getConnectionTexture(AECableType cableType, AEColor color) {
String textureFolder; String textureFolder;
switch (cableType) { switch (cableType) {
case GLASS: case GLASS:
@@ -99,7 +99,7 @@ class CableBuilder {
throw new IllegalStateException("Cable type " + cableType + " does not support connections."); throw new IllegalStateException("Cable type " + cableType + " does not support connections.");
} }
return new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, return new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, textureFolder + color.name().toLowerCase())); new ResourceLocation(AppEng.MOD_ID, textureFolder + color.name().toLowerCase()));
} }
@@ -701,8 +701,8 @@ class CableBuilder {
} }
// Get all textures needed for building the actual cable quads // Get all textures needed for building the actual cable quads
public static List<Material> getTextures() { public static List<RenderMaterial> getTextures() {
List<Material> locations = new ArrayList<>(); List<RenderMaterial> locations = new ArrayList<>();
for (CableCoreType coreType : CableCoreType.values()) { for (CableCoreType coreType : CableCoreType.values()) {
for (AEColor color : AEColor.values()) { for (AEColor color : AEColor.values()) {
@@ -3,7 +3,7 @@ package appeng.client.render.cablebus;
import net.minecraft.client.particle.IParticleRenderType; import net.minecraft.client.particle.IParticleRenderType;
import net.minecraft.client.particle.SpriteTexturedParticle; import net.minecraft.client.particle.SpriteTexturedParticle;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.world.World; import net.minecraft.client.world.ClientWorld;
import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.api.distmarker.OnlyIn;
@@ -15,7 +15,7 @@ public class CableBusBreakingParticle extends SpriteTexturedParticle {
private final float field_217571_C; private final float field_217571_C;
private final float field_217572_F; private final float field_217572_F;
public CableBusBreakingParticle(World world, double x, double y, double z, double speedX, double speedY, public CableBusBreakingParticle(ClientWorld world, double x, double y, double z, double speedX, double speedY,
double speedZ, TextureAtlasSprite sprite) { double speedZ, TextureAtlasSprite sprite) {
super(world, x, y, z, speedX, speedY, speedZ); super(world, x, y, z, speedX, speedY, speedZ);
this.setSprite(sprite); this.setSprite(sprite);
@@ -25,7 +25,7 @@ public class CableBusBreakingParticle extends SpriteTexturedParticle {
this.field_217572_F = this.rand.nextFloat() * 3.0F; this.field_217572_F = this.rand.nextFloat() * 3.0F;
} }
public CableBusBreakingParticle(World world, double x, double y, double z, TextureAtlasSprite sprite) { public CableBusBreakingParticle(ClientWorld world, double x, double y, double z, TextureAtlasSprite sprite) {
this(world, x, y, z, 0, 0, 0, sprite); this(world, x, y, z, 0, 0, 0, sprite);
} }
@@ -19,33 +19,30 @@
package appeng.client.render.cablebus; package appeng.client.render.cablebus;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
import net.minecraftforge.client.model.geometry.IModelGeometry;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.client.render.BasicUnbakedModel;
import appeng.core.AELog; import appeng.core.AELog;
import appeng.core.features.registries.PartModels; import appeng.core.features.registries.PartModels;
/** /**
* The built-in model for the cable bus block. * The built-in model for the cable bus block.
*/ */
public class CableBusModel implements IModelGeometry<CableBusModel> { public class CableBusModel implements BasicUnbakedModel<CableBusModel> {
private final PartModels partModels; private final PartModels partModels;
@@ -53,9 +50,20 @@ public class CableBusModel implements IModelGeometry<CableBusModel> {
this.partModels = partModels; this.partModels = partModels;
} }
@Override
public Collection<ResourceLocation> getModelDependencies() {
partModels.setInitialized(true);
return partModels.getModels();
}
@Override
public Stream<RenderMaterial> getAdditionalTextures() {
return CableBuilder.getTextures().stream();
}
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
Map<ResourceLocation, IBakedModel> partModels = this.loadPartModels(bakery, spriteGetter, modelTransform); Map<ResourceLocation, IBakedModel> partModels = this.loadPartModels(bakery, spriteGetter, modelTransform);
@@ -70,14 +78,8 @@ public class CableBusModel implements IModelGeometry<CableBusModel> {
return new CableBusBakedModel(cableBuilder, facadeBuilder, partModels, particleTexture); return new CableBusBakedModel(cableBuilder, facadeBuilder, partModels, particleTexture);
} }
@Override
public Collection<Material> getTextures(IModelConfiguration owner,
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) {
return Collections.unmodifiableList(CableBuilder.getTextures());
}
private Map<ResourceLocation, IBakedModel> loadPartModels(ModelBakery bakery, private Map<ResourceLocation, IBakedModel> loadPartModels(ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetterIn, IModelTransform transformIn) { Function<RenderMaterial, TextureAtlasSprite> spriteGetterIn, IModelTransform transformIn) {
ImmutableMap.Builder<ResourceLocation, IBakedModel> result = ImmutableMap.builder(); ImmutableMap.Builder<ResourceLocation, IBakedModel> result = ImmutableMap.builder();
for (ResourceLocation location : this.partModels.getModels()) { for (ResourceLocation location : this.partModels.getModels()) {
@@ -28,7 +28,7 @@ import java.util.Objects;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.IModelData;
import net.minecraftforge.client.model.data.ModelProperty; import net.minecraftforge.client.model.data.ModelProperty;
@@ -80,7 +80,7 @@ public class CableBusRenderState {
private EnumMap<Direction, FacadeRenderState> facades = new EnumMap<>(Direction.class); private EnumMap<Direction, FacadeRenderState> facades = new EnumMap<>(Direction.class);
// Used for Facades. // Used for Facades.
private WeakReference<ILightReader> world; private WeakReference<IBlockDisplayReader> world;
private BlockPos pos; private BlockPos pos;
// Contains the bounding boxes of all parts on the cable bus to allow facades to // Contains the bounding boxes of all parts on the cable bus to allow facades to
@@ -152,11 +152,11 @@ public class CableBusRenderState {
return this.facades; return this.facades;
} }
public ILightReader getWorld() { public IBlockDisplayReader getWorld() {
return this.world.get(); return this.world.get();
} }
public void setWorld(ILightReader world) { public void setWorld(IBlockDisplayReader world) {
this.world = new WeakReference<>(world); this.world = new WeakReference<>(world);
} }
@@ -23,7 +23,7 @@ import java.util.Map;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -72,8 +72,8 @@ public enum CableCoreType {
return cableMapping.get(cableType); return cableMapping.get(cableType);
} }
public Material getTexture(AEColor color) { public RenderMaterial getTexture(AEColor color) {
return new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, return new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, this.textureFolder + "/" + color.name().toLowerCase())); new ResourceLocation(AppEng.MOD_ID, this.textureFolder + "/" + color.name().toLowerCase()));
} }
@@ -25,12 +25,12 @@ import java.util.List;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import net.minecraft.client.renderer.Vector4f;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.client.renderer.vertex.VertexFormatElement; import net.minecraft.client.renderer.vertex.VertexFormatElement;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraftforge.client.model.pipeline.BakedQuadBuilder; import net.minecraftforge.client.model.pipeline.BakedQuadBuilder;
/** /**
@@ -21,11 +21,11 @@ package appeng.client.render.cablebus;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.fluid.IFluidState; import net.minecraft.fluid.FluidState;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import net.minecraft.world.level.ColorResolver; import net.minecraft.world.level.ColorResolver;
import net.minecraft.world.lighting.WorldLightManager; import net.minecraft.world.lighting.WorldLightManager;
@@ -35,14 +35,14 @@ import net.minecraft.world.lighting.WorldLightManager;
* *
* @author covers1624 * @author covers1624
*/ */
public class FacadeBlockAccess implements ILightReader { public class FacadeBlockAccess implements IBlockDisplayReader {
private final ILightReader world; private final IBlockDisplayReader world;
private final BlockPos pos; private final BlockPos pos;
private final Direction side; private final Direction side;
private final BlockState state; private final BlockState state;
public FacadeBlockAccess(ILightReader world, BlockPos pos, Direction side, BlockState state) { public FacadeBlockAccess(IBlockDisplayReader world, BlockPos pos, Direction side, BlockState state) {
this.world = world; this.world = world;
this.pos = pos; this.pos = pos;
this.side = side; this.side = side;
@@ -64,10 +64,16 @@ public class FacadeBlockAccess implements ILightReader {
} }
@Override @Override
public IFluidState getFluidState(BlockPos pos) { public FluidState getFluidState(BlockPos pos) {
return world.getFluidState(pos); return world.getFluidState(pos);
} }
// This is for diffuse lighting
@Override
public float func_230487_a_(Direction p_230487_1_, boolean p_230487_2_) {
return world.func_230487_a_(p_230487_1_, p_230487_2_);
}
@Override @Override
public WorldLightManager getLightManager() { public WorldLightManager getLightManager() {
return world.getLightManager(); return world.getLightManager();
@@ -44,7 +44,7 @@ import net.minecraft.util.Direction.Axis;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.ILightReader; import net.minecraft.world.IBlockDisplayReader;
import net.minecraftforge.client.ForgeHooksClient; import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.model.data.EmptyModelData; import net.minecraftforge.client.model.data.EmptyModelData;
import net.minecraftforge.client.model.data.IModelData; import net.minecraftforge.client.model.data.IModelData;
@@ -112,7 +112,7 @@ public class FacadeBuilder {
Map<Direction, FacadeRenderState> facadeStates = renderState.getFacades(); Map<Direction, FacadeRenderState> facadeStates = renderState.getFacades();
List<AxisAlignedBB> partBoxes = renderState.getBoundingBoxes(); List<AxisAlignedBB> partBoxes = renderState.getBoundingBoxes();
Set<Direction> sidesWithParts = renderState.getAttachments().keySet(); Set<Direction> sidesWithParts = renderState.getAttachments().keySet();
ILightReader parentWorld = renderState.getWorld(); IBlockDisplayReader parentWorld = renderState.getWorld();
BlockPos pos = renderState.getPos(); BlockPos pos = renderState.getPos();
BlockColors blockColors = Minecraft.getInstance().getBlockColors(); BlockColors blockColors = Minecraft.getInstance().getBlockColors();
boolean thinFacades = isUseThinFacades(partBoxes); boolean thinFacades = isUseThinFacades(partBoxes);
@@ -189,7 +189,7 @@ public class FacadeBuilder {
AEAxisAlignedBB cutOutBox = getCutOutBox(facadeBox, partBoxes); AEAxisAlignedBB cutOutBox = getCutOutBox(facadeBox, partBoxes);
List<AxisAlignedBB> holeStrips = getBoxes(facadeBox, cutOutBox, side.getAxis()); List<AxisAlignedBB> holeStrips = getBoxes(facadeBox, cutOutBox, side.getAxis());
ILightReader facadeAccess = new FacadeBlockAccess(parentWorld, pos, side, blockState); IBlockDisplayReader facadeAccess = new FacadeBlockAccess(parentWorld, pos, side, blockState);
BlockRendererDispatcher dispatcher = Minecraft.getInstance().getBlockRendererDispatcher(); BlockRendererDispatcher dispatcher = Minecraft.getInstance().getBlockRendererDispatcher();
IBakedModel model = dispatcher.getModelForState(blockState); IBakedModel model = dispatcher.getModelForState(blockState);
@@ -1,33 +1,28 @@
package appeng.client.render.cablebus; package appeng.client.render.cablebus;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Stream;
import com.mojang.datafixers.util.Pair;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.IModelTransform; import net.minecraft.client.renderer.model.IModelTransform;
import net.minecraft.client.renderer.model.IUnbakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList; import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.model.Material;
import net.minecraft.client.renderer.model.ModelBakery; import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModelConfiguration; import net.minecraftforge.client.model.IModelConfiguration;
import net.minecraftforge.client.model.geometry.IModelGeometry;
import appeng.client.render.BasicUnbakedModel;
import appeng.core.AppEng; import appeng.core.AppEng;
public class P2PTunnelFrequencyModel implements IModelGeometry<P2PTunnelFrequencyModel> { public class P2PTunnelFrequencyModel implements BasicUnbakedModel<P2PTunnelFrequencyModel> {
private static final Material TEXTURE = new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, private static final RenderMaterial TEXTURE = new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE,
new ResourceLocation(AppEng.MOD_ID, "part/p2p_tunnel_frequency")); new ResourceLocation(AppEng.MOD_ID, "part/p2p_tunnel_frequency"));
@Override @Override
public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery, public IBakedModel bake(IModelConfiguration owner, ModelBakery bakery,
Function<Material, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform, Function<RenderMaterial, TextureAtlasSprite> spriteGetter, IModelTransform modelTransform,
ItemOverrideList overrides, ResourceLocation modelLocation) { ItemOverrideList overrides, ResourceLocation modelLocation) {
try { try {
final TextureAtlasSprite texture = spriteGetter.apply(TEXTURE); final TextureAtlasSprite texture = spriteGetter.apply(TEXTURE);
@@ -38,9 +33,8 @@ public class P2PTunnelFrequencyModel implements IModelGeometry<P2PTunnelFrequenc
} }
@Override @Override
public Collection<Material> getTextures(IModelConfiguration owner, public Stream<RenderMaterial> getAdditionalTextures() {
Function<ResourceLocation, IUnbakedModel> modelGetter, Set<Pair<String, String>> missingTextureErrors) { return Stream.of(TEXTURE);
return Collections.singleton(TEXTURE);
} }
} }
@@ -21,11 +21,11 @@ package appeng.client.render.cablebus;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.minecraft.client.renderer.Matrix4f;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.Direction; import net.minecraft.util.Direction;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.math.vector.Vector3f;
import appeng.client.render.FacingToRotation; import appeng.client.render.FacingToRotation;
import appeng.thirdparty.codechicken.lib.model.CachedFormat; import appeng.thirdparty.codechicken.lib.model.CachedFormat;
@@ -21,7 +21,7 @@ package appeng.client.render.cablebus;
import java.util.Arrays; import java.util.Arrays;
import java.util.function.Function; import java.util.function.Function;
import net.minecraft.client.renderer.model.Material; import net.minecraft.client.renderer.model.RenderMaterial;
import net.minecraft.client.renderer.texture.AtlasTexture; import net.minecraft.client.renderer.texture.AtlasTexture;
import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
@@ -33,7 +33,7 @@ import appeng.core.AppEng;
*/ */
public class SmartCableTextures { public class SmartCableTextures {
public static final Material[] SMART_CHANNELS_TEXTURES = Arrays public static final RenderMaterial[] SMART_CHANNELS_TEXTURES = Arrays
.stream(new ResourceLocation[] { new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_00"), // .stream(new ResourceLocation[] { new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_00"), //
new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_01"), // new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_01"), //
new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_02"), // new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_02"), //
@@ -44,14 +44,14 @@ public class SmartCableTextures {
new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_12"), // new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_12"), //
new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_13"), // new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_13"), //
new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_14")// new ResourceLocation(AppEng.MOD_ID, "part/cable/smart/channels_14")//
}).map(e -> new Material(AtlasTexture.LOCATION_BLOCKS_TEXTURE, e)).toArray(Material[]::new); }).map(e -> new RenderMaterial(AtlasTexture.LOCATION_BLOCKS_TEXTURE, e)).toArray(RenderMaterial[]::new);
// Textures used to display channels on smart cables. There's two sets of 5 // Textures used to display channels on smart cables. There's two sets of 5
// textures each, and // textures each, and
// one of each set are composed together to get even/odd colored channels // one of each set are composed together to get even/odd colored channels
private final TextureAtlasSprite[] textures; private final TextureAtlasSprite[] textures;
public SmartCableTextures(Function<Material, TextureAtlasSprite> bakedTextureGetter) { public SmartCableTextures(Function<RenderMaterial, TextureAtlasSprite> bakedTextureGetter) {
this.textures = Arrays.stream(SMART_CHANNELS_TEXTURES)// this.textures = Arrays.stream(SMART_CHANNELS_TEXTURES)//
.map(bakedTextureGetter)// .map(bakedTextureGetter)//
.toArray(TextureAtlasSprite[]::new); .toArray(TextureAtlasSprite[]::new);

Some files were not shown because too many files have changed in this diff Show More