develop-tetris #2
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "develop-tetris"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -90,3 +90,3 @@
mustRunAfter shadowJar
commandLine 'scp', 'build/libs/Minigames-1.0-SNAPSHOT.jar', 'root@10.20.6.5:/root/minigames'
commandLine 'scp', 'build/libs/Minigames-1.0-SNAPSHOT.jar', '/home/lars/Documents/Minecraft Server/minigames'
revert
@ -28,3 +28,3 @@
protected CommandCondition isPrivileged() {
return (sender, commandString) -> sender.hasPermission("admin");
//TODO
raus
@ -0,0 +23,4 @@
import java.util.Random;
class Tetris extends StatelessGame {
private final Map<Player, TetrisGame> tetrisGames = new HashMap<>();
potentieller memory leak, WeakHashMap als implementierung verwenden
@ -0,0 +53,4 @@
.forEach(Entity::remove);
if(this.hasCombat) {
this.tetrisGames.forEach((player, tetrisGame) -> tetrisGame.updateOtherTetrisGames(this.tetrisGames.values().stream().toList()));
this.tetrisGames.values().stream().toList()
zu
List.of(....values())
@ -101,3 +101,3 @@
}
private void countdownUnload() {
protected void countdownUnload() {
wieder private machen
@ -0,0 +75,4 @@
}
@Override
protected void onPlayerMove(@NotNull PlayerMoveEvent event) {
wird das event nirgends gecancelt? Im fehlerfall wird returnt und der Spieler kann frei rumlaufen?
@ -0,0 +86,4 @@
if(tetrisGame.lost) return;
if(player.getGameMode() == GameMode.SPECTATOR) return;
event.setNewPosition(tetrisGame.getPlayerSpawnPosition().withView(currentPosition));
ah
das sollte aber immer ausgeführt werden, oder falls nicht möglich im fehlerfall das event canceln
@ -0,0 +103,4 @@
double forwardAmount = movementVector.dot(forward);
double leftAmount = movementVector.dot(left);
if (forwardAmount > 0.018) {
konstanten für die magic numbers
@ -0,0 +130,4 @@
Player player = event.getPlayer();
TetrisGame tetrisGame = this.tetrisGames.get(player);
if(tetrisGame == null) return;
if(tetrisGame.lost && player.getGameMode() != GameMode.SPECTATOR) {
kann der check auf lost nicht effizienter erfolgen? Warum muss das jeden tick geprüft werden? Kann der Spieler nicht auf "verloren" gesetzt werden, sobald lost auf true gesetzt wird?
Gibts keine einfache möglichkeit ohne jeden tick checken zu müssen?
nein
@ -0,0 +142,4 @@
getScore().insertResult(player, tetrisGame.getScore());
boolean allGamesLost = this.tetrisGames.values().stream()
.filter(tetrisGame1 -> !tetrisGame1.lost)
lambda "tetrisGame1" zu "t" umebennen oder so
@ -0,0 +148,4 @@
if(!setTimeLimit && !allGamesLost) {
this.setTimeLimit(90);
setTimeLimit = true;
new ChatMessage(Icon.SCIENCE).appendStatic("Noch 90 Sekunden!").send(getPlayers());
auf karkeinen fall hier xD
zieh das da hin wo auch die anderen Meldungen geworfen werden bezüglich der verbleibenden Sekundenzahl
@ -0,0 +157,4 @@
p.getInventory().setItemStack(0, ItemStack.builder(Material.BIRCH_BUTTON).customName(Component.text("Controller")).build());
p.setSprinting(false);
if(this.tetrisGames.get(p) == null) {
vereinfachen mit higher level functions
this.terisGames.computeIfAbsent(() -> ...)
@ -0,0 +168,4 @@
this.randomSeed
));
this.tetrisGames.get(p).generate();
this.tetrisGames.forEach((player, tetrisGame) -> tetrisGame.updateOtherTetrisGames(this.tetrisGames.values().stream().toList()));
List.of
@ -0,0 +30,4 @@
private final Pos nextPosition;
private final Pos holdPosition;
private final Pos tetrominoSpawnPosition;
public Sidebar sidebar = new Sidebar(Component.text("Info:"));
die sidebar will noch verschönert werden
Waruuuum??? Ich find die so super.
@ -0,0 +68,4 @@
}
public void pressedButton(Button button) {
if(this.lastPresses.getOrDefault(button, 0L) >= System.currentTimeMillis()-100) return;
konstante
@ -0,0 +71,4 @@
if(this.lastPresses.getOrDefault(button, 0L) >= System.currentTimeMillis()-100) return;
this.lastPresses.put(button, System.currentTimeMillis());
if(button == Button.W) this.lastPresses.put(button, System.currentTimeMillis()+70);
konstante
@ -0,0 +96,4 @@
if(this.lost) return TaskSchedule.stop();
int standardTickDelay = 40;
if(this.isFast) standardTickDelay = 20;
if(this.paused) return TaskSchedule.tick(Math.round((float) standardTickDelay /this.level));
variable für das TaskSchedule math round ....
@ -0,0 +152,4 @@
private boolean rotate(boolean clockwise) {
if(this.lost || this.paused) return false;
macht es nicht sinn den lost und paused check in den caller zu packen? dann kann das aus allen methoden raus.
Zudem kann dann ggf der einzelne Aufruf auch direkt beim caller gemacht werden, wodurch alle einzeiler methoden wegfallen würden. Vorrausgesetzt das ist dann noch gut lesbar
@ -0,0 +216,4 @@
if(!this.currentTetromino.moveDown()) loose();
double xChange;
switch (this.holdTetromino.shape) {
den switch gabs doch schonmal?
@ -0,0 +241,4 @@
this.nextTetrominoes.forEach(tetromino -> {
double xChange;
switch (tetromino.shape) {
case O, I -> xChange = 0;
.
@ -0,0 +252,4 @@
private void buildSidebar() {
this.sidebar.createLine(new Sidebar.ScoreboardLine(
"0",
Component.text("Score: "),
design, farben
@ -0,0 +14,4 @@
import java.util.UUID;
public class Tetromino {
public final Shape shape;
private mit getter?
ansonsten geht
@ -0,0 +90,4 @@
getBlockPositions().forEach(pos -> {
Entity ghostBlock = new Entity(ghostEntityType);
((FallingBlockMeta) ghostBlock.getEntityMeta()).setBlock(this.getGhostBlock());
// ((BlockDisplayMeta) ghostBlock.getEntityMeta()).setBlockState(this.getGhostBlock());
code kommentare raus
@ -0,0 +138,4 @@
this.instance.getEntities().stream()
.filter(entity -> {
String tagValue = entity.getTag(uuidTag);
if(tagValue != null) return entity.getTag(uuidTag).equals(this.uuid.toString());
umdrehen zu early return
@ -9,2 +9,4 @@
public class FirstWinsScore extends Score {
@Override
public void insertResultImplementation(Set<Player> p, int points) {
wenn der override leer ist, kann er dann nicht weggelassen werden?
@ -14,2 +19,4 @@
}
@Override
public void insertResult(Player p, int points) {
hier auch
@ -9,2 +9,4 @@
public class LastWinsScore extends Score {
@Override
public void insertResultImplementation(Set<Player> p, int points) {
.
@ -14,0 +18,4 @@
getScores().addFirst(p);
}
@Override
.
@ -11,2 +11,4 @@
}
@Override
public void insertResultImplementation(Set<Player> p, int points) {
.
@ -16,2 +21,4 @@
}
@Override
public void insertResult(Player p, int points) {
.
@ -46,2 +46,4 @@
}
}
public abstract void insertResultImplementation(Set<Player> p, int points);
weiß ich nicht
jetzt haben alle scores die methode um mit punkten hinzuzufügen...
.
Pull request closed